Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Svn 什么样的VCS允许我同时向多个挂起的提交添加更改?_Svn_Git_Mercurial_Dvcs_Bazaar - Fatal编程技术网

Svn 什么样的VCS允许我同时向多个挂起的提交添加更改?

Svn 什么样的VCS允许我同时向多个挂起的提交添加更改?,svn,git,mercurial,dvcs,bazaar,Svn,Git,Mercurial,Dvcs,Bazaar,我的工作流程通常涉及对一个文件进行多个更改,每个更改都属于项目中自己的概念性更改单元(=提交) 我希望能够向挂起的提交(可能必须命名)添加某些差异(整个文件,或仅文件的某些行),并同时使多个挂起的提交处于“活动”状态 然后,当与特定挂起的提交相关的所有更改跨所有文件完成时,我可以提交命名的提交 您是否知道哪些VCS是这方面的合适人选?在svn中,您可以定义并仅提交特定变更列表中的文件 Git更进一步,它允许您通过交互方式从具有的文件中选择更改的块来记录修补程序 尽管这些功能很流行,但与最佳实践相

我的工作流程通常涉及对一个文件进行多个更改,每个更改都属于项目中自己的概念性更改单元(=提交)

我希望能够向挂起的提交(可能必须命名)添加某些差异(整个文件,或仅文件的某些行),并同时使多个挂起的提交处于“活动”状态

然后,当与特定挂起的提交相关的所有更改跨所有文件完成时,我可以提交命名的提交

您是否知道哪些VCS是这方面的合适人选?

在svn中,您可以定义并仅提交特定变更列表中的文件

Git更进一步,它允许您通过交互方式从具有的文件中选择更改的块来记录修补程序

尽管这些功能很流行,但与最佳实践相反。您无法以这种方式正确测试更改。在您的工作副本中,一切都可能正常工作,但仅提交部分更改可能会破坏构建。使用更安全,任何现代版本控制系统都支持这一点

还有Mercurial和,它允许您以补丁块的粒度搁置选定的更改,以便以后提交。这种工作方式确实允许您在提交之前进行正确的测试。

Subversion客户端(>=1.5)包含变更列表的概念:一组与所选名称关联的文件


在同一工作副本中处理多个不同的文件集时,这一点尤其有用。Subversion将允许您将变更列表与每组文件关联,而不必记住每组文件中的每个文件。大多数以一组文件为目标的命令现在也将接受--changelist选项,该选项根据变更列表的成员过滤这些目标。可以使用新的Changelist子命令编辑Changelist成员身份。

很难确保每个单独更改的提交都会产生可构建的系统


我强烈建议一次只做一件事,并分别提交每个问题。

内容警告:我的印象,仅基于偶然的认识:

如果您需要对同时但在某种意义上不相关的更改进行微观管理,那么您可能需要进行调查,与svn、git或mercurial等系统相比,调查的重点正好相反

在DARC中,补丁是关键元素,给定分支的状态实际上只是一组补丁的总和。此模型可能适合您正在尝试的操作,但显然@wcoenen关于最佳实践的警告是正确的。对于每一组补丁,您都需要确保构建(不管它可能由什么组成)没有被破坏


顺便说一句,你是伊奥甘吗?我想你是吧

在bzr中,您可以使用shelve/unshelve命令从文件中获取一些更改,然后再返回,或者使用lowe插件轻松管理一组相关补丁。但这两种方法都不能解决您的原始请求,我怀疑任何风投公司都不能这样做。

原始请求听起来很像“樱桃采摘”:手动选择“差异”的片段以包含在新提交中。至少Git和DARC支持这一点。对于emacs+git,我非常喜欢它。

这对我来说很好,“破坏构建”的概念不适用。我希望svn变更列表能够在子文件的基础上工作。看起来有可能切换到git,除非在mercurial或bazaar中也提供此功能?不,我不认为mercurial或bazaar直接支持此功能。你必须改变你的工作流程才能得到同样的效果。当你这样做的时候,你当然可以测试改变。您只需在提交后对其进行测试。我有一个工具,可以确保一个范围内的每个提交都通过所有测试,并在推送一个系列之前使用这些测试。@Dustin:有趣。当其中一个提交测试失败时,您会怎么做?Mercurial使用内置的mq(Mercurial queues)扩展明确支持这种类型的工作流()不,不要认为我就是您所想到的EoghanM!可构建系统的概念可能不会出现在图片中,例如,CSS文件可能有多个独立的修改,这些修改会影响站点上的不同页面。或者是一个包含多个条目的文本文件,用于不同的更改。谢谢-这正是我要找的工具