我有一个文件,该文件已使用xcopy复制到hg仓库中的文件顶部。我实际上已经用不同的文件完成了1000多次,没有问题。当我复制此特定文件并尝试提交时,我收到“未更改”消息。
文件肯定已更改。如果我在记事本中打开它,则不进行任何更改然后重新保存它,Mercurial会识别出这些更改。如果我在Notepad ++中打开它,请对其进行编辑,然后撤消所做的编辑然后保存,Mercurial会识别出这些更改。
如果我重新启动该过程(将文件复制到新的hg存储库中并提交),则每次都会在同一时间失败。这些文件有些问题,但是呢?我以为可能是修改日期,因为它们是完全相同的毫秒,但是在编辑我的复制文件以将修改日期添加1分钟之后,它仍然无法正常工作。
是什么原因造成的?我应该找什么?
hg status
hg status -A
C file.txt
hg commit file.txt
nothing changed
在Windows上,使用未启用任何扩展名的Mercurial 2.2.2(已知intify扩展名会导致类似的问题)
答案 0 :(得分:1)
看来Mercurial(至少是2.2.2)仅在文件被编辑/替换时检查文件。它通过检查修改日期来实现。由于我的文件具有完全相同的时间戳,因此它不检查内容。
当我编辑时间戳时,它与众不同,这只会更改元数据,而不会更改文件本身。因此,Mercurial并未收到有关更改的通知,因此它从未看到并看到时间戳是不同的。
解决方案:在复制文件之前(或将其复制到其他位置,进行编辑,然后复制到存储库中)更改新文件的时间戳,使Mercurial可以看到时间戳已更改,然后将检查其内容。发生了什么变化。