[英]How to forbid Git merge certain branches
我需要支持 3 個版本的程序。 大多數文件在哪里
聯合(常見)但幾個文件包含每個版本的不同內容。
我可能會在 Git 中使用 4 個分支 A、B、C、D。
形成示例項目冰淇淋:
____________________________________________________
Cup.txt: { Waffle cup } – common file for all version
Filling.txt { banana } - special file for B version
Filling.txt { strawberries } - special file for C version
Filling.txt { vanilla } - special file for D version
____________________________________________________
A - 分支僅適用於全局文件 (Cup.txt)
B、C、D - 分支僅適用於 Filling.txt 文件。
對於這個策略,我只需要允許在一個方向上合並:A => B,C,D
我的問題是如何禁止在 Git 中從 B、C、D 合並到 A 分支?
關於源代碼,最好避免復雜的合並策略,修改 PrintBill 以便:
這個想法與最初寫在下面的想法相同:避免任何復雜的合並策略。
現在,如果這種重構是不可能的,您可以嘗試聲明一個合並驅動程序,但這不會總是被調用(僅在發生沖突的情況下)
另一種方法是避免對Filling.txt
進行版本控制(這樣,合並策略就不再頭疼了)。
你可以:
smudge
腳本(在.gitattributes
文件中聲明的內容過濾器驅動程序),它將在結賬時自動生成,具體取決於簽出的分支,正確的Filling.txt
首先,我不認為這真的是你想要做的。
您想禁止將B 特定的內容合並到 A 中。
但是將 B 到 A 的一般錯誤修復合並應該沒問題。
因此,您應該將 B 特定的內容保存在單獨的文件中。
無論如何,我認為您需要的是“中央服務器”上的 git pre-receive 鈎子,它可以檢查並防止添加“禁止文件”。
但請注意,如果您確實將特定於 B 的內容保存在單獨的文件中,您甚至不需要使用 git 分支來解決這個問題。 您可以使用單獨的項目,它們之間存在依賴關系。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.