2010-12-23 97 views
15

在我們的git-svn託管項目中,我們有3個上游項目都保存在GitHub上的本地git存儲庫中。由於這些上游項目的源代碼是在我們的控制之下並且經常發生變化,因此我們目前的解決方案,即每次我們改變某些東西時,將構建工件重新部署到超級項目中都非常麻煩。在git-svn項目中使用git子模塊

我想有是這樣的:

parent project (git-svn): 
    --> submodule 1 (git) 
    --> submodule 2 (git) 
    --> submodule 3 (git) 

這樣一來,對於1-3的子模塊的源代碼與源爲超級項目一起編譯,但是我可以把更改子模塊分別。

現在的問題是:當父項目上我git svn dcommit會發生什麼?這甚至工作嗎?

UPDATE 嗯,我只是成立了一個簡單的項目結構,試圖像這種情況下,我收到試圖dcommit在上層項目時,此錯誤消息:

a0301b11f3544a1e71067ff270eded65e4c8afbd doesn't exist in the repository at /opt/local/libexec/git-core/git-svn line 4775 
Failed to read object a0301b11f3544a1e71067ff270eded65e4c8afbd at /opt/local/libexec/git-core/git-svn line 574 

任何意見/建議?

+0

在我們的世界中,我們使用Hudson來構建子模塊並將其部署到本地存儲庫,例如Artifactory。 Maven被配置爲抓取SNAPSHOT版本,因此他們每天都會重新部署,或者每當我們使用-U創建時。 Hudson可以配置爲發送電子郵件進行新的部署。 – OleTraveler 2011-04-06 22:57:28

+0

更新重新尋找最新答案/解決方法。我認爲這個問題的答案是我所尋找的:[是git svn兼容git子樹?](http://stackoverflow.com/questions/13447705/is-git-svn-compatible-with-git-子樹) – 2013-03-21 11:53:25

回答

10

你不能這樣做,git子模塊不能通過git-svn上行到svn倉庫,它不支持這個。

5

git-svn不允許這樣做,但是如果您有權訪問SVN存儲庫服務器,則可以在其中安裝SubGit。它會爲你創建一個鏈接的Git倉庫,這樣任何對它的推送都會自動轉換爲SVN版本,反之亦然。之後,您可以將子模塊添加到生成的Git存儲庫,並使用純Git界面與SVN存儲庫一起工作。這些Git子模塊不會被翻譯成SVN。

翻譯是併發安全的,相當透明(svn:忽略將被轉換爲Git忽略,EOLs到.gitattributes,標籤到標籤等)。