2011-10-14 37 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