2011-01-10 75 views
6

我們公司使用(並支持!)SVN,但我傾向於使用git。我想要嘗試的是擁有git倉庫 - 每個項目一個,項目開發人員可以從這個倉庫中獲取(當然,如果他們願意的話,可以互相拉)。但我仍然希望將所有更改推送到SVN,因爲SVN由我們的技術支持維護。git svn dcommit沒有重定金

我用下面庫測試場景:

  1. SVN的倉庫 - 這一次是由我們公司保持和我們的團隊應該在某個點
  2. 的git - svn的克隆有推動所有的變化 - 這是從SVN上面克隆的git倉庫 - 所有項目開發者都應該在這裏提交它們的提交
  3. git-dev-clone - 這是開發人員的git倉庫。

與我注意到「混帳SVN變基」和「混帳SVN dcommit」的簡單使用唯一的問題是,從開發者的git倉庫各推到GIT - svn的克隆庫後,我一定要變基開發人員的存儲庫,只要更改將傳播到SVN和重新發布。我想要實現的目標是在每次推動後避免重組。

請注意,我假設每個項目開發人員將只使用Git存儲庫,沒有人會直接使用SVN。

我能夠通過在'git-svn-clone'存儲庫中逐個檢查每個git提交,然後使用SVN客戶端將這些更改提交給SVN來手動實現此行爲。我相信'git svn dcommit'也是如此,但是它也會從SVN同步並更改提交SHA標識符,這迫使我重新綁定。

P.S:--no-rebase選項git svn dcommit後以來第一次沒有幫提交傳播到SVN git svn dcommit並沒有讓我提交到SVN更多的變化,直到前一個是重建基礎。我曾嘗試過這種行爲,可能會忽略某些東西。

回答

7

它實際上比這個更糟......即使你攻擊了dcommit以不嘗試重新綁定,dcommit也會更改上傳到SVN的提交(添加git-svn-id行,更改作者信息等)。

基本上,git-svn無法從SVN同步回來而沒有進行rebase。一個新的git < - > SVN接口可能會消除這個限制正在開發中,但還沒有準備好。

恐怕如果您想要與SVN存儲庫保持同步,那麼您的方案現在將無法使用重新綁定。

+0

關於無法從SVN同步回來而沒有進行重置。我沒有從SVN同步回來,我需要的只是同步到SVN。 – Snowbear 2011-01-11 01:21:52