2011-10-07 94 views
39

我只是從svn轉移到git,並且渴望打下一些好的基礎。我應該將Git存儲庫存儲在Home還是Eclipse Workspace中?

默認情況下,Eclipse希望將我的本地克隆存儲庫存儲在〜/ git中。我更願意將任務的所有數據保存在同一個工作區中 - 所以我傾向於將其保存在我的工作區中。

我應該考慮哪些重要的優點/缺點?

我不打算做很多分支 - 我真的要走dvcs路線,主要是爲了克服一些不可靠的互聯網通信問題。

+0

其中是〜目錄? – rasen58

+7

〜目錄是在基於Unix的操作系統中用於主目錄的快捷方式(請參閱http://en.wikipedia.org/wiki/Home_directory) – ianmayo

回答

25

我在Eclipse中切換到Git,並閱讀有關此問題。看來,current wisdom(雖然不是每個人都同意)是:

  • 習慣了沒有工作空間目錄下的項目。

  • 每個相關的eclipse項目組都有一個git倉庫(當然也許還有更多的文件)。 「相關項目」的概念取決於您的便利[*]

  • 對於每個存儲庫,每個Java項目都有一個第一級目錄。這意味着你將有一個.git/目錄,並且在同一級別上有項目目錄。

例子:假設, 「GIT之前」,你有一個Eclipse工作區中有幾個項目:

/wk/workspace/.metadata/ 
/wk/workspace/projXXX/ 
/wk/workspace/projXXXtest/ (related with the previous) 
/wk/workspace/projYYY1/  | 
/wk/workspace/projYYY2/  > three related projects 
/wk/workspace/projYYY3/  | 
/wk/workspace/projZ/  (a project you are not going to version in git) 

然後您將創建兩個空目錄,每一個倉庫,說:

~/repositories/XXX/ 
~/repositories/YYY/ 

,之後,隨着新GIT佈局,你必須:

/wk/workspace/.metadata/ 
/wk/workspace/projZ/ 

~/repositories/XXX/.git/ (XXX related repository - non-bare) 
~/repositories/XXX/projXXX/ 
~/repositories/XXX/projXXXtest/ 

~/repositories/YYY/.git/ (YYY related repository - non-bare) 
~/repositories/YYY/projYYY1/ 
~/repositories/YYY/projYYY2/ 
~/repositories/YYY/projYYY3/ 

的Eclipse(例如:It)做這一切都爲你當你點擊Team->分享在現有的項目,並指定(在本例中)~/repositories/XXX/.git/作爲倉庫,(~/repositories/XXX/「工作目錄」,離開「路徑在存儲庫中「空白)。

[*]請記住,這裏的每一組項目都是從Git的角度來看,只是存儲庫中的一組目錄。一些相關的含義:在上面的例子中,你永遠不會在Eclipse工作區中同時存在兩個不同的分支/版本的項目projYYY1-projYYY2;比如說,當你爲一個項目提交做標記時,你實際上是在標記完整的倉庫(項目組)。

+2

你碰巧有不同意的人有一個或兩個鏈接?因爲我發現「普通」智慧「方法的邏輯不完全令人信服,所有給出的理由都適用於將工作空間作爲存儲庫的情況,而不是項目存儲庫。注意我同意它看起來像eclipse推薦的路徑,但我不相信他們是正確的:) – studgeek

+0

我不確定我瞭解替代方案「使工作區成爲存儲庫,而不是工程存儲庫」在我的示例中,每個存儲庫既不對應工作區也不對應一個項目,但對一組項目 – leonbloy

+2

您可以在項目級別創建倉庫,因此您不必移動項目,也不會遇到您鏈接的文章中列出的任何問題假設你在倉庫中不需要多個項目 – studgeek

2

.git應該是在您的工作樹(即表示您正在使用的當前分支現任掌門文件)

請記住,使用Git,分支機構不在目錄(而不是SVN) ,所以你的工作樹將直接代表分支內容,而不是幾個目錄(針對你的各個分支),然後是每個分支的內容。

我通常喜歡將我的項目源與Eclipse工作區分開,但這是一個偏好問題。

+0

將源與工作區分開是的,是一個偏好問題,儘管從ZoltánUjhelyi上面寫到的看來,這種方法對於將相關項目分組到一個文件夾下可能具有一些特殊的優勢,以便它們可以在單個git存儲庫中進行版本控制。 – Carl

+2

@Crowie eclipse工作空間主要用於Eclipse元數據。當您更改Eclipse或想在同一臺機器上使用多個版本的Eclipse時,您希望獨立於執行導入的Eclipse導入您的項目:如果您的項目在任何Eclipse之外擁有自己的生命,那麼這會更加清晰和容易。 – VonC

2

我認爲,在工作區外存儲git版本樹是個好主意。這樣就可以將項目從不同的存儲庫中分離出來,但仍然可以在同一個工作區中處理它們。另外,如果將代碼放在工作空間之外,則可以在工作空間之外(在工作副本中)以層次方式組織您的項目,但仍然可以在Eclipse中看到平面表示。

+0

是的,這看起來非常合理,因爲Eclipse對其工程空間文件夾之外的項目感到滿意。因此,您可以將相關項目集中在一個文件夾下,如leonbloy的答案中所建議的那樣,只有該文件夾將位於工作空間層次結構的* outside之外,並且git repos將關閉每個此類文件夾。雖然對於git和EGit都是新手,但我不確定EGit能夠處理工作空間之外的源代碼 - 也許您的方法需要使用常規命令行git或基於那,而不是EGit? – Carl

+0

我想一個替代方案可能是隻允許「相關」項目共享一個工作區,然後將您的git倉庫放到頂層工作區文件夾中。但是這可能是不方便的,因爲人們可能希望在同一個工作區中有類似的項目,以便輕鬆*參考*,即使它們不是在單個版本控制庫下一起演變。所以你的建議似乎是最普遍的服務。 – Carl

+0

其實,我發現文檔說你可以在這裏使用EGit: http://wiki.eclipse.org/EGit/User_Guide#Creating_a_Git_Repository_for_multiple_Projects – Carl

相關問題