Могу ли я вернуть свою историю изменений в SVN?

Я использую ProjectLocker с TortoiseSVN и VisualSVN.

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

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

Теперь я вижу (благодаря «Похожим вопросам»), что мне следовало использовать «Обновить до версии» вместо «Отменить».

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


person CodeRedick    schedule 26.07.2013    source источник


Ответы (3)


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

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

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

person Philip Couling    schedule 26.07.2013
comment
В Subversion revert имеет значение, но не то значение, которое используется здесь. Возврат Subversion отменяет незафиксированные изменения в рабочей копии. То, что здесь описано, лучше описать как отмену или откат набора ревизий. - person alroc; 26.07.2013
comment
TortoiseSVN злоупотребляет словом «возврат». Его диалоговое окно журнала также имеет параметры для возврата к этой версии и для отмены изменений, сделанных этой версией. Первый на самом деле означает, что ваша рабочая копия должна быть такой, какой она была после этого коммита. Второй фактически означает отмену изменений, сделанных этим коммитом в рабочей копии. - person JB Nizet; 26.07.2013
comment
@JBNizet Это не злоупотребление, оно перегружено :) - person alroc; 27.07.2013

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

person JB Nizet    schedule 26.07.2013

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

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

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

person alroc    schedule 26.07.2013