Как удалить устаревшие свойства svn:mergeinfo при реинтеграции?

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

Я начал с выполнения svn cp из /trunk/app/module в /branches/pete/feature-branch, это был r393.

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

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

  1. Я проверил свежую копию функциональной ветки и ствола.
  2. Я объединил изменения ствола в ветку функций и зафиксировал их
  3. Затем я выполнил слияние --reintegrate ^/branches/pete/feature-branch на стволе, что привело к r434.

С точки зрения кода все выглядит нормально, но теперь мой ствол/приложение/модуль по-прежнему имеет свойство svn:mergeinfo.

$ svn pg svn:mergeinfo
/branches/pete/feature-branch:393-433

Насколько я понимаю, svn:mergeinfo должен быть пустым, а эти ревизии должны быть "опущены", или это нормально?


person Pete    schedule 06.03.2018    source источник
comment
Почему вы хотите удалить эту информацию? Это не должно повлиять на вас в любом случае   -  person royalTS    schedule 07.03.2018
comment
На каком уровне папки вы применили команду слияния SVN? Можете ли вы вставить полную команду (и путь), которую вы использовали для слияния?   -  person Peter Parker    schedule 07.03.2018
comment
@royalTS Я не был уверен, что это должно было быть там. Как я интерпретировал документ, который я читал, этого не должно быть, и я боялся, что это может повлиять на ветвление/слияние в будущем.   -  person Pete    schedule 07.03.2018
comment
@PeterParker из каталога /trunk/app/module, я позвонил svn merge --reintegrate ^/branches/pete/feature-branch, затем svn ci, а затем svn delete ^/branches/pete/feature-branch   -  person Pete    schedule 07.03.2018


Ответы (1)


Эта информация о подпапке показывает, что вы (случайно?) объединились в подпапку (не в транке, а в /trunk/app/module).

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

SVN-Team не рекомендует объединять только подкаталог (см. тему книги SVN здесь)

Избегайте слияний поддеревьев и слияния поддеревьев. Выполняйте слияния только в корне ваших ветвей, а не в подкаталогах или файлах (см. раздел «Слияние поддеревьев и информация о слиянии поддеревьев»).

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

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

person Peter Parker    schedule 07.03.2018
comment
Итак, если я правильно вас понял, мне нужно было сделать ветки /pete/feature-branch копией /trunk, а не /trunk/app/module? - person Pete; 07.03.2018
comment
да, точно .... в противном случае SVN необходимо отслеживать информацию о слиянии разных путей, применяя свойство информации слияния к этим путям. - person Peter Parker; 08.03.2018