Как избежать svn:mergeinfos в подпапках?

Мы стараемся сохранить свойство 'svn:mergeinfo' только в корневой папке. Тем не менее, мы продолжаем видеть, как он заползает в подпапки. Мы смогли определить некоторые возможные причины:

  1. Перемещение папки в репо-браузере
  2. Перемещение и / или переименование пакетов в IntelliJ
  3. Использование старых клиентов SVN

Может ли кто-нибудь предоставить список вещей, которые мы не должны делать, чтобы избежать случайного создания этих свойств?

Инструменты, которые мы используем: IntelliJ 8 (скоро 9), Ankh, TortoiseSVN и SlikSvn.

4 ответа

Решение

Мы написали хук / триггер SVN, который просто отклоняет коммиты в свойствах svn: non-trunk. Мы никогда не оглядывались назад.

К сожалению, старые клиенты SVN просто делают это, и любые инструменты, основанные на этих старых версиях SVN, также не работают. Единственный способ решить эту проблему - удалить созданные записи svn: mergeinfo до их фиксации. Так как большинство людей не знают о том, что они созданы, то единственный реальный способ обеспечить это - ловушка перед фиксацией, или просто сделать:

svn propdel --recursive svn:mergeinfo $ROOT/*

убирать их время от времени. Будьте осторожны при этом, так как это уничтожит любую запись частичных слияний, которую вы сделали, поэтому вы должны делать это только в том случае, если вы действительно не делаете частичных слияний. Спрашивающий нет, и мы не в нашей среде.

Проблема исправлена ​​в новых клиентах SVN, поэтому проблема должна постепенно исчезнуть, но это может занять некоторое время, прежде чем все инструменты в вашем рабочем процессе будут заменены.

На основании другого ответа на этот вопрос, быстрое объяснение того, что вызывает проблему. Когда вы делаете рабочую копию, перемещаете или удаляете svn-клиенты старше 1.5.5, создается поддельная запись svn: mergeinfo. Это решено в SVN 1.5.5.

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

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

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

Другие вопросы по тегам