Слияет ли слияние проблемы в подрывной деятельности?
Здесь ситуация: на конкретной ветке некоторые изменения были объединены из магистрали, а также изменения в ветке были объединены обратно в магистраль.
Вопрос, который у меня есть, заключается в следующем: что, если что-либо, делает управление слиянием в Subversion, если я пытаюсь объединить обратно в туловище из ветки ревизию, которая сама по себе является просто слиянием от ствола к ветке?
Это вызовет проблемы? Если да, то какие? Или это должно быть прекрасным делом?
Или новое слияние просто обрабатывает эти изменения, как и любые другие, и просто пытается их применить?
Ответы
Ответ 1
Что сценарий даже отслеживание слияния новых версий SVN не может обрабатываться автоматически. Таким образом, вы указали изменения, которые хотите объединить обратно в соединительную линию вручную, и вы должны быть уверены, что исключите изменения, которые сливаются с магистралью в ветку.
Если вы попытаетесь изменить изменения, которые уже присутствуют в багажнике, они будут рассматриваться как обычные модификации. Это неизбежно приведет к конфликтам.
Ответ 2
Отчасти зависит от того, какую версию svn вы используете.
Pre 1.5, никакого отслеживания слияния вообще не было, поэтому вам придется объединить ревизии, в которые вы хотели вернуться. Большинство людей использовали для этого имя script "svnmerge". Вы можете использовать это, если хотите, и пометить исправления, которые вы уже сделали, как объединенные - после этого svnmerge предоставит вам некоторую помощь в выборе правильных версий и пропущении тех, которые уже объединены.
1.5 (и более поздние) дает некоторое отслеживание слияния, но оно еще не полно. В вашем конкретном случае (слияние в обоих направлениях) я не думаю, что svn tracking может справиться с этим. Вам, вероятно, потребуется объединить каждую ревизию, которую вы хотите взад и вперед вручную.
Лично, когда я работаю над проектами, использующими svn, я предпочитаю делать ветки несколько кратковременными и объединяться только один путь (ствол к ветке) до окончательного слияния с ветки на магистраль. Как только я это сделал, я либо объединить все в багажник, и закрыть ветку, либо объединить то, что хочу, и закрыть ветку. Вряд ли когда-либо я держу ветвь в живых, из-за возможных проблем слияния (легко сделать ошибку).
Ответ 3
Используя 1.5 или более позднюю версию subversion, вы должны указать параметр --reintegrate
для слияния svn, чтобы слияния были только копиями предыдущих объединений "наоборот".
Обратите внимание, что
1) Вы должны знать, когда вы должны использовать эту опцию
2) Это будет последнее слияние из этой ветки. После этого слияния svn будет считать ветвь мертвой, и дальнейшая работа потребует уничтожения и воссоздания ветки.
Это прямо из svn docs, хотя документы могут использовать более тонкое разбиение на подразделы.