Mercurial: "untracked file in working directory differs from file in requested revision"?
MercurialMergeMercurial Problem Overview
Can anyone tell me what this Mercurial error means?
> untracked file in working directory > differs from file in requested > revision
This occurred when doing an hg fetch:
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..
I am not clear what this even means. ??
Mercurial Solutions
Solution 1 - Mercurial
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 moveda/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.
Solution 2 - Mercurial
I got around this by running hg update --clean
Solution 3 - Mercurial
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.
Solution 4 - Mercurial
Just accept the error dialog then tick Discard local changes, no backup
And you should be good, it will overwrite any untracked local files...
Solution 5 - Mercurial
If using TortoiseHG you can check the "Discard local changes, no backup" option in the Update window.