在两个方向的两个分支之间合并 - 有什么充分的理由或完全禁止吗?

Merges between two branches in two directions - any good reason or completely forbid?

我的同事最近让我帮助他使用 precommit hook 将块推送到中央仓库。这就是著名的https://hg.python.org/hooks/file/tip/checkheads.py

checkheads.py 的算法在分支中收集头部,逐个忽略来自另一个分支的更改:

for x in xrange(p + 1, end):
    if repo[x].branch() != branch:
        continue

历史包含从 defaultprod 的合并,然后从 prod 返回到 默认.

所以 checkheads.py 没有发现变更集在 default 处合并(在图中连接),因为来自 prod 的任何路径分支被剥离,脚本在 default 分支中报告多个头(但 hg heads 报告单个头)。

我的问题是什么有用的 DVCS 工作流需要以两种方式在两个分支之间进行合并?

Famous http://nvie.com/posts/a-successful-git-branching-model/ 没有交叉合并。

是否可以防止来回合并?

My question what useful DVCS workflow require merges between two branches in two way?

获取基于功能分支(gitflow、github-flow、...)的每个工作流程,您想要使用拉取请求合并(例如,参见 github 的一键合并).

如果您正在处理一项功能并且有人已经合并了一项修改相同文件的功能,并且如果您要合并则存在冲突。

如果你想合并你的拉取请求,你必须先解决这些冲突。

你有两种可能性:

  • rebase 但这并不总是可能的(出于某些非常好的原因)
  • 从你的父分支合并到你的功能分支。

如果你以这种方式成功合并,你可以合并你的拉取请求/功能分支,你最终会得到一个漂亮的十字交叉;-)