извините, что занимал немного места только для повторения ранее данного ответа - но это то, с чем у меня всегда возникают проблемы.
Допустим, я обновил локальные файлы до последней ревизии, которая составляет 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
для быстрой проверки, вернули ли мы правильную ревизию локально; кроме того, файл будет помечен красным восклицательным знаком в 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.