Mercurial如何告诉文件被修改?
我问的原因是因为当我运行hg status
时,它告诉我几个文件被修改。
但是,当我运行hg diff
时,报告中没有任何更改。
我有一个理论为什么会发生这种情况:( 但我不是正面的)
我正在使用内置Mercurial支持的NetBeans。当我编辑文件时,它会将其显示为已修改,但如果我撤消(而不是还原)这些更改并保存它,NetBeans会告诉我没有本地更改。因此,我猜测NetBeans使用差异检查修改,而Mercurial正在使用其他内容,例如 modification-date 。
这是正确的还是其他原因?
答案 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
仅显示符合补丁的差异,这些差异不会显示权限更改。