Mercurial反斜杠正斜线问题

时间:2013-03-26 14:32:13

标签: mercurial backslash

我们在mercurial中有一个使用hg convert创建的子存储库。在我们注意到我们有两个版本的原始转换文件之前,大约三个星期我们让人们修改并检查更改(在Windows下使用Tortoise):

e.g。

Dir\Project/FileName.ext
Dir/Project/FileName.ext

我已经尝试了hg renamehg forgethg remove,但是当我们似乎总是两个文件都消失了,或者两个文件都存在时。我也看过案例折叠建议,但它们似乎并不适用。

任何有关修复的建议都将受到赞赏。如果我们丢失了不会成为世界末日的\版本的历史。

由于

1 个答案:

答案 0 :(得分:0)

我已经看到这种情况发生在已转换的SVN存储库中(使用hgsubversion,但我敢打赌hg convert有同样的问题)。在我看到它的情况下,路径有一个svn属性更改,显然导致存储在svn中的“包含反斜杠的文件名”(路径)。

在第一种情况下,我看到它是一个目录路径,导致我立即遇到问题 - 在Windows上使用目录路径创建了一个零长度文件,然后在更新Mercurial中止,因为它无法创建同名目录。

我希望创建双重条目的序列类似于:

  1. 更新包含带有反斜杠的文件路径的修订

  2. 新文件显示为未跟踪,因为Mercurial清单当前包含带反斜杠的路径,但在查看工作目录时,它会将所有文件路径规范化为正斜杠 - 因此它不会出现在清单中。 / p>

  3. 用户添加“新”文件。

  4. 在后续更新中,两个路径都会更新,但会在工作目录中覆盖另一个路径。如果你很幸运,那么新版本就是最终出现在工作目录中的版本。

  5. 您可能无法在Windows上解决此问题,但您应该能够通过单引用文件名来删除Linux(或其他类似UNIX的操作系统,具有区分大小写的文件系统)上的反斜杠版本,例如: hg rm 'Dir\Project\FileName.ext'。如果您更新到Linux上存在问题的修订版,您应该会在工作目录的根目录中看到实际命名为'Dir\Project\FileName.ext'的文件。

    只需确保反斜杠版本是应该删除的版本 - 如果不是,您可能需要手动将它们合并在一起以获得所需的结果。

相关问题