В последних версиях git была введена конфигурация svn.pushmergeinfo
:
ключ конфигурации: svn.pushmergeinfo
Эта опция вызовет git -svn, чтобы попытаться автоматически заполнить свойство svn:mergeinfo в репозитории SVN, когда это возможно. В настоящее время это можно сделать только при выполнении слияний без быстрой перемотки вперед, когда все родители, кроме первого, уже были помещены в SVN.
Мы используем это для создания смешанной среды, в которой одни разработчики используют SVN, а другие — Git-SVN. Это прекрасно работает при ветвлении и слиянии SVN-ветвей в Git, а затем git svn dcommit
-обратно в SVN, и на самом деле правильно заполняет свойство mergeinfo почти во всех случаях. Однако в определенных ситуациях он делает это неправильно.
Это происходит в основном при слиянии ветки с мастером (транком) после слияния транка с этой веткой (по сути, эквивалент реинтеграции SVN).
Слияние из транка в ветвь добавляет строку mergeinfo для транка в этой ветке (по желанию), но реинтеграция-слияние из ветки обратно в магистраль копирует эту строку в транковую информацию о слиянии, фактически создавая самоссылающуюся строку в свойство mergeinfo транка, которое указывает на себя. Насколько я знаю, эта ссылка на себя никогда не должна происходить и не происходит при использовании только SVN.Итак, я считаю это ошибкой git-svn (о которой я сообщал здесь). Это, в свою очередь, создает проблемы в будущем, которые влияют на других пользователей SVN и искажают информацию о слиянии при будущих коммитах.
То, что я ищу, это обходной путь: как я могу легко сказать git не копировать строки mergeinfo для объединяемой ветки, или, альтернативно, как я могу указать SVN удалить эти ссылки на себя при фиксации ( или любое другое решение, которое не приводит к самоссылающейся строке mergeinfo, но сохраняет другие качества автоматического создания svn:mergeinfo из git).
(Для уточнения, я неищу людей, которые цитируют мне руководство по git или говорят мне, что «слияние с Git-SVN опасно и не поддерживается». Пожалуйста, отвечайте, только если вы можете помочь с проблемой или предложить альтернативный рабочий процесс. Указатели на соответствующий код git также будут полезны, поскольку они могут позволить мне создать патч для решения этой проблемы. Спасибо!)