Mercurial如何告诉文件被修改?

时间:2011-05-18 18:39:02

标签: mercurial

Mercurial如何告诉文件被修改?

我问的原因是因为当我运行hg status时,它告诉我几个文件被修改。 但是,当我运行hg diff时,报告中没有任何更改。

我有一个理论为什么会发生这种情况:( 但我不是正面的

我正在使用内置Mercurial支持的NetBeans。当我编辑文件时,它会将其显示为已修改,但如果我撤消(而不是还原)这些更改并保存它,NetBeans会告诉我没有本地更改。因此,我猜测NetBeans使用差异检查修改,而Mercurial正在使用其他内容,例如 modification-date

这是正确的还是其他原因?

2 个答案:

答案 0 :(得分:4)

Mercurial不会使用修改日期来确定状态。这可以通过一个简单的实验来验证:

hg init
echo "This is a test" > test.txt
hg commit -Am "commit"
touch test.txt
hg status

执行状态检查的代码位于dirstate.py。如果dirstate不确定文件的状态(例如,因为只有修改时间不同,那么它会将其传递到localrepo.status以进行进一步分析,如here所示。

hg help status文字有一些可能有用的线索:

  

状态似乎不同意   如果权限已更改,则为diff   合并已经发生。标准差异   格式不报告权限   更改和差异仅报告更改   相对于一个合并父母。

运行hg diff时,是否指定了任何命令行选项?

答案 1 :(得分:2)

文件的权限是否可以更改?试试hg diff --git,它显示支持权限和二进制文件的git样式的扩展差异。默认情况下,hg diff仅显示符合补丁的差异,这些差异不会显示权限更改。