hg status returns 空白但文件已更改
hg status returns blank but file has changed
我有一个文件,我已使用 xcopy 将其复制到我的 hg 存储库中的一个文件的顶部。我已经用不同的文件完成了 1000 次,没有问题。当我复制这个特定文件并尝试提交时,我收到 'nothing changed' 消息。
该文件确实已更改。如果我在记事本中打开它,不做任何更改然后重新保存它,mercurial 会识别这些更改。如果我在 Notepad++ 中打开它,编辑它,撤消编辑然后保存它,mercurial 会识别这些更改。
如果我重新启动该过程(将文件复制到新的 hg 存储库并提交),它每次都会在同一点失败。这些文件有些东西,但是什么?我认为它可能是修改日期,因为它们是完全相同的毫秒数,但在编辑我复制的文件以在修改日期后添加 1 分钟后,它仍然不起作用。
这是什么原因造成的?我应该寻找什么?
hg status
hg status -A
C file.txt
hg commit file.txt
nothing changed
在 Windows 上,使用未启用扩展的 Mercurial 2.2.2(已知 inotify 扩展会导致类似问题)
Mercurial(至少 2.2.2)似乎只在获取 edited/replaced 时才检查文件。它通过检查修改日期来做到这一点。由于我的文件具有完全相同的时间戳,因此它没有检查内容。
当我编辑时间戳使其不同时,这只会更改元数据而不是文件本身。所以 Mercurial 没有收到更改通知,所以它从未查看并发现时间戳不同。
解决方案:在复制文件之前更改新文件的时间戳(或将其复制到其他地方,编辑它,然后复制到存储库)允许 Mercurial 看到时间戳已更改,然后它会检查更改内容。
我有一个文件,我已使用 xcopy 将其复制到我的 hg 存储库中的一个文件的顶部。我已经用不同的文件完成了 1000 次,没有问题。当我复制这个特定文件并尝试提交时,我收到 'nothing changed' 消息。
该文件确实已更改。如果我在记事本中打开它,不做任何更改然后重新保存它,mercurial 会识别这些更改。如果我在 Notepad++ 中打开它,编辑它,撤消编辑然后保存它,mercurial 会识别这些更改。
如果我重新启动该过程(将文件复制到新的 hg 存储库并提交),它每次都会在同一点失败。这些文件有些东西,但是什么?我认为它可能是修改日期,因为它们是完全相同的毫秒数,但在编辑我复制的文件以在修改日期后添加 1 分钟后,它仍然不起作用。
这是什么原因造成的?我应该寻找什么?
hg status
hg status -A
C file.txt
hg commit file.txt
nothing changed
在 Windows 上,使用未启用扩展的 Mercurial 2.2.2(已知 inotify 扩展会导致类似问题)
Mercurial(至少 2.2.2)似乎只在获取 edited/replaced 时才检查文件。它通过检查修改日期来做到这一点。由于我的文件具有完全相同的时间戳,因此它没有检查内容。
当我编辑时间戳使其不同时,这只会更改元数据而不是文件本身。所以 Mercurial 没有收到更改通知,所以它从未查看并发现时间戳不同。
解决方案:在复制文件之前更改新文件的时间戳(或将其复制到其他地方,编辑它,然后复制到存储库)允许 Mercurial 看到时间戳已更改,然后它会检查更改内容。