У нас есть установка SVN со стабильной магистралью и нестабильной ветвью развития. Работа Dev (в основном) выполняется на ветке, а затем до развертывания объединена с магистралью.Как обмануть git-svn, чтобы распознать слияния, сделанные с помощью svn?
Я использую git-svn в качестве моего SVN-клиента. Мой процесс слияния с неустойчивым к стволу выглядит следующим образом:
git svn fetch
git co -b trunk svn/trunk
git merge --no-ff svn/unstable
git svn dcommit
svn/*
являются удаленные ветви SVN.
Это, конечно, требует, чтобы никто не совершал ничего с багажником, прежде чем я это сделаю, но на практике это не проблема.
Преимущества этого процесса в том, что git теперь записывает родителей слияния в моем локальном репозитории. Это не помогает моим коллегам, но это позволяет git вычислять общего предка, когда I выполните слияние. Это очень желательно.
И вот это руб. Когда кто-то делает слияние, git не знает об этом. Ниже приведен пример:
o-...-A---o---C--- unstable
/
X--...--B---o---o--- stable
Неустойчивая ветвь была создана в точке X. В точке А мы решили объединить изменения из-за нестабильной ветки в стабильную ветвь в точке В. Общий предок правильно Х.
Поскольку слияние не записано в истории git, следующее слияние в C снова предполагает, что X является общим предком. Я хотел бы он быть, как в следующем графике:
o-...-A---o---C--- unstable
/ \
X---...---B---o---o--- stable
Это не является абсолютно необходимым, чтобы получить график, который выглядит exacly как изображенного на рисунке. Любой граф, который распознал бы A как общий предок, в порядке.
У меня есть некоторые варианты в виду, например, правильное использование ветви git-filter или "фальшивого" фиксации, которое никогда не будет отдано SVN. Однако ни одна из моих попыток до сих пор не работала.
Я благодарен за любые идеи, которые вы можете представить. Процедура не должна быть автоматической. Сливы довольно редки, и я могу жить с болью от этого «вручную».
Спасибо! Это первый раз, когда я слышал о трансплантатах. Всегда хорошо учиться больше. –