SVN изменяет свойство svn: mergeinfo на файлы без изменений

У меня есть "проблема" с svn. Я не понимаю, почему иногда, когда я объединяю две ветки, он сообщает об изменении свойства mergeinfo в файлах без изменений в тексте.
Это нормальное поведение?
Если нет, что может быть проблемой?

Ответ 1

Хорошо, вы объединили эти две ветки. Правильно? Работает как ожидалось.

То, что вы сделали, это слияние. Несмотря на то, что слияние не привело к каким-либо изменениям кода и что не редкость слияния, Subversion по-прежнему отмечает, что слияние было выполнено. Если ничего другого, отметив, что вы сделали слияние - хотя это и не привело к изменениям, все еще хорошая идея. Представьте, что вышел релиз, и кто-то сказал: "Подождите, никто не объединил эту ветку обратно в багажник! Мы должны будем отложить выпуск до тех пор, пока не получим это", потому что они не видели слияния в записи svn:merge-info.

Итак, да, что вы видели, может быть нормальное поведение.

Теперь, если ваш вопрос: "Почему мои изменения не слились", это другая проблема. Subversion обычно делает хорошую работу слияниями, но вы должны убедиться, что делаете несколько вещей:

  • Объединяться только с корнем вашего проекта, а не с отдельными ветвями и файлами. Есть исключения, но большую часть времени вы должны объединять ветки проекта. В противном случае вы получите svn:merge-info повсюду.
  • Знайте, когда использовать флаг --reintegrate. У вас есть ветвь "A" (которая может включать в себя соединительную линию в этом примере). Вы делаете ветку "B" из ветки "A".
    • Когда вы сливаетесь с "A" на "B" , вы не используете --reintegrate
    • Когда вы сливаетесь с "B" на "A", не забудьте использовать --reintegrate. Это изменяет способ обработки Subversion слиянием.
  • Subversion не очень хорошо справляется с очень сложными ситуациями слияния. Если вы делаете ветку целым множеством ветвей и сливаетесь между ними, Subversion будет испорчена. Это одна из причин, по которой я говорю людям, чтобы они не занимались отраслевым бизнесом. Это позволяет отслеживать различные слияния, которые трудно сделать, и может привести к тому, что Subversion будет иметь проблемы слияния. Возможно, это особенность: поскольку Subversion не справляется с этими очень сложными ситуациями слияния, вы должны их избегать. Я смог поговорить с многими менеджерами из очень сложных схем разветвления с помощью шаблонов, просто заявив, что Subversion не справляется с этим.
  • Если вы вручную объедините свои файлы (и многие разработчики предпочитают это делать: примените изменения в ветке обратно к соединительной линии вручную), используйте svn merge --record-only, чтобы Subversion знал, что вы сделали слияние. Hilarity возникает, когда разработчики делают некоторые слияния вручную, а другие позволяют Subversion выполнять слияние.

Итак, если Subversion не сливается с изменениями, они должны иметься, убедитесь, что вы правильно используете --reintegrate, и что у вас нет других проблем, упомянутых выше.

Ответ 2

Свойство

svn:mergeinfo используется для отслеживания информации о слияниях, которые были выполнены в вашем репозитории.

Подробнее см. SVNBook: "Mergeinfo и Previews" .