Git-SVN с svn.pushmergeinfo: как избежать ссылок на строки mergeinfo

В последних версиях 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 также будут полезны, поскольку они могут позволить мне создать патч для решения этой проблемы. Спасибо!)

11
задан Avish 14 March 2012 в 13:01
поделиться