Подтвердить что ты не робот

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

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

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

4b9b3361

Ответ 1

Из Tortoise Руководство пользователя:

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

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

Ответ 2

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

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

Пример

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

svn merge -r HEAD:123

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

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

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

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

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

svn revert --recursive .

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