git: правильный способ слияния / перебазирования по отношению к svn dcommit - PullRequest
0 голосов
/ 08 июня 2010

У меня следующая ситуация (в основном потому, что я действительно не продумал это в начале - или, точнее, я думал, что это не должно быть проблемой, как я это сделал, но теперь я оступился): 1001 *

... --- A --- B1 --- ... --- Bn

... --- git-svn

При этом A и git-svn находятся в одном и том же состоянии (точно такие же файлы и содержимое файла), но у них нет общей точки в истории.

И я хочу:

... --- git-svn --- B1 --- ... --- Bn

Или, по крайней мере, когда я делаю svn dcommit, я хочу точно получить коммиты B1 до Bn и ничего больше.

Я не совсем уверен, как работает dcommit. Так что, если бы я получил что-то вроде этого:

... ------------ A --- B1 --- ... --- Bn
                  \                    \
... --- git-svn -- A' ----------------- B'

будет ли dcommit вести себя так, как я хочу? Потому что если это так, это будет легко получить (объединение A в git-svn работает просто отлично, потому что они одинаковы по содержанию).

Или я должен сделать что-то вроде перебазирования? Но я не хочу менять A на git-svn, просто B1 на Bn.

1 Ответ

0 голосов
/ 08 июня 2010

dcommit выполняет svn commit для каждого коммита от git-svn до HEAD (или указанного вами коммита).

Я думаю, что ваше последнее предложение - это то, как я подхожу к нему:перебазировать B1 на Bn на git-svn.Это делается следующим образом:

git checkout Bn
git rebase --onto git-svn B1 Bn
...