Как избежать svn:mergeinfos в подпапках?
-
22-09-2019 - |
Вопрос
Мы стараемся сохранить свойство svn:mergeinfo только в папке корневой ветки.Однако мы продолжаем видеть, как он проникает в подпапки.Нам удалось выявить некоторые возможные причины:
- Перемещение папки в репо-браузере
- Перемещение и/или переименование пакетов в IntelliJ
- Использование старых клиентов SVN
Может ли кто-нибудь предоставить список того, чего нам не следует делать, чтобы избежать случайного создания этих свойств?
Мы используем инструменты IntelliJ 8 (скоро 9), Ankh, TortoiseSVN и SlikSvn.
Решение 2
Мы написали перехватчик/триггер SVN, который просто отклоняет коммиты в svn:properties на немагистральных объектах.Мы никогда не оглядывались назад.
Другие советы
К сожалению, старые клиенты svn просто делают это, и любые инструменты, основанные на этих старых версиях svn, также не работают.Единственный способ решить эту проблему — удалить созданные записи svn:mergeinfo до их фиксации.Поскольку большинство людей не знают, что они созданы, то единственный реальный способ обеспечить это — это перехват перед фиксацией или просто сделать:
svn propdel --recursive svn:mergeinfo $ROOT/*
время от времени их чистить.Будьте осторожны при этом, так как это уничтожит все записи о частичных слияниях, которые вы обнаружите. иметь готово, поэтому вам следует делать это только в том случае, если вы действительно не выполняете частичные слияния.Спрашивающий этого не делает, как и мы в нашем окружении.
Проблема устранена в новых клиентах svn, поэтому проблема должна постепенно исчезнуть, но это может занять некоторое время, прежде чем все инструменты в вашем рабочем процессе будут заменены.
На основе другого ответа на этот вопрос, краткое объяснение причины проблемы.Когда вы перемещаете или удаляете рабочую копию, клиенты svn старше 1.5.5 создают ложную запись svn:mergeinfo.Это решено в SVN 1.5.5.
Я не могу предоставить такой список.Я бы порекомендовал вам использовать SVN Hook, который будет регистрировать действие пользователя, которое приведет к изменению свойства папок и либо выпустить предупреждение, либо отклонить этот коммит, что угодно в соответствии с вашим рабочим процессом.
Выполнение слияний вложенных папок или отдельных файлов вызывает это, и это должен вызвать это, потому что он должен записывать информацию о слиянии.
Лучший способ — выполнить слияние на основном уровне, а при необходимости выборочно применить его, отменить изменения, которые вы не хотите объединять, а затем зафиксировать.