У меня "проблема" с svn. Я не могу понять, почему иногда, когда я объединяю две ветки, в отчетах изменяется свойство mergeinfo для файлов без изменений текста.
Это нормально поведение?
Если нет, в чем может быть проблема?
SVN изменяет свойство svn: mergeinfo для файлов без изменений
Ответы (2)
Ну, вы действительно объединили эти две ветки. Правильно? Работает как положено.
Вы сделали слияние. Несмотря на то, что слияние не привело к каким-либо изменениям кода, и это не редкость для слияний, Subversion по-прежнему отмечает, что слияние было выполнено. По крайней мере, отметка о том, что вы выполнили слияние, даже если оно не привело к изменениям, по-прежнему является хорошей идеей. Представьте, что выпуск выходит, и кто-то говорит «Подождите, никто не объединил эту ветку обратно в ствол! Нам придется отложить выпуск, пока мы не сделаем это», потому что они не видели слить в запись svn:merge-info
.
Итак, да, то, что вы видели, может быть нормальным поведением.
Теперь, если ваш вопрос: «Почему мои изменения не были объединены», это уже другая проблема. Subversion обычно хорошо справляется со слияниями, но вы должны сделать несколько вещей:
- Выполняйте слияние только из корня вашего проекта, а не из отдельных веток и файлов. Бывают исключения, но в большинстве случаев вам следует объединять ветви проекта. В противном случае вы получите
svn:merge-info
повсюду. - Know when to use the
--reintegrate
flag. You have a branch "A" (which could include trunk in this example). You make a branch "B" from branch "A".- When you merge from "A" to "B", you don't use
--reintegrate
- Когда вы объединяете «B» в «A», не забудьте использовать
--reintegrate
. Это меняет способ обработки слияния Subversion.
- When you merge from "A" to "B", you don't use
- Subversion не очень хорошо справляется с очень сложными ситуациями слияния. Если вы сделаете ветку целым рядом ветвей и будете выполнять слияние между ними, Subversion испортится. Это одна из причин, по которой я говорю людям не заниматься бизнесом ветвь по каждой функции. Это затрудняет отслеживание различных слияний и может вызвать проблемы слияния в Subversion. Возможно, это особенность: поскольку Subversion не очень хорошо справляется с этими очень сложными ситуациями слияния, вам следует их избегать. Мне удалось отговорить многих менеджеров от очень сложных схем ветвления, направленных против шаблонов, просто заявив, что Subversion не справится с этим.
- Если вы вручную объединяете свои файлы (а многие разработчики предпочитают это делать: применять изменения в ветке обратно к магистрали вручную), используйте
svn merge --record-only
, чтобы Subversion знала, что вы выполнили слияние. Веселье возникает, когда разработчики выполняют некоторые слияния вручную, в то время как другие позволяют Subversion выполнить слияние.
Итак, если Subversion не слилась с необходимыми изменениями, убедитесь, что вы правильно используете --reintegrate
и что у вас нет других проблем, упомянутых выше.
svn:mergeinfo
. configuration.xml
изменяется, потому что кто-то сделал svn merge
только этот файл, и теперь он должен также отслеживать слияния. Таким образом, он svn:mergeinfo
тоже обновляется. Вот почему я сказал всегда выполнять слияние из корня проекта. В противном случае у вас останутся тысячи файлов - каждый со своим svn:mergeinfo
.
- person David W.; 11.09.2012
configuration.xml
, вот в чем проблема, также, если в нем нет никаких изменений, SVN устанавливает свойство mergeinfo
...
- person rascio; 12.09.2012
svn:mergeinfo
, это означает, что кто-то выполнил слияние этого файла, и только этот файл в далеком прошлом. svn:mergeinfo
устанавливается в корне слияния (вот почему я сформулировал свою первую точку зрения). Как только svn:mergeinfo
установлен для файла или каталога, он будет обновляться при каждом слиянии, даже если он не находится в корне дерева. См. Наследование Mergeinfo. Вы можете удалить свойство svn:mergeinfo
на configuration.xml
, чтобы прекратить отслеживание слияния. Тогда он не будет его обновлять.
- person David W.; 12.09.2012
configuration.xml
файл имеет свойство svn:mergeinfo
.
- person David W.; 12.09.2012
Свойство svn:mergeinfo
используется для отслеживания информации о слияниях, которые были выполнены в вашем репозитории.
Подробнее см. В SVNBook: " Mergeinfo и превью ».