извините, что потратил немного места на повторение ранее данного ответа - но это то, с чем я всегда сталкиваюсь.
Допустим, я обновил локальные файлы до последней ревизии, которой является 854. Затем я хотел бы получить более старую ревизию - версию файла из нескольких ревизий ранее, скажем, ревизии 851.
Скопировать будет работать:
svn copy -r 851 svn+ssh://<repository URL>/l3toks.dtx ./l3toks.dtx
... однако, я не могу быть обеспокоен поиском URL репо :)
Обновление вроде бы может сработать:
svn up -r 851 ./l3toks.dtx
... однако, он также помечает локальную копию как «только что извлеченную» или, скорее, «такую же, как онлайн-ревизия» (т. е. в Tortoise / RabbitVCS вы получаете зеленую галочку «ОК»), что означает, что вы не можете сделать это 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
для быстрой проверки, вернули ли мы правильную ревизию локально; а также файл будет помечен красным восклицательным знаком в Tortoise / RabbitVCS (то есть отличается от последней зафиксированной версии), и такsvn ci -m "rolled back to r 851"
может быть запущен на этот раз.
Также обратите внимание, что если вы, наконец, передумали после обратного слияния ( то есть вы все равно хотите продолжить работу над последней версией HEAD, здесь 854 - после того, как вы откатились до 851 локально, но еще не совершили откат ), вы не должны использовать svn up
, потому что он просто скажет, что он уже " На ревизии 854 "; использовать вместо svn revert --recursive .
или аналогичный ...
Ура!
Ссылка: Как откатить изменения с помощью Subversion - Джейкоб Райт - Flex, AIR, PHP и т. Д.
РЕДАКТИРОВАТЬ: ... и, очевидно, тот же эффект, что и svn merge -r HEAD:851 l3toks.dtx
, может быть достигнуто с:
svn export -r 851 l3toks.dtx
A l3toks.dtx
Export complete.