在传统的VCS中,我可以理解为什么您不提交未解决的文件,因为您可能会破坏构建。但是,我不明白为什么您不应该在DVCS中提交未解析的文件(其中有些实际上会阻止您提交文件)。
相反,我认为你的版本库应该从被锁定推和拉,但不承诺。
在合并过程中能够提交有几个优点(如我所见):
- 实际的合并更改在历史记录中。
- 如果合并很大,则可以进行定期提交。
- 如果您犯了一个错误,那么回滚会很容易(不必重做整个合并)。
- 在将文件标记为已解决之前,可以将其标记为未解决。这将防止推/拉。
您还可能有一组变更集充当合并,而不是一个变更集。这样一来,您仍然可以使用的工具git rerere
。
那么,为什么要对未解决的文件进行提交以防止/阻止呢?除了传统之外,还有其他原因吗?
hg 1.6
合并后,文件被标记为未解析。 hg
会不会让你提交,直到你将其标示为已解决(并不一定意味着你确实有解决这些问题,但我认为是的想法)。
hg
实际上维护已标记或未标记为“已解决”(使用hg resolve
)的文件的列表。如果U
此列表上有任何文件,它将不允许您提交。
hg resolve
专用于冲突合并;请参阅selenic.com/mercurial/hg.1.html#resolve。Note that Mercurial will not let you commit files with unresolved merge conflicts. You must use hg resolve -m ... before you can commit after a conflicting merge.