VisualHG使用[R]标记文件,但TortoiseHg在提交时仍会删除/添加文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VisualHG使用[R]标记文件,但TortoiseHg在提交时仍会删除/添加文件相关的知识,希望对你有一定的参考价值。

我正在使用Visual Studio 2010与VisualHG和TortoiseHg。我注意到如果我使用解决方案资源管理器移动或重命名文件,文件旁边会出现一个小的[R],我认为它表示“已重命名”。但是,如果我在TortoiseHg中提交我的更改,它不会执行重命名 - 它会删除旧文件并添加新文件。这会导致文件的所有历史记录丢失(并且不必要地使repo膨胀)。

有没有办法让它正常工作?如果没有使用TortoiseHg正确协调文件重命名,那么使用VisualHG真的没什么好处。

此外,我应该提到TortoiseHg有一个“在解决方案中检测复制/重命名”对话框,但我似乎无法让它工作。首先,我似乎无法在TortoiseHg Workbench中找到任何按钮或菜单项来启动它。其次,如果我通过输入thg guess启动使用终端,则无法在“无人监视的文件”框中显示任何路径(并且没有明显的方法可以添加一个)。当我尝试这个时,我确保导航到正确的目录(我的解决方案目录,其中包含我的.hg repo)。我也试过thg guess solution_directory_path,但这没有任何区别。如果此对话框是我的问题的可能解决方案,您如何实际使用它?

编辑

我终于想通过右键单击Windows资源管理器中的解决方案文件夹,然后选择TortoiseHg> Guess Renames来查看“在解决方案中检测复制/重命名”对话框。但是,当我这样做时,在Unrevisioned Files框中没有出现任何路径,所以我仍然无法开始使用此对话框。 (即,我甚至无法在these instructions中执行第1步。)

编辑2

我在VisualHG CodePlex问题页面上发现了一个错误报告,我认为这解释了我遇到的问题:https://visualhg.codeplex.com/workitem/99。不过,我有点惊讶它没有得到更多的选票。

答案

在进一步调查之后,我意识到,即使文件在TortoiseHg Workbench中显示为已删除/添加,它们实际上已正确重命名。

如果在Workbench中单击其旁边带有“+”的文件,如果该文件实际上是重命名,则代码窗口的标题将显示如下内容:

Project / Folder / RenamedFile.cs(从Project / Folder / OriginalFile.cs重命名)

在仔细阅读了Mercurial正在做的事情后,听起来它实际上是删除和添加,只是添加的文件保留了对原始文件的引用,因此您仍然可以查看重命名的历史记录。

我不确定这是否解释了我在“解决方案中检测副本/重命名”时遇到的问题,但我现在对正确处理重命名感到满意。

以上是关于VisualHG使用[R]标记文件,但TortoiseHg在提交时仍会删除/添加文件的主要内容,如果未能解决你的问题,请参考以下文章

JSON 中位于位置 0(...) 的意外标记 r

SVN文件加锁

R语言XML文件

R语言 XML文件

使用 R googlemap 包按集群收集标记

xml解析开始标记期望R