Моя команда использует SVN для контроля версий. Недавно я работал над веткой со случайным слиянием из ствола, и это был довольно раздражающий опыт (см. «Subversion Story # 1» Джоэла Спольски), поэтому я искал альтернативные способы управлять филиалами и слиянием. Учитывая, что централизованный репозиторий SVN не подлежит обсуждению, мне нужен набор инструментов, которые удовлетворяют следующим условиям.
Полная история изменений должна храниться в SVN как для магистрали, так и для ветвей.
Слияние в любом направлении (и, возможно, перекрещивание) должно быть относительно безболезненным.
История слияния должна храниться в SVN в максимально возможной степени.
Я посмотрел как git-svn
, так и bzr-svn
, и ни один из них, похоже, не подходит для работы - в принципе, учитывая историю изменений, которую они могут экспортировать из репозитория SVN, они, похоже, не могут работать лучше обработка заданий сливается, чем может SVN. Например, после клонирования репозитория с git
история изменений для моей ветви показывает исходную ветвь вне магистрали, но git
не "видит" ни одно из промежуточных слияний SVN, поскольку "родные" слияния - ревизия История - это одна длинная линия. В результате любые попытки слияния из транка в git
приводят к такому же количеству конфликтов, как и слияние SVN. (Кроме того, git-svn
документация явно предупреждает против использования git
для объединения ветвей.)
Есть ли способ настроить мой рабочий процесс, чтобы git
удовлетворял вышеуказанным требованиям? Может быть, мне просто нужны советы или хитрости (или отдельный инструмент слияния?), Чтобы помочь SVN лучше объединяться в ветви?