小编adt*_*eff的帖子

hg显示修改过的文件没有变化,为什么会这样?

我的问题是:什么可能导致Mercurial(当通过"status"或TortoiseHgWorkbench)文件在未更改时指示为"已修改"?

情况就是这样:我有一台Linux机器的本地存储库.我只使用Linux机器上的存储库.但是,我确实在Windows机器上有一个存储库(和工作文件)的精确副本(我通过闪存驱动器同步,使用BeyondCompare).为了我最好的回忆,我从不在Windows机器上调用mercurial,尽管它安装在那里.

我最近想在Linux机器上进行提交,并且我不希望显示的许多文件被列为"已修改".我做了一个visual diff(使用BeyondCompare),它表明工作目录副本与存储库中的父项"二进制相同".TortoiseHgWorkbench显示文件"已修改",差异窗口显示整个文件,绿色,(好像存储库有一个空文件,我猜).在有问题的文件中,文件系统上的文件日期是几个月,而我上次提交(我提交所有已更改的文件)是几个星期前.一些未更改的文件显示为"已修改",但有些文件未显示.我之前从未见过这种行为,所以我有点困惑.

我在存储库上运行了"hg verify",并没有注意到任何有趣的内容.

我想这不是什么大问题,因为工作目录中的所有文件都是完整的,如果我要提交文件(即使它们没有改变),我也不确定会有什么损害.但我很想知道发生了什么.

提前感谢任何想法,寻找什么.

[编辑]

还没有找到根本原因(文件权限和访问日期不变)但是@ barjak的回复指向了我发现这个的方向:当"hg diff -g"没有时,为什么"hg status"显示更改的文件?(一个亲本).我的情况与那里描述的相同(hg diff和hg diff --git仅显示真正已更改的文件,而hg status显示一些未更改的文件).顺便说一下,我正在使用Hg 2.6.

[编辑]

如果它对任何人都有帮助,这就是我回到正常存储库的方式:

在一个shell中:

cd src
hg diff --git > ../junk
grep "\-\-git" ../junk
Run Code Online (Sandbox Code Playgroud)

在tortoiseHgWorkbench

uncheck all files marked "M"
check all files indicated in the grep results above (i.e., have real diffs)
commit
Run Code Online (Sandbox Code Playgroud)

在一个shell中:

hg revert --all
Run Code Online (Sandbox Code Playgroud)

然后清理工作目录(恢复 - 所有生成一些已解散的文件.还重置一些文件日期(我是唯一使用此存储库的人和文件日期对我有用.是的,有一个Hg扩展名来恢复文件日期但是我还没有安装它.

这个过程让我再次排队.

mercurial tortoisehg

11
推荐指数
1
解决办法
3633
查看次数

还原 - 在TortoiseHg Workbench中的所有内容

简单的问题:有没有办法恢复 - 来自TortoiseHg工作台?我看到如何还原单个文件.理想情况下,我可以点击修订版,然后从鼠标右键菜单中找到"全部恢复"项目.

我在Ubuntu盒子上使用TortoiseHg 2.8.

编辑我应该提供更多关于我的问题的细节,以提供一些背景信息.让我来描述一下特定的用例:

我想将我的工作目录恢复到过去提交的状态,这样我就可以生成我知道"好"的可执行文件的输出.一旦我生成了输出,我想回到提示并继续我的开发,保持这个历史线性.从命令行,我做了"hg revert --all --rev 22",生成输出,然后"hg revert --all",这就是我想要的."hg update"将创建一个带分支的历史记录(如果我理解正确的话).FWIW有在TortoiseHg一个"更新"按钮(在显示文件列表框),以及在给定的一个修订版鼠标右键菜单项.

mercurial tortoisehg revert

7
推荐指数
1
解决办法
5841
查看次数

标签 统计

mercurial ×2

tortoisehg ×2

revert ×1