2013-03-26 79 views
1

我見過很多類似的Q & A,所以我會向前道歉,看起來像是一個重複的問題。但是我已經讀完了所有我能找到的東西(這裏和網絡上一般),但我仍然沒有答案。獨立Git項目(知識庫)中的共享庫

我們目前使用SVN(烏龜和安赫是工具)作爲我們的VCS,並正在考慮轉移到Git。我們的興趣在於在分支方面獲得更好的能力。簡單地說,我們的項目是這樣的:

Project1 
Project2 
SharedCode 

每個這兩個項目的密切依賴於SharedCode(事實上,他們是分不開的)。因此,如果我在Project1上工作,我需要能夠檢出由Project1和SharedCode組成的存儲庫(始終)。同樣,對於Project2,它必須由Project2和SharedCode組成。

顧名思義,SharedCode是共享庫,共享項目和參考文件的集合。每個項目都等同於Visual Studio中的解決方案。這意味着每個實際上都是VC#代碼項目的集合。這些獨立的VC#項目將引用SharedCode中的內容,例如參考DLL,甚至是SharedCode目錄中存在的其他VC#代碼項目。

我真正想強調的是,結構是我的問題中最重要的部分。我不能使用使「鏈接」代碼(即SharedCode)成爲特定提交的方法。它必須始終是HEAD(最新發布的代碼),就像項目1或2一樣。

現在,我明白,我可以簡單地將每個存儲庫分別存儲並單獨檢查它們。但是當我想要分支時會發生什麼?下面是一個潛在的危險情況的例子:

我有分支的Project1和SharedCode,我都檢查出來。我也有Project2簽出,但它沒有分支。我開始研究Project2中的某些東西,但是因爲Project2使用了SharedCode中的代碼頁,所以我可能正在處理未分支的Project2和分支SharedCode的混合。

因此,總之,我希望能夠檢查Project1和SharedCode,或Project2和SharedCode,始終以這些對。相反,我還必須能夠一起提交更改,以便所有代碼保持一致。

我有什麼選擇?你有沒有類似的需求,或經驗如何處理這種情況,並避免危險的情況?

我提前感謝您幫助我們構建新的Git存儲庫。

回答

0

只是爲了提供故事的結束,可以這麼說,這就是我們最終做的。我們沒有嘗試使用共享存儲庫的結構,而是選擇創建一個包含Project1,Project2和SharedCode的大型存儲庫。這意味着更多的東西被複制並被包含在分支/標籤中,但最終最有利於確保每個項目始終擁有它所需的SharedCode。

0

我想你應該看看

man githookonline manpage

你可以定義拉,或推後啓動腳本,所以你可以推拉的SharedCode,太githooks。我真的不知道什麼是可能的,但也許這會幫助你一點點。

+0

我同意這可以幫助自動化一些「一起獲得」和「一起推動」過程。然而,這無助於解決主要問題,即確保項目工作副本不會陷入危險的混合狀態。 – DonBoitnott 2013-03-26 15:37:37

+0

好吧,我不是很瞭解你。你是否希望將所有共享推送到主,即使項目推送到分支並且所有的拉都從共享主設備中提取,以便項目始終與共享的頭部一起工作? – 2013-03-26 16:35:45

+0

編號請參閱我的示例場景,其中Project1和SharedCode是分支的,但Project2不是。從物理上講,當我打開Project2代碼,並且看到有一個從SharedCode目錄引用的文件時,我處於「混合」狀態。我正在研究__ __ __是HEAD Project2,但實際上我正在修改來自分支的SharedCode文件。當我進入這個危險的狀態時,我們不會很清楚,因此,可能會在HEAD /分支線路上發生無意的更改。 – DonBoitnott 2013-03-26 17:51:53