2011-10-14 39 views
5

我有一个很大的问题混帐的svn:我只是需要把我的git回购到SVN服务器,所以我做了如下混帐SVN dcommit没有发现变化和复位头

svn mkdir --parents http://host/path/to/repo/{trunk,tags,branches} \ 
    -m "Standard layout for $project" 
git svn init -s http://host/path/to/repo/ 
git svn fetch 
git rebase trunk master 
git svn dcommit 

这个工作很棒,一切都在git和svn上!

现在我得到消息说我的git master分支是31提交在origin/master后面,所以我做了一个git pull。 现在我改变了一些东西在我的回购(basicily它的Eclipse项目)并提交它。现在我想也是推动它的SVN回购,并提出了 混帐SVN dcommit 但那不是工作:

Committing to https://..../trunk ... 
No changes 
38b194cb2860b8bb73924cb05f9830dbdb70cf82~1 == 38b194cb2860b8bb73924cb05f9830dbdb70cf82 
No changes between current HEAD and refs/remotes/trunk 
Resetting to the latest refs/remotes/trunk 
Unstaged changes after reset: 
M  Product/Abgabe.tex 
Unable to extract revision information from commit daf483ad1333f3589386b87054f4c27fb7ff23cf~1 

我做错了什么?主现在reseted之前提交,现在我需要git checkout -- Abgabe.texgit pull到这里有正确的版本...

编辑:如果我做了git svn rebase,我为每一个提交冲突的一个长长的清单,所以我做git rebase --skip到底,然后dcommted,这是工作,但它似乎是一个血腥黑客:/

回答

7

我认为你缺少在您的工作流程是git svn rebase http://flavio.castelli.name/2007/09/04/howto_use_git_with_svn/

+0

MH是的,它似乎所以......好的,然后我发现了这个问题:如果我在不同的主机上使用git并将其推送到repo并且必须合并分支,那么svn分支与非线性历史有关。现在我必须重新分配......但是那在屁股疼痛!当我想再次推动git时,我需要首先拉我的git历史记录,然后再次将其重新转换为svn版本... – reox

+3

我通常在master上执行'git svn rebase',然后'git checkout -b feature_branch'。一旦我准备上传到svn服务器,我将在'git checkout master'然后'git svn rebase',然后'git merge feature_branch',然后'git svn dcommit'完成我在功能分支中的所有工作。 – Joe

+1

@Joe。链接现在被打破了,但是git svn rebase就是诀窍。谢谢。 – JackMorrissey