Что такое обратное слияние (Revert Merge) в SVN, простое объяснение и пошаговые процессы от начала до конца

Что такое обратное слияние (Revert Merge ) в SVN, простое объяснение и пошаговые процессы от начала до конца было бы здорово.

может кто-нибудь дать мне процессы, номерок если можно. И хороший и простой пример тоже был бы замечательным.

2 ответов


Из Черепаховых Руководство Пользователя:

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

с моей точки зрения обратное слияние является "нормальным" фиксацией, которая представляет собой "анти"-фиксацию к одному или нескольким предыдущим фиксациям. Прежняя фиксация все еще будет существовать, но изменения будут отменены с помощью новых "анти"- "фиксация".


короткий ответ:

обратное слияние формально то же самое, что и слияние, но, конечно, в обратном порядке. Изменения от обратно-Объединенных ревизий отменяются в вашей рабочей копии.

пример

например, если вы хотите вернуться от HEAD к REV. 123, вы бы обратное слияние, как это, предполагая, что ваша рабочая копия находится в головном состоянии:

svn merge -r HEAD:123

это установит вашу рабочую копию в состоянии версии 123, но она будет формально основана на голове. Затем состояние рабочей копии будет таким же, как если бы вы вручную отредактировали файлы до версии 123. В хранилище пока ничего не изменилось.

обратите внимание, что это не то же самое как обновление в редакции 123. Если бы вы сделали это, хотя ваши файлы рабочей копии имели бы одинаковое содержимое в обоих случаях, ваше состояние рабочей копии было бы другим: SVN знал бы, что ваша рабочая копия основана на версии 123 вместо HEAD. Если затем вы попытались зафиксировать изменения, это скажет вам, что вы должны обновить до HEAD first, что отменит обновление до версии 123, предполагая, что вы ничего не изменили в то же время.

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

svn commit -m "We undid all changes since r123."

или, если вы чувствуете, что сделали ошибку, вы можете вернуться the обратное слияние, который что-то совершенно другое, так как оно только возвращает вашу рабочую копию в состояние репозитория, основано на (в нашем случае, HEAD):

svn revert --recursive .

но будьте осторожны с этим, он необратимо возвращает ваше обратное слияние : -). Точка относится к текущему каталогу и должна быть указана явно (как это не относится к большинству других команд SVN) в качестве меры безопасности, чтобы избежать случайного возврата чего-либо.