2011-08-16 69 views
8

我們的團隊目前正在從SVN轉移到Git。我們目前使用Maven作爲我們的構建工具。使用Maven + Git的項目組織

目前我們的項目通過Maven有一個構建層次結構,但在文件層次結構/存儲庫一側是平的。我的目標是更緊密地匹配Maven構建層次結構和我們存儲庫中的文件結構層次結構,以便更容易理解。

我的問題是創建Git倉庫的適當級別是什麼,以便維護文件層次/組織?例如:

  • 大項目 - (這裏沒有源代碼,只是一個POM)
    • 後端項目(來源+ POM)
    • 客戶(這裏沒有源代碼,只是一個POM)
      • 控制檯(源+ POM)
      • 網絡(來源+ POM)

因此, 「只有POM」 項目將用於組實際的源項目。但是,Git倉庫屬於哪裏?一些團隊成員擔心,承諾Web項目不屬於控制檯項目的歷史記錄。但是,如果Git回收站處於最低級別(樹的葉節點),我們將丟失文件結構組織(儘管可以在Maven中維護構建層次結構)。

編輯:團隊成員的關切,還不如多與提交歷史,因爲它是用標記。鑑於Git的回購根是在大項目,我要標記的網絡項目(通過標記的大項目),該標籤爲何應包括控制檯項目,這也許不是相關到Web標籤?

+0

你怎麼會在SVN處理呢?我假設你有一個像描述的結構。你簡單地檢查了大項目,其他一切都將在硬盤上得到......所以你爲什麼要改變這個? – khmarbaise

回答

5

我有一個由60多個模塊組成的maven項目,我的團隊已經討論了git存儲庫根目錄應該在哪裏的相同問題。到目前爲止,每個討論都以同一個項目中的整個項目結束,直到根源。這個決定主要基於開發人員的便利 - 我們不需要克隆和打開多個不同的存儲庫,以在本質上相同的項目中工作。歷史問題對我來說似乎是虛假的。誰在乎歷史是否融合?您可以隨時在git中查看特定文件的/模塊/路徑的歷史記錄,排除任何其他文件。

我們考慮過的一個選項是git submodules,它允許您在回購中嵌入回購協議。如果您決定拆分它,這可能是組織您的層次結構的一種選擇。

+0

對於單個項目+1。與Subversion和其他舊工具不同,這不是瓶頸。 –

+0

你使用什麼工具?我有一個類似的設置,在單個git倉庫中有20個maven模塊,包含±800000行代碼。我在Eclipse中使用Egit時遇到了嚴重的性能問題,因爲我們使用了Egit,因爲它們不斷地重新索引... – verhage

+0

我們使用IntelliJ,它可以很好地處理它,尤其是從版本12開始,但在這個問題的1.5年之後,他們自己的項目生活在他們自己的回購站中,部分是爲了避免IDE性能問題。這種方法引入了自己的一套問題,但也有其他好處。 –

0

我建議離開Git中的結構與SVN中的結構相同,這意味着整個項目都在Git中。關鍵是你可以使用Maven發佈插件,而不會對這種多模塊構建產生任何問題。