“未跟踪的文件在工作目录中与要求修订的文件不同”?

有人能告诉我这个 Mercurial 错误是什么意思吗?

未被追踪的工作目录文件 与请求的文件不同 修订

这是在执行 hg 提取时发生的:

C:\myapp>hg fetch ssh://hg/myapp-v1
pulling from ssh://hg/myapp-v1
searching for changes
adding changesets
adding manifests
adding file changes
added 93 changesets with 693 changes to 78 files (+1 heads)
updating to 797:0df7dbe7dc06
196 files updated, 0 files merged, 196 files removed, 0 files unresolved
merging with 704:edb7765768c6
abort: untracked file in working directory differs from file in requested revision: 'a/b/c/d.java'

From what I can tell this file (a/b/c/d.java) does not match any paths configured in .hgignore. And this specific file is also identical in the two (myapp & myapp-v1) repositories..

我都不知道这是什么意思?

55975 次浏览

It's telling you you already have a file named a/b/c/d.java in your local working directory of the myapp repo, but it hasn't been added (tracked), and fetch isn't willing to overwrite it when updating/merging.

Things you can do are ether:

  • Move your copy of a/b/c/d.java out of the way and then do the pull/update. After that compare your moved a/b/c/d.java to the one fetch brings down.

or

  • hg add a/b/c/d.java, hg commit a/b/c/d.java, and then pull / merge

The former works because there's no longer a file in the way, and the later works because your copy is tracked so Mercurial can merge them.

Also, you should consider stopping using fetch. It combines pull and update and merge for you, which is just not a safe way to be. In this case your pull would have succeeded and both update and merge would have given you much more helpful messages.

I tried Ry4an's answer (of deleting the file) and it still did not work, so I ran a purge and that got rid of all traces such that it worked after. Just in case somebody is looking for an alternative solution.

I got around this by running hg update --clean

If using TortoiseHG you can check the "Discard local changes, no backup" option in the Update window.

Just accept the error dialog then tick Discard local changes, no backup

enter image description here

And you should be good, it will overwrite any untracked local files...