2012-07-13 102 views
0

我有兩個分支,「svnbranch」通過「git svn rebase」更新,而其他git用戶使用「master」來推送其更改。git分支顯示差異,但合併不做任何事

現在,當我做「git diff master」時,我看到master中有一些變化,我想合併到svnbranch中,這樣我就可以「提交」它們。但是,當我做 「混帳合併大師」 什麼也沒有發生:

git的結帳svnbranch

git的差異主

...一些變化顯示

混帳合併主

已最新的

爲什麼不將這些更改合併進來?

[注意:我真正想要做的是生成一個git repo,它是我們的SVN回購的鏡像,並手動合併兩種方式的更改。我嘗試了自動化,但不能順利運行,所以我手動合併每隔幾天]

+1

'git svn dcommit'是一個壞主意,因爲它會重寫所有提交對象,並實際將它們逐一提交給SVN服務器,從而有效地刪除以前的作者信息。之後它會再次從SVN服務器獲取更改集,並重寫Git對象以匹配它們(並且還在提交消息中包含SVN的修訂版本ID)。 – poke 2012-07-13 16:43:51

+0

有沒有更好的方式發送更改回SVN比dcommit?我一直在想,也許我應該使用實際的svn提交來推動更改,但擔心我會對dcommit進行一次糟糕的重寫。 – 2012-07-13 17:14:13

+0

不幸的是,SVN服務器提供的唯一外部接口是SVN接口本身,因此Git受其限制。 – poke 2012-07-13 17:26:44

回答

1

然後看看SubGit項目作爲SVN < - > Git鏡像(Git和SVN都是可寫的,並且始終保持在同步)。安裝可以在一個命令來完成:

$ subgit install path/to/svn/repo 

或2-3個步驟進行更精確的控制轉換選項

$ subgit configure path/to/svn/repo 
$ #edit path/to/svn/repo/conf/subgit.conf and path/to/svn/repo/conf/authors.txt 
$ subgit install path/to/svn/repo 

,你永遠不需要手動合併SVN和Git。

+0

謝謝,這看起來很有趣,但從頭版看來,我必須完全控制我的SVN服務器,而我並不這麼做。 – 2012-07-13 17:14:51