Почему был бы, svn слияние ответвления без изменений заставляет нетронутые файлы изменять svn:mergeinfo свойство

Я создал ответвление, названное "feature3" от моей соединительной линии. Я делаю нулевые модификации в файлы на ответвлении "feature3". Нет также никаких модификаций в файлы на соединительной линии. Используя TortoiseCVS (TortoiseSVN 1.6.6, Сборка 17493 - 32 бита) против SVN (версия 1.6.3 (r38063)) repo, я инициирую "Слияние" с выбранной опцией "Reintegrate a branch".

Вывод этой команды показывает 80 объединенных файлов. Единственной вещью, измененной на этих файлах, является svn:mergeinfo свойство. Но почему только эти 80 файлов? У меня есть сотни других файлов в проекте, которому не изменили это свойство.

Вот пример изменения в svn:mergeinfo свойстве на единственном файле

Прежде:

/trax/branches/current/Libraries/Security/Specifications/NotSpecification.cs:10292-10783/trax/branches/feature1/Libraries/Security/Specifications/NotSpecification.cs:11324/trax/branches/feature2/Libraries/Security/Specifications/NotSpecification.cs:11326/trax/branches/int/Libraries/Security/Specifications/NotSpecification.cs:11232-11314/trax/branches/next/Libraries/Security/Specifications/NotSpecification.cs:10156-10782/trax/branches/trax-1.0.x/Libraries/Security/Specifications/NotSpecification.cs:10191-10291/trax/branches/upgrade/Libraries/Security/Specifications/NotSpecification.cs:9964-10604/trax/tags/trax-1.0.0/Libraries/Security/Specifications/NotSpecification.cs:10178-10190/trax/trunk/Libraries/Security/Specifications/NotSpecification.cs:6672-9851,11232-11325

После

/trax/branches/current/Libraries/Security/Specifications/NotSpecification.cs:10292-10783/trax/branches/feature1/Libraries/Security/Specifications/NotSpecification.cs:11324/trax/branches/feature2/Libraries/Security/Specifications/NotSpecification.cs:11326/trax/branches/feature3/Libraries/Security/Specifications/NotSpecification.cs:11328-11334/trax/branches/int/Libraries/Security/Specifications/NotSpecification.cs:11232-11314/trax/branches/next/Libraries/Security/Specifications/NotSpecification.cs:10156-10782/trax/branches/trax-1.0.x/Libraries/Security/Specifications/NotSpecification.cs:10191-10291/trax/branches/upgrade/Libraries/Security/Specifications/NotSpecification.cs:9964-10604/trax/tags/trax-1.0.0/Libraries/Security/Specifications/NotSpecification.cs:10178-10190/trax/trunk/Libraries/Security/Specifications/NotSpecification.cs:6672-9851,11324-11327

Изменения - то, что эта строка была добавлена

/trax/branches/feature3/Libraries/Security/Specifications/NotSpecification.cs:11328-11334

и последняя строка была изменена

/trax/trunk/Libraries/Security/Specifications/NotSpecification.cs:6672-9851,11324-11327

Я ожидал, что слияние приведет к нулевым объединяемым файлам. Почему SVN думал бы, что эти файлы должны быть объединены и их svn:mergeinfo измененное свойство? Существует ли способ исправить это?

Действительно ли это - случай, где я должен удалить svn:mergeinfo свойства на всех 80 файлах? Я ссылаюсь на здесь и здесь.

Этим тривиальным примером является часть большего расследования, в котором я создаю ответвление функции, вношу несколько изменений и затем пытаюсь объединиться, возвращается к соединительной линии. Однако слияние сообщает мне о нескольких древовидных конфликтах на этих тех же 80 файлах. Это все очень печально, что я не могу использовать ветвление SVN из-за всех этих древовидных конфликтов.

10
задан Community 23 May 2017 в 12:06
поделиться

2 ответа

Но почему только эти 80 файлов?

Эти файлы имеют свойство svn:mergeinfo, остальные нет. Когда отдельные файлы и подпапки проекта имеют это свойство, оно называется "subtree mergeinfo". Как только файл или папка имеет свойство "svn:mergeinfo", информация о слиянии будет обновляться при каждой операции слияния.

Если вы сливаете только в корне вашего проекта и используете последнюю версию клиента SVN, вы редко увидите информацию о слиянии в поддеревьях. Только корневая папка ветвей проекта (например, /trunk, /branches/foo) должна иметь свойство svn:mergeinfo.

редактирование : Если вы просто удалите информацию о слиянии поддеревьев, то диверсия не будет знать, что произошло слияние. В качестве согласия, subversion может попытаться слить эти ревизии снова, когда позволит ей автоматически выбирать ревизии, допустимые для слияния (например, когда вы делаете слияние svn без указания параметров -r или -c). В худшем случае такая попытка слияния может спровоцировать несколько поддельных конфликтов, что не является большой проблемой; просто разрешите их вручную.

update: Теперь Subversion 1.7 обновляет информацию о слиянии только тогда, когда это необходимо. Из примечаний к релизу:

Слияния больше не записывают информацию о слиянии (описывающую слияние) в поддеревьях (у которых есть своя явная информация о слиянии), если слияние не повлияло на поддеревье. Это должно значительно уменьшить количество поддельных изменений свойства svn:mergeinfo для пользователей, которые имеют большое количество поддеревьев с явным слиянием.

12
ответ дан 3 December 2019 в 21:59
поделиться

Откуда взялась эта информация о слиянии?

Вышеприведенное, вероятно, является наилучшей отправной точкой для объяснения того, почему вы иногда получаете такой тип поведения при слиянии. В блоге Submerged blog хранятся некоторые ЭССЕНЦИАЛЬНЫЕ знания по слиянию svn.

Хотя я не читал это следующее сообщение, это сообщение выглядит потенциально полезным и для вас:

Subversion 1.6.0 и Tree Conflicts

4
ответ дан 3 December 2019 в 21:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: