[英]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.