2011-11-12 91 views
4

我參與的一個研究小組目前將其所有代碼存放在私有SVN存儲庫中。我們希望打開我們的代碼並將其大部分移到Github上。問題是,一些代碼是敏感的,不應該打開,但我們仍然希望它在版本控制下。目前,我們在Github上有開放代碼,而私有代碼仍在私有SVN存儲庫中。有沒有在單個Git存儲庫中完成此操作的好方法?單個Git存儲庫中的公共和私有代碼

回答

5

對於單個git存儲庫,沒有。你可以做的是使用git submodules,它允許你「結合」倉庫。將您的公共代碼保存在github上,爲私有代碼創建另一個私有託管的git存儲庫,該代碼將公共代碼作爲子模塊引用。公共子模塊中所做的更改可以推送到github,並且github上的更改可以被撤回,但子模塊外部的更改不會暴露給公共社區。儘管代碼樹將被合併到一個單一的根中,但您將不得不在單獨的模塊之間獨立地管理提交,推送和拉取,很多人覺得這些模塊很麻煩並且有問題,所以您應該在廣泛分發之前對工作流進行一些實驗。

0

沒有。

除非你想編寫git鉤子來加密/解密源代碼,否則你將不得不忍受兩個回購。當某人克隆一個git repo時,他們實際上是對它進行克隆的,所以不可能在沒有加密的情況下將其部分私有化。

0

Git的子模塊已經轉移到這裏:http://git-scm.com/book/en/Git-Tools-Submodules

的想法是子模塊是嵌入式的私人git倉庫內公開的Git倉庫。您可以分別管理它們,並且具有嵌入目錄結構內部的私有git存儲庫的優點。

例如:

/private-repository 
    /some (private) directory 
    /public-repository 
     /some (public) directory 
    /some other (private) directory 

另一種選擇是使用Git隱窩https://www.agwa.name/projects/git-crypt/

0

沒錯,git的子模塊似乎解決了我們的問題也是如此。我們曾在私人存儲庫的同一分支中開發開源CMS &高級擴展(付費)。現在我們決定將核心開發切換到github公開回購併分拆開發。

這是我們如何去。

  1. 創建兩個分支的公共存儲庫。大師去發佈,開發去實際發展。
  2. 我們創造了新的存儲庫,每個擴展我們
  3. 我們有我們去哪裏我們的發展&添加的所有保費擴展爲子模塊的核心文件的私人倉庫。當然是私人的。分支名稱 - dev。

爲了合併這些變化,我們簡單地從我們的分支開發中挑選出來,就是這樣。在這種情況下,我們爲公共存儲庫提供了一個乾淨的與核心相關的歷史記錄,並且很容易克隆一個存儲庫,然後遞歸地更新子模塊。花費更多時間讓這個同步,無論如何它是非常值得的。

乾杯