Mercurial中各种文件的特定提交消息

时间:2011-08-01 15:56:23

标签: mercurial

在My Mercurial Repository中,我有4个我修改过的文件,

当我进行提交时,提交消息应用于我修改的所有文件,但是,有任何形式为我在提交屏幕中修改的每个文件写一条特定的提交消息吗?

3 个答案:

答案 0 :(得分:4)

理想情况下,每个变更集都应包含一些特定的更改,无论是通过纠正文件中的单个行来修复小错误,还是在整个代码库中更改函数签名的大小。

这允许您稍后将变更集移植到不同的分支,这很容易在您的变更集没有被不相关的东西污染时。

(顺便说一句,这是现代DVCS(如Mercurial或Git,跟踪更改)和旧系统(如SVN,跟踪修订)之间的主要区别。)

如果您觉得需要为每个文件编写单独的注释,那么可能意味着您实际上一次提交几个无关的更改,这是不好的实践。

另一方面,如果不是这样,你当然可以写一条多行信息:

User can no longer add the same product twice (issue123)

add_product.py: added server-side validation
scripts.js: added client-side validation

答案 1 :(得分:1)

如果您使用的是命令行,则可以通过在hg commit命令行上传递对单个文件进行更改来提交:

> hg st
M file1.cpp
M file1.h
M file2.cpp
M file2.h
> hg commit -m "Some changes" file1.cpp file1.h
> hg st
M file2.cpp
M file2.h

你可以使用TortoiseHg做同样的事情,只需“检查”你想要在thg commit窗口中签入的文件 - 或者更准确地说,取消选中那些你不想提交的文件。

但请注意,这将创建多个更改集,每个提交一个。如果这不是你想要的,那么我同意Helgi。

在TortoiseHg的早期版本中(当使用tk编写时,不久之前),实际上可以选择对文件进行更改的单个“块”并单独提交。然而,这在目前的版本中是不可用的,据我所知,暂时没有计划。

答案 2 :(得分:0)

实际上,提交消息适用于变更集,其中包含对您修改的文件的更改。

如果要解决每个文件的更改,可以制作多行消息:

new features, fixed bugs, etc.
file1.txt: fixed bug 1234
file2.txt: refactored body of Foobar()
file3.txt: did Rot13 on the entire file, twice
file4.txt: added overload of Bar() to except a second Foo object

我建议不要为每个文件执行更改集,即使这是可能的。