11

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

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

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]

怎么了?

4

2 回答 2

9

我认为您已经.hgignore在工作目录中创建了一个,而没有将其添加到存储库 ( hg add)。该文件是“未跟踪的”。

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

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

  1. 备份您的 .hgignore 文件,进行更新并在必要时添加备份中的差异
  2. 使用 将您自己的文件添加到存储库hg add,然后重新运行更新。可能需要在更新之前提交文件。

我会建议使用第一个解决方案。

于 2011-03-09T12:25:54.840 回答
0

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

您正在运行什么确切的命令?看起来它正在执行 ahg pull后跟 anhg update所以我猜hg clone,但如果你已经有一个.hgignore躺在周围,那不是正确的命令。相反,如果您正在使用hg pull -u或者hg 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.
于 2011-03-09T16:49:20.970 回答