2011-06-28 61 views
1

我跟着this发表了关于如何使用git svn创建和签出分支的问题,以便实际上在svn回收站上创建分支。这很好。git svn master to branch to master - 仍然试图提交分支

当我完成了我的分支,我做了一个结账主,并做了一个git合并。这工作得很好。然后,我去svn回购提交合并回干,所以发出了一个git svn dcommit。

它试图提交到分支。尽管我现在已经检查了主分支。我错过了什么?

$ git svn branch -m "test branch" test_branch 
$ git checkout --track -b test_branch remotes/test_branch 
$ Hack hack hack... 
$ git svn dcommit --dry-run # Make sure you're committing to the right SVN branch 
$ git svn dcommit    # Commit changes to "test_branch" branch in SVN 
$ git checkout master 
$ git merge test-branch 
$ git svn dcommit # why is this committing to the branch instead of trunk?? 

这是我的.git /配置的情况下,它的事项

[core] 
    repositoryformatversion = 0 
    filemode = true 
    bare = false 
    logallrefupdates = true 
    ignorecase = true 
[svn-remote "svn"] 
    url = mysvnrepos.com/svn/project 
    fetch = trunk:refs/remotes/git-svn 
    branches = branches/*:refs/remotes/* 
[branch "test_branch"] 
    remote = . 
    merge = refs/remotes/test_branch 

回答

0

我以为有人问这个了,但我不能再找到它。无论如何,带分支的git-svn很复杂。您必须在svn端创建空分支,使用git svn branch或简单svn mkdir。然后你用git签出这些分支,然后在不使用git级别合并的情况下重新提交它们。这样,git分支在他们的祖先中指定了正确的svn分支,并且dcommit提交到正确的分支。你可以验证分支git-svn会使用git svn info来承诺。

+0

这对未来都很好,但我需要解决现在发生的事情,我显然没有做好。 – Gregg

+0

@Gregg'git checkout master; git rebase test_branch'将消除应该恢复顺序的合并提交。 – Tobu

+0

它没有。我做了这两个命令,然后是一个git svn dcommit --dry-run。仍然说它是承诺我的分支。 – Gregg