abort:工作目录中未跟踪的文件与请求的修订版中的文件不同:'。hgignore'

时间:2011-03-09 07:14:50

标签: mercurial hgignore

我正在尝试提取一些文件和目录,并且我收到以下消息:

当我查看我的存储库时,我可以看到文件已经下载但所有文件都包含_作为前缀,甚至文件和文件夹的名称都包含_

requesting all changes 
adding changesets 
adding manifests 
adding file changes 
added 1094 changesets with 4304 changes to 1071 files abort:
untracked file in working directory differs from file in requested revision: '.hgignore' [command interrupted]

有什么问题?

2 个答案:

答案 0 :(得分:9)

我认为您已在工作目录中创建了.hgignore,但未将其添加到存储库(hg add)。此文件“未跟踪”。

来自另一个克隆的其他人也添加了此文件,已提交并推送它。现在,当您尝试更新工作目录时,Mercurial会尝试添加此文件,但会在工作目录中看到一个同名的文件,该文件未跟踪且不同。

您的问题有两个解决方案:

  1. 备份.hgignore文件,执行更新并在必要时添加备份中的差异
  2. 使用hg add将您自己的文件添加到存储库,然后重新运行更新。可能需要在更新之前提交文件。
  3. 我建议使用第一种解决方案。

答案 1 :(得分:0)

如果您说存储库中的文件有_作为前缀,那么您在.hg目录中向下看不是吗?这是Mercurial本身的数据存储,其中的文件是revlogs,而不是你的文件。在.hg之外,您将拥有一个工作目录,其中的文件是您期望的实际文件。您现在没有收到其中一个,因为hg update拒绝更新工作目录,因为这样做会覆盖您未经注册的.hgignore文件。

您运行的是什么完全命令?看起来它正在执行hg pull后跟hg update所以我猜hg clone但是如果你已经有一个.hgignore,那就不是正确的命令。如果您使用的是hg pull -uhg fetch,则应该使用hg pull来获取更改集。然后你可以:

hg add .hgignore  # add the hg ignore file you already have that's untracked
hg commit -m .hgignore  # commit the .hgignore file you just added
hg merge  # merge your new commit (.hgignore) with the changesets you just pulled down.