git-svn: сохранить коммит после слияния после svn rebase - PullRequest
1 голос
/ 16 марта 2011

Я следую этому шаблону, чтобы проверить мой код в ветви функций для Subversion с помощью git-svn:

git checkout master
git svn rebase
git checkout feature-branch
git rebase master
git checkout master
git merge --no-ff feature-branch
git commit --amend
git svn dcommit

(master - это моя удаленная ветвь отслеживания Subversion)

Это создаетодин коммит слияния на мастере (независимо от того, сколько коммитов git я сделал на ветви функций), который я могу проверить в Subversion.

Однако кто-то проверяет код в Subversion после того, как я сливаю ветку функции в master,когда я выполняю команду git svn rebase, новые изменения применяются, и каждый отдельный коммит из Feature-Branch применяется сверху.На данный момент у меня больше нет отдельного коммита слияния, но каждый коммит, который я выполнил на ветви функций в master.

Как лучше всего с этим справиться?

Ответы [ 2 ]

1 голос
/ 16 марта 2011

Вы можете делать то, что хотите, используя опцию --squash:

# rebase master and then feature-branch as above
git merge --squash feature-branch
git commit -m "Merge from feature-branch"
git svn dcommit

Это позволяет избежать создания ветви функции как родителя вашего нового коммита.Похоже, что несколько родителей сбивают с толку git-svn.

1 голос
/ 16 марта 2011

Вот как я это делаю:

git checkout feature-branch
git rebase -i HEAD~10  # squash commits in my editor
git svn rebase  # make sure I have the latest code
git svn dcommit
git checkout master
git svn rebase # now the feature-branch squashed commit is visible on master
...