我需要支持我的程序的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
我的问题是如何禁止从B,C,D合并到Git中的A分支?
答案 0 :(得分:3)
关于源代码,最好避免使用复杂的合并策略,并修改PrintBill以便:
这个想法与下面最初编写的想法相同:避免任何复杂的合并策略。
现在如果无法进行这种重构,你可以尝试declare a merge driver,但不会总是调用(仅在发生冲突的情况下)
另一种方法是避免版本化Filling.txt
(这样,不再需要合并策略)。
你可以:
smudge
脚本(content filter driver声明in a .gitattributes
file),该脚本将自动在结帐时生成,具体取决于签出的分支,Filling.txt
答案 1 :(得分:0)
首先,我不认为这是你想要做的。
您希望禁止将 B特定内容合并到A中。
但是将B的一般错误修复合并到A应该没问题。
所以你应该将B特定的东西保存在不同的文件中。
无论如何,你需要的东西就像是中央服务器"上的git pre-receive hook,它会检查并阻止添加"禁止文件",我认为。 / p>
但请注意,如果你做将B特定的东西保存在单独的文件中,你甚至不需要使用git分支来解决这个问题。您可以使用具有它们之间依赖关系的单独项目。