2

假设我正在处理一个项目,其中包含文件 A、B 和 C。在我意识到需要清理之前,我已经完成了添加功能、修改 A 和 B 的一半。由于这种情况,最好中断功能工作以进行清洁。这涉及对 A、B 和 C 进行更改。

完成该功能后,我想签入我的代码。可以这么说,有两组不同的更改:用于添加功能的更改和用于清理的更改。它们不会以任何方式发生冲突。是否可以单独提交这些更改,以获得干净的回购历史?

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

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

4

2 回答 2

4

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

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 有一个称为更改选择的集成功能,它基本上是一个 GUI 等价于record.

于 2010-07-12T02:28:50.633 回答
1

crecord扩展提供了一个很好的 curses 界面,让您可以准确地选择要提交的待处理更改。

于 2010-07-12T02:29:56.593 回答