我对gitlab merge感到困惑。
是这种情况:
gitlab.com/bfi/sandbox
上的公司资料库master
(生产快照)和test
(质量检查快照)开发人员需要完成两个功能:X将在功能1上运行,而Y将在功能2上运行。
因此,X fork公司仓库在feature_1
上创建分支gitlab.com/x/sandbox
。
Y也派遣公司仓库,在feature_2
上创建分支gitlab.com/y/sandbox
两者都在同一文件上工作:myfile.txt
。 myfile.txt
的原始内容为空
让我们在X的8月11日说:
x/sandbox:feature_1
并为x/sandbox:test
创建MR x/sandbox:test
到company/sandbox:test
的合并请求因此myfile.txt
的内容成为
feature 1 line 1 by X
在这些地方:
x/sandbox:feature_1
x/sandbox:test
company/sandbox:test
质量检查开始测试功能1
8月12日:
y/sandbox:feature_2
y\sandbox:test
。 myfile.txt的内容(在y上)是feature 2 line 1 by Y
到目前为止一切顺利
y/sandbox:test
提交到company/sandbox:test
。在这里,他遇到了合并冲突,因此Y与X联系,并解决了冲突。 myfile.txt
的竞争成为feature 1 line 1 by X feature 2 line 1 by Y
Y也与X联系,因此X将company/sandbox:test
拉到x/sandbox:test
中
此内容(2行合并)现在出现在
x/sandbox:test
y/sandbox:test
company/sandbox:test
y/sandbox:feature_2
上出现一行(仅包含功能2)
另一个质量检查人员开始测试功能2(取自公司仓库)
X处理该错误,因此在x/sandbox:feature_1
上,myfile.txt
的内容变为
feature 1 line 1 by X feature 1 line 2 (bugfix) by X
请注意缺少的行。 feature 2 line 1 by Y
不在这里,因此当X向x/sandbox:test
提交合并的bug修正请求时,git会引发冲突。
解决冲突的方法是:
feature 1 line 1 & feature 1 line 2
)feature 1 line 1 & feature 2 line 1
)无论采用哪种分辨率,它都会更改源分支x/sandbox:feature_1
。
X如何在8月13日实现以下目标:
x/sandbox:feature_1
仅保留2行(feature 1 line 1 & feature 1 line 2
)company/sandbox:test
保留整行(特征1和特征2)这种情况是2 QA必须在功能1和功能2上起作用。而功能1计划在不等待功能2的情况下首先上线,在这种情况下,如果X选择:
-我们的:质量检查将无法测试Feature2,因为公司回购中不包含它
-他们:质量检查人员将无法测试功能1
-手动合并以包含所有行:x/sandbox:feature_1
将包含功能2的行。这意味着,如果功能1计划于8月14日启用,而功能2计划于8月20日发布,则8月14日的部署也将包含以下行:来自功能2。
那么
的策略是什么feature 1
(及其错误修正)feature 2
(包括feature 1
)吗?谢谢