gpt4 book ai didi

mercurial - hg 显示已修改但未更改的文件,为什么会这样?

转载 作者:行者123 更新时间:2023-12-04 01:56:54 24 4
gpt4 key购买 nike

我的问题是:什么可能导致 Mercurial(通过“状态”或 TortoiseHgWorkbench)在文件未更改时将其指示为“已修改”?

情况是这样的:我在 Linux 机器上有一个本地存储库。我只使用 Linux 机器上的存储库。但是,我确实在 Windows 机器上有一个存储库(和工作文件)的精确副本(我通过闪存驱动器同步,使用 BeyondCompare)。据我所知,我从来没有在 Windows 机器上调用 mercurial,尽管它安装在那里。

最近想在Linux机器上做一个commit,很多没想到会出现的文件都被列为“已修改”。我做了一个视觉差异(使用 BeyondCompare),它表明工作目录副本与存储库中的父目录“二进制相同”。 TortoiseHgWorkbench 显示文件“已修改”,差异窗口显示整个文件,呈绿色(我猜好像存储库有一个空文件)。在有问题的文件上,文件系统上的文件日期是几个月前的,而我上次提交(我提交了所有更改的文件)是几周前。一些未更改的文件显示为“已修改”,但有些则没有。我以前从未见过这种行为,所以我有点困惑。

我在存储库上运行了“hg verify”,但没有发现任何有趣的东西。

我想这没什么大不了的,因为工作目录中的所有文件都完好无损,如果我要提交这些文件(即使它们没有改变),我不确定会不会有什么坏处。但我很想知道发生了什么。

在此先感谢您提供有关查找内容的任何想法。

[编辑]

仍然没有找到根本原因(文件权限和访问日期未更改),但 @barjak 的回复为我指明了发现此问题的方向:Why does "hg status" show changed files when "hg diff -g" doesn't? (One parent) .我的情况和那里描述的一样(hg diff 和 hg diff --git 只显示真正改变的文件,而 hg status 显示一些未更改的文件)。顺便说一句,我使用的是 Hg 2.6。

[编辑]

如果它对任何人有帮助,以下是我回到正常存储库的方法:

在 shell 中:

cd src
hg diff --git > ../junk
grep "\-\-git" ../junk

在龟HgWorkbench
uncheck all files marked "M"
check all files indicated in the grep results above (i.e., have real diffs)
commit

在 shell 中:
hg revert --all

然后清理工作目录(revert --all 生成了一些已失效的文件。还重置了一些文件日期(我是唯一使用此存储库的人,文件日期对我很有用。是的,有一个 Hg 扩展名可以恢复文件日期,但是我还没有安装它)。

这个过程让我重新排队。

最佳答案

当 Unix 权限改变时,文件也可以被标记为已修改。
试试 hg diff -g检查权限。

关于mercurial - hg 显示已修改但未更改的文件,为什么会这样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19168096/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com