Git合并无法添加新行

时间:2016-11-04 10:00:04

标签: git csv magento-1.9

我正在使用Mageploy对开发人员之间的管理面板更改进行版本控制,但看起来Git无法合并CSV文件中的完全不同的行,其中包含已执行操作的记录。

在每种情况下,当两个开发人员在管理面板中更改其本地环境并提交更改时,如果他们没有轮流执行(其中一个提交,另一个合并,然后提交,则第一个合并),git会希望他们在合并后在一个或另一个分支之间选择

在下图中,您可以看到分支 test1 的CSV和分支 test2 的CSV。这些行完全不同,但即使没有可用的合并策略也可以工作(章鱼我们的递归解析子树)。

Mageploy CSV in Notepad++ compare mode

我只需要将test2中的行添加到test1中的所有行。并且,理想情况下,无论是test1添加到test1还是test1添加到test2(因为添加行通常将它们放在底部),正确合并而不会发生冲突。

示例:

test1.csv

old-entry
old-entry
old-entry
test1-a
test1-b

test2.csv

old-entry
old-entry
old-entry
test2-c

开发人员一个将test2合并到他们的test1

old-entry
old-entry
old-entry
test1-a
test1-b
test2-c

开发人员两个将测试1合并到他们的test2

old-entry
old-entry
old-entry
test2-c
test1-a
test1-b

1 个答案:

答案 0 :(得分:0)

我无法找到一种方法让Git在合并期间保留CSV文件中的所有行而不会发生冲突。根据@ tim-biegelesein和@torek的评论,没有办法让Git从这两个分支中划线。

我将使用这样的东西在我的开发自动化脚本中解决这个问题。它只是删除合并标记并提交合并。

git merge $targetBranch
sed -i -e "/<<<<<<<\|=======\|>>>>>>>/d" /path/to/mageploy_all.csv
git commit --all --file .git/MERGE_MSG

如果不打开编辑器,参数--no-edit无法使用默认合并消息。而是指定合并消息文件。

然而,这似乎仍然容易受到上述问题中示例中显示的问题的影响 - 这些合并的顺序。

我怀疑Git会在CSV中看到不同的行顺序时发生另一个冲突,因为test1与test2合并而test2与test1合并,看到这些行已交换位置。
没有任何意义上的冲突,或者至少没有任何合并策略,但似乎现在唯一的选择是编写更多的代码来解决这些情况。