--- a/mercurial/cmdutil.py Mon Sep 13 13:09:09 2010 +0200
+++ b/mercurial/cmdutil.py Mon Sep 13 13:09:11 2010 +0200
@@ -1280,6 +1280,22 @@
yield change(rev)
return iterate()
+def add(ui, repo, match, dryrun):
+ bad = []
+ oldbad = match.bad
+ match.bad = lambda x, y: bad.append(x) or oldbad(x, y)
+ names = []
+ for f in repo.walk(match):
+ exact = match.exact(f)
+ if exact or f not in repo.dirstate:
+ names.append(f)
+ if ui.verbose or not exact:
+ ui.status(_('adding %s\n') % match.rel(f))
+ if not dryrun:
+ rejected = repo[None].add(names)
+ bad.extend(f for f in rejected if f in match.files())
+ return bad
+
def commit(ui, repo, commitfunc, pats, opts):
'''commit the specified files or all outstanding changes'''
date = opts.get('date')
--- a/mercurial/commands.py Mon Sep 13 13:09:09 2010 +0200
+++ b/mercurial/commands.py Mon Sep 13 13:09:11 2010 +0200
@@ -46,22 +46,9 @@
Returns 0 if all files are successfully added.
"""
- bad = []
- names = []
m = cmdutil.match(repo, pats, opts)
- oldbad = m.bad
- m.bad = lambda x, y: bad.append(x) or oldbad(x, y)
-
- for f in repo.walk(m):
- exact = m.exact(f)
- if exact or f not in repo.dirstate:
- names.append(f)
- if ui.verbose or not exact:
- ui.status(_('adding %s\n') % m.rel(f))
- if not opts.get('dry_run'):
- rejected = repo[None].add(names)
- bad += [f for f in rejected if f in m.files()]
- return bad and 1 or 0
+ rejected = cmdutil.add(ui, repo, m, opts.get('dry_run'))
+ return rejected and 1 or 0
def addremove(ui, repo, *pats, **opts):
"""add all new files, delete all missing files