如何禁止Git合并某些分支

时间:2013-12-21 12:25:45

标签: git merge denied software-product-lines

我需要支持我的程序的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分支?

how to forbid merging reverse direction

2 个答案:

答案 0 :(得分:3)

关于源代码,最好避免使用复杂的合并策略,并修改PrintBill以便:

  • 特定于客户端A和B的单独内容
  • 通过选择正确的来源
  • 为客户端A和客户端B构建正确的可执行文件

这个想法与下面最初编写的想法相同:避免任何复杂的合并策略。

现在如果无法进行这种重构,你可以尝试declare a merge driver,但不会总是调用(仅在发生冲突的情况下)


另一种方法是避免版本化Filling.txt(这样,不再需要合并策略)。

你可以:

smudge

答案 1 :(得分:0)

首先,我不认为这是你想要做的。

您希望禁止将 B特定内容合并到A中。

但是将B的一般错误修复合并到A应该没问题。

所以你应该将B特定的东西保存在不同的文件中。

无论如何,你需要的东西就像是中央服务器"上的git pre-receive hook,它会检查并阻止添加"禁止文件",我认为。 / p>

但请注意,如果你将B特定的东西保存在单独的文件中,你甚至不需要使用git分支来解决这个问题。您可以使用具有它们之间依赖关系的单独项目。