簡體   English   中英

在Git中管理項目變體的最佳實踐?

[英]Best practice for managing project variants in Git?

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

我正在使用Git進行分布式源代碼控制。

我的要求是:

  • 這兩個項目的通用代碼都是在一個地方開發的(Project1的開發環境)

  • 定期將其合並到第二個項目的開發環境中(Project2)

  • 變體不容易封裝在應用程序中。 (例如,有些應用程序。例如“個人資料”,它們在Project1和Project2之間有所不同,但也有一個持續的共同演變)

  • Project1和Project2都有公共存儲庫,因此我可以與其他人協作

  • 類似地,Project1和Project2應該具有開發,演示,登台和生產服務器。

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

  • 有一些文件,例如local_settings.py,它們在Project1和Project2之間完全不同,但應該在每個項目的多個開發人員之間共享

那么管理這種情況的最佳方法是什么?

什么似乎是理想的將是像“過濾拉”,而不是.gitignore說“完全忽略這個文件”,我可以說“從該回購中拉出時忽略此文件”我看不到任何類似的東西在文檔中,但可能有這樣的東西?

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

考慮到它是一個Django / Pinax站點,變種分散在幾個不同的應用程序中,我不建議使用子模塊。

應該在project1 branch和project2分支中獨立管理變體,無需“過濾”gitignore結果。

如果您確定了一些非常常見的代碼,它們最終可能會在第三個倉庫中“子樹合並”到project1和project2存儲庫( 這個SO答案中說明了子樹合並策略的含義)

您可以使用兩個不同的git分支進行開發。 當你對另一個共同進行更改時,只需git-cherrypick就可以了。 你也可以推送和拉出特定的分支,這樣就不會有人知道你同時在同時處理這兩個分支。

我會做第三個回購,我將放置Projects共享的代碼。 然后Project1和Project2將擁有自己的回購,他們可以從“共享”第三個回購中獲取。

我認為你的“過濾拉動”的想法會讓人難以理解。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM