--- a/mercurial/cmdutil.py Mon Mar 21 04:01:29 2016 +0000
+++ b/mercurial/cmdutil.py Thu Mar 17 18:19:36 2016 +0000
@@ -2404,7 +2404,7 @@
return ret
-def remove(ui, repo, m, prefix, after, force, subrepos):
+def remove(ui, repo, m, prefix, after, force, subrepos, warnings=None):
join = lambda f: os.path.join(prefix, f)
ret = 0
s = repo.status(match=m, clean=True)
@@ -2412,6 +2412,12 @@
wctx = repo[None]
+ if warnings is None:
+ warnings = []
+ warn = True
+ else:
+ warn = False
+
for subpath in sorted(wctx.substate):
def matchessubrepo(matcher, subpath):
if matcher.exact(subpath):
@@ -2425,10 +2431,11 @@
sub = wctx.sub(subpath)
try:
submatch = matchmod.subdirmatcher(subpath, m)
- if sub.removefiles(submatch, prefix, after, force, subrepos):
+ if sub.removefiles(submatch, prefix, after, force, subrepos,
+ warnings):
ret = 1
except error.LookupError:
- ui.status(_("skipping missing subrepository: %s\n")
+ warnings.append(_("skipping missing subrepository: %s\n")
% join(subpath))
# warn about failure to delete explicit files/dirs
@@ -2446,10 +2453,10 @@
if repo.wvfs.exists(f):
if repo.wvfs.isdir(f):
- ui.warn(_('not removing %s: no tracked files\n')
+ warnings.append(_('not removing %s: no tracked files\n')
% m.rel(f))
else:
- ui.warn(_('not removing %s: file is untracked\n')
+ warnings.append(_('not removing %s: file is untracked\n')
% m.rel(f))
# missing files will generate a warning elsewhere
ret = 1
@@ -2459,16 +2466,16 @@
elif after:
list = deleted
for f in modified + added + clean:
- ui.warn(_('not removing %s: file still exists\n') % m.rel(f))
+ warnings.append(_('not removing %s: file still exists\n') % m.rel(f))
ret = 1
else:
list = deleted + clean
for f in modified:
- ui.warn(_('not removing %s: file is modified (use -f'
+ warnings.append(_('not removing %s: file is modified (use -f'
' to force removal)\n') % m.rel(f))
ret = 1
for f in added:
- ui.warn(_('not removing %s: file has been marked for add'
+ warnings.append(_('not removing %s: file has been marked for add'
' (use forget to undo)\n') % m.rel(f))
ret = 1
@@ -2484,6 +2491,10 @@
util.unlinkpath(repo.wjoin(f), ignoremissing=True)
repo[None].forget(list)
+ if warn:
+ for warning in warnings:
+ ui.warn(warning)
+
return ret
def cat(ui, repo, ctx, matcher, prefix, **opts):