Use absolute paths in addremove.
This is more consistent with other places in the code, which only use
the "relpath" returned by cmdutil.walk for display purposes.
--- a/mercurial/cmdutil.py
+++ b/mercurial/cmdutil.py
@@ -186,13 +186,15 @@ def addremove(repo, pats=[], opts={}, wl
add, remove = [], []
mapping = {}
for src, abs, rel, exact in walk(repo, pats, opts):
+ target = repo.wjoin(abs)
if src == 'f' and repo.dirstate.state(abs) == '?':
add.append(abs)
mapping[abs] = rel, exact
if repo.ui.verbose or not exact:
repo.ui.status(_('adding %s\n') % ((pats and rel) or abs))
- islink = os.path.islink(rel)
- if repo.dirstate.state(abs) != 'r' and not islink and not os.path.exists(rel):
+ islink = os.path.islink(target)
+ if (repo.dirstate.state(abs) != 'r' and not islink
+ and not os.path.exists(target)):
remove.append(abs)
mapping[abs] = rel, exact
if repo.ui.verbose or not exact: