2017-08-16 59 views
1

我有一個項目託管在git環境中,我必須生成一個基於它的白標籤項目。我對微軟的TFVC(團隊基礎版本控制)更有經驗,我很容易知道如何使用它,但我不確定我應該如何繼續使用git。Git策略與白標籤項目一起使用

在TFVC中,我會從主項目創建一個分支'A',擦除任何客戶特定的內容並完成,我有一個通用版本。之後,我會刪除父母,從'A'創建一個新分支'B',然後執行從主項目到'B'的baseles合併,現在我有我需要的層次結構,並且新創建的分支包含所有客戶具體變化。當新客戶到達時,我從通用'A'創建分支'C'並應用所需的任何新更改。

如果新功能對於所有客戶端來說都是通用且有用的,它將在'A'中開發,然後將合併到'B','C'等。這是所有客戶將被允許請求不同的功能,並使用單個存儲庫來打開和關閉它們,在我看來,這比維護源自普通存儲庫的不同代碼示例差得多。相同的功能在不同的客戶端也可以有不同的表現,我不希望應用程序必須在運行時檢查它。

隨着場景的說明,我該如何使用Git?另外,它可以使用叉而不是使用git的分支來完成嗎?

回答

0

據我所知,你通常應該做同樣的事情,也許有小的變化。

從主項目中創建一個分支'A',擦除任何客戶特定的內容並完成,我有一個通用版本。

你做的git相同

之後,我會刪除養育,從「A」創建一個新的分支「B」,然後執行baseles從主項目合併爲「B」所以現在我有我需要的層次和新創建的分支包含了所有客戶的具體變化

相反,你可以開始分支B和恢復(如git revert),你都做分支A刪除客戶爲所有變更SPECI fic info,從而返回到原來的相同項目,但沒有任何手動衝突解決方案。這是期望的結果嗎?

作爲一個新的客戶到達時,我從普通的一個 'A' 創建一個分支 'C',並適用於混帳

需要

相同的,如果一個新的任何新變化功能對於所有客戶端來說都是通用的和有用的,它將在'A'中開發,然後將合併到'B','C'等。

相同的git

+0

我假設,從我讀過的所有文檔中,git中的分支的生命週期很短,不應該在生產環境中使用,在多個客戶的情況下使用TFVC時,這是不正確的。無限期地使用分支被認爲是不好的做法? – v1n1akabozo

+0

這完全取決於你的決定。你可以創建和刪除臨時分支,但你也可以讓它們永生;您還可以決定是否僅將其更新爲快進或允許強制更新。在前一種情況下,你將不得不制定一些紀律,因爲這是不可逆轉的。例如,您錯誤地將特定於客戶的內容推送到您的'A',您必須將其恢復原狀,或在重新合併到客戶分支機構之前重置爲前一個點。 – max630

+0

請注意,這些分支應該表示您的主服務器上的分支,如[此處]所述(https://git-scm.com/book/en/v2/Git-Branching-Remote-Branches)。您不直接在該服務器上運行,而是使用本地跟蹤分支進行開發和合並,並且它們可能具有相同的名稱,但瞭解其差異很重要。 – max630