2010-07-12 31 views
2

假设我正在开发一个项目,其中包含文件A,B和C.在我意识到某些需要清理之前,我通过添加一个功能,修改A和B来获得一半的功能。由于这种情况,最好中断清理功能。这涉及在A,B和C中进行更改。Mercurial/SVN:来自一组差异的多次提交?

完成该功能后,我想检查我的代码。有两套不同的更改,可以这么说:用于添加功能的那些和用于清理的那些。他们不以任何方式冲突。是否可以单独提交这些更改,以获得清洁的回购历史记录?

或者,如果我决定尽快检查清理过程,但不想检查A和B的中途完成功能,该怎么办?

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

回答

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 

EDIT:TortoiseHg具有称为Change Selection集成特征,这基本上是一个GUI等效的record

1

crecord扩展提供了一个很好的诅咒界面,让你选择你要提交什么挂起更改。

+0

有趣。这与TortoiseHg如何整合? – 2010-07-12 02:30:46

+0

@Rosarch:它没有。 – sth 2010-07-12 02:41:08