svn - Mercurial/SVN : Multiple commits from one set of differences?

标签 svn version-control mercurial tortoisehg

假设我正在开发一个项目,其中包含文件 A、B 和 C。在添加功能、修改 A 和 B 时,我已经添加了一半,然后才意识到有些东西需要清理。鉴于这种情况,最好中断功能工作来进行清理。这涉及到对 A、B 和 C 进行更改。

完成该功能后,我想 checkin 我的代码。可以这么说,有两组不同的更改:用于添加功能的更改和用于清理的更改。它们在任何方面都不冲突。是否可以单独提交这些更改,以获得干净的 repo 历史记录?

或者,如果我决定在完成后立即 checkin 清理工作,但不想 checkin A 和 B 中已完成一半的功能,该怎么办?

我不确定是否可以在 Mercurial 或 SVN 中执行此操作,但我有兴趣了解其中任何一个。 (TortoiseHg 怎么样?)

最佳答案

是的,您可以使用 Mercurial 的 hg record 来做到这一点。它被认为是一个扩展,但它与常规包一起分发。基本上,您运行该命令,它会询问您有关每个文件的信息(您想从这里提交任何内容吗?)。如果您回答"is",它会询问您是否要提交每个 block (行组)。您还可以在特定文件上运行它。例如:

hg record A B C

在这种情况下,它不会费心询问您对其他文件的更改。

每个帅哥的选项是:

y - record this change
n - skip this change

s - skip remaining changes to this file
f - record remaining changes to this file

d - done, skip remaining changes and files
a - record all changes to all remaining files
q - quit, recording no changes

? - display help

编辑:TortoiseHg 有一个名为 Change Selection 的集成功能,基本上相当于 record 的 GUI。

关于svn - Mercurial/SVN : Multiple commits from one set of differences?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3225495/

相关文章:

mercurial - 如何解决 .hgtags 冲突?

mercurial - 在 Mercurial 中撤销多个变更集的最佳方法是什么?

svn - 如何在 Subversion 中查找文件复制的路径

iphone - 无法使用 xcode 5 check out svn,如果启用 svn,Xcode 会崩溃

svn - AnkhSVN 提交非常慢

java - 有没有一个工具可以按提交日期和提交人员查看 Subversion 中所有项目的 checkin 情况

java - Eclipse 项目到 mercurial

svn - 如何鼓励更频繁地提交到 SVN

mercurial - 使用 Mercurial SCM 进行分支

git - 将 SVN 存储库移至 Bitbucket