2009-07-05 54 views
5

我必須開發兩個共享90%相同代碼的Django項目,但在幾個應用程序,模板和模型本身中有一些變化。在Git中管理項目變體的最佳實踐?

我使用Git進行分佈式源代碼管理。

我的要求是:

  • 這兩個項目

    共同的代碼在一個地方(PROJECT1的開發環境)

  • 週期性,這是合併到第二個項目的開發環境(Project2的開發)

  • 變化不容易封裝在應用程序中。 (例如,有應用程序。如「配置文件」,這PROJECT1和Project2中產生的,而是針對其改變這裏還有一個持續的共同演進)

  • 兩個PROJECT1和Project2的具有公共倉庫,這樣我就可以與他人

  • 合作
  • 同樣,Project1和Project2應該有開發,演示,分段和生產服務器。

  • 但是,兩種情況下公共存儲庫都不在同一臺服務器上。所以,例如,當我在Project1中開發時,我希望能夠「推送」到我的github服務器,但是沒有Project2的東西去那裏。

  • 有文件,如local_settings.py這是PROJECT1和Project2的之間完全不同,但應該多開發者之間共享的每個項目

那麼什麼是管理這種情況的最好方法?

看起來很理想的東西就像是「過濾拉」,而不是.gitignore說「完全忽略這個文件」,我可以說「從回購站拉時忽略此文件」我看不到任何非常類似於文檔中的內容,但可能會有類似的東西?

回答

0

我會做第三次回購,我會放置項目共享的代碼。然後,Project1和Project2將擁有自己的回購,並且可以從該「共享」第三個回購中拉出。

我認爲你的「過濾拉」的想法會使人難以理解。

+0

您好,我想過一個常見的回購,但我認爲這不足夠。 (正如在我仍然需要在Project1和Project2倉庫中開發(錯誤修復),並希望將常見修復推回到常見的倉庫。問題是我想部分推回,而不會讓git認爲常見的回購已過期 或者這是錯誤的嗎 – interstar 2009-07-05 16:12:20

4

將通用代碼移到其自己的庫中,並使其成爲這兩個項目的依賴項。這不是版本控制的問題,而是代碼重用,設計和消除重複的問題。

+0

Hi Esko。這不是一個真正的庫,它是一個Django/Pinax站點,這些變體必然分散在幾個不同的應用程序中。常見的或者在一個地方有什麼不同的地方 – interstar 2009-07-05 16:06:24

4

考慮到這是一個Django/Pinax網站,裏面有幾個不同的應用分散在各地的變種,我不建議使用的子模塊。

變體應該在project1分支和project2分支中獨立管理,不需要「過濾」gitignore結果。

如果您發現了一些非常常見的代碼,他們可能會在你可以再「子樹合併」到Project和項目2庫(子樹合併策略是illustrated in this SO answer的意思)第三回購結束

2

您可以使用兩種不同的git分支進行開發。當你在另一個共同的變化中做出改變時,只需將它們翻過來。你也可以推拉特定的分支,這樣就沒有人需要知道你在同時處理兩個分支。