我的工作流程通常涉及对文件进行多次更改,每次更改都属于项目中自己的概念单元(=提交)。
我想要做的是将某些差异(整个文件或仅文件的某些行)添加到挂起的提交中(可能必须命名该提交),并且可以同时存在多个待提交的提交。
然后,当所有相关的待提交更改在所有文件中都完成时,我就可以提交命名的提交!
有什么版本控制系统适合这种情况吗?
还有Mercurial ShelveExtension和git-stash,它们允许您以补丁块的粒度挂起所选更改以供以后提交。这种工作方式确实可以让您在提交之前进行适当的测试。
原始请求听起来很像“挑剔”:手动选择要包含在新提交中的“差异”片段。至少Git和Darcs支持这种功能。对于emacs + git,有gitsum,我非常喜欢。
确保每个单独更改的提交都会产生可构建的系统非常困难。
我强烈建议一次只做一件事,并分别提交每个问题。
内容警告:基于仅有的一面之缘而得出的印象:
如果您需要微观管理同时进行但在某种程度上是不相关的更改,那么您可能需要调查darcs,与svn、git或mercurial等系统相比,它具有相反的重点。
在darcs中,补丁是关键要素,给定分支的状态实际上只是一组补丁的总和。这种模型可能适合您想要做的事情,但显然@wcoenen对最佳实践的警告仍然存在。对于每组补丁,您需要确保构建(无论它包含什么)没有损坏。
顺便问一下,你是我认为的Eoghan M...r吗?
Subversion客户端(>=1.5)包含一个Changelist概念:一组与所选名称相关联的文件。
当在同一个工作副本中处理多个不同文件集时,这尤其有用。不必记住每个文件集中的每个文件,Subversion允许您将更改列表与每个文件集相关联。大多数以一组文件为目标的命令现在也接受--changelist选项,该选项基于更改列表的成员过滤这些目标。可以使用新的更改列表子命令编辑更改列表成员资格。