2013-07-26 2 views
0

Я использую ProjectLocker с TortoiseSVN и VisualSVN.Могу ли я вернуть историю изменений в SVN?

Прошлой ночью, пытаясь выяснить чужую проблему, я вернул пару файлов к последней дате, которая была в производстве. Это было примерно 3-4 пересмотра назад.

Когда старые файлы не помогли решить эту проблему, я попытался выполнить обновление, чтобы вернуться к самой последней версии для этих двух файлов.

Теперь я вижу (спасибо «Similar Questions»), что я должен был использовать Update to Revision вместо Revert.

Вопрос в том, можно ли как-то вернуть эти изменения?

ответ

1

Вы должны быть в состоянии вернуться к пересмотру до того, как вы вернетесь.

SVN напрямую не поддерживает откаты («Revert», как называет черепаха). Вместо этого он берет копию из старой версии и копирует ее поверх новой.

Но это все еще оставляет ревизию, от которой вы возвращались с места. Когда вы вернетесь на этот раз, вам может понадобиться использовать ревизию привязки (например, для версии 123 вы возвращаетесь на http://mysvndomain.com/repos/foo/[email protected].

+2

В Subversion «revert» * имеет * смысл, но не тот смысл, который используется здесь. Subversion «revert» отменяет незафиксированные изменения в рабочей копии. Описанное здесь лучше описано как «отмена или откат набора исправлений». – alroc

+1

TortoiseSVN злоупотребляет словом "revert". В диалоговом окне журнала также есть опции «вернуться к этой ревизии» и «вернуть изменения, внесенные в эту ревизию». Первый на самом деле означает «поставить свою рабочую копию так, как это было после этой фиксации». Второй вариант означает «отменить изменения, сделанные этим фиксацией в рабочей копии». –

+0

Я изменил ответ, чтобы сделать это немного яснее. –

1

Восстановите свое возвращение, и файлы будут как 2 исправления назад.

1

Слово «возврат» имеет особое значение в Subversion, и это не то, что вы используете для . здесь ниспровержение revert означает отменить любые несохраненные изменения в вашей рабочей копии - состояние репозитория не затрагивается в этом случае

Обновить до ревизии также не применяется здесь, так как вы не можете совершить из этого состояния

.. То, что вы должны были сделать первоначально, это то, что известно как reverse merge. Вы применяете слияние одного или нескольких изменений, чтобы свернуть состояние репозитория обратно к тому, что он был в предыдущей редакции (ваша последняя редакция), вместо того, чтобы просто копировать файлы, а затем записывать их как новую ревизию. Вы все еще можете сделать это в своей текущей ситуации - свернуть слияние только что сделанного изменения и зафиксировать это. Это вернет вас к «последним». Ваша история изменений будет выглядеть немного странно, но не полностью нарушена.