Вибачте, що використовуєте простір лише на повторення раніше даної відповіді - але це те, що я завжди стикаюся з проблемою.
Скажімо, я оновив локальні файли до останньої версії, яка становить 854. Потім я хотів би отримати старішу версію - версію файлу з декількох версій раніше, скажімо, версію 851.
Копія спрацює:
svn copy -r 851 svn+ssh://<repository URL>/l3toks.dtx ./l3toks.dtx
.. однак, я не можу перейматися привітанням за URL-адресу репо :)
Оновлення, здавалося б, може спрацювати:
svn up -r 851 ./l3toks.dtx
... однак, він також позначає локальну копію як "щойно перевірену", а точніше - "таку ж, як і онлайн-ревізія" (тобто у Tortoise / RabbitVCS ви отримуєте зелену галочку OK) - це означає, що ви не можете цього зробити svn ci -m "rolled back to r 851"
: просто тому, що локальна subversion
виконуваний файл не помітить жодних локальних змін і не буде перешкоджати завантажувати що-небудь у онлайн-сховище.
Як вже було сказано, зворотне злиття працює - але в цьому випадку не слід покладатися на ярлик синтаксису; але конкретно зазначте:
svn merge -r HEAD:851 l3toks.dtx
--- Reverse-merging r854 through r852 into 'l3toks.dtx':
U l3toks.dtx
Я мушу визнати - я ніколи не зрозумів би речення " Зворотне об'єднання r854 через r852 у файл " означало " Щойно отримав r851 свого файлу і перезаписав все, що раніше було локально - і воно позначене як відмінне від останньої онлайн-версії, тому Ви можете перевірити це в Інтернеті як нову версію "відкату ", але я думаю (і сподіваюся :)), що це робить :)
Після цього можна скористатися svn diff
для швидкого переконання, чи вдалося повернути правильну версію локально; а також файл буде позначений червоним знаком оклику в черепаха / RabbitVCS (тобто, відрізняється від останньої введеної версії), і тому svn ci -m "rolled back to r 851"
може запускатися цього разу.
Також зауважте, що якщо ви, нарешті, передумаєте після зворотного злиття ( тобто ви все одно хочете продовжувати працювати над останньою редакцією HEAD, тут 854 - після того, як ви повернулися до 851 локально, але ще не здійснили відкат. ), ви не повинні використовувати svn up
, тому що це просто скаже, що це вже " У редакції 854 "; використовувати замість цього svn revert --recursive .
чи подібне ...
Ура!
Ref: Як повернути зміни за допомогою Subversion - Jacob Wright - Flex, AIR, PHP тощо.
EDIT: ... і, мабуть, точно такий же ефект, як і svn merge -r HEAD:851 l3toks.dtx
, можна досягти за допомогою:
svn export -r 851 l3toks.dtx
A l3toks.dtx
Export complete.