Mercurial > public > mercurial-scm > hg
comparison mercurial/cmdutil.py @ 12270:166b9866580a
add: recurse into subrepositories with --subrepos/-S flag
author | Martin Geisler <mg@lazybytes.net> |
---|---|
date | Mon, 13 Sep 2010 13:09:20 +0200 |
parents | 877236cdd437 |
children | e0ee3e822a9a |
comparison
equal
deleted
inserted
replaced
12269:877236cdd437 | 12270:166b9866580a |
---|---|
1278 prepare(ctx, fns) | 1278 prepare(ctx, fns) |
1279 for rev in nrevs: | 1279 for rev in nrevs: |
1280 yield change(rev) | 1280 yield change(rev) |
1281 return iterate() | 1281 return iterate() |
1282 | 1282 |
1283 def add(ui, repo, match, dryrun): | 1283 def add(ui, repo, match, dryrun, listsubrepos, prefix): |
1284 join = lambda f: os.path.join(prefix, f) | |
1284 bad = [] | 1285 bad = [] |
1285 oldbad = match.bad | 1286 oldbad = match.bad |
1286 match.bad = lambda x, y: bad.append(x) or oldbad(x, y) | 1287 match.bad = lambda x, y: bad.append(x) or oldbad(x, y) |
1287 names = [] | 1288 names = [] |
1289 wctx = repo[None] | |
1288 for f in repo.walk(match): | 1290 for f in repo.walk(match): |
1289 exact = match.exact(f) | 1291 exact = match.exact(f) |
1290 if exact or f not in repo.dirstate: | 1292 if exact or f not in repo.dirstate: |
1291 names.append(f) | 1293 names.append(f) |
1292 if ui.verbose or not exact: | 1294 if ui.verbose or not exact: |
1293 ui.status(_('adding %s\n') % match.rel(f)) | 1295 ui.status(_('adding %s\n') % match.rel(join(f))) |
1296 | |
1297 if listsubrepos: | |
1298 for subpath in wctx.substate: | |
1299 sub = wctx.sub(subpath) | |
1300 try: | |
1301 submatch = matchmod.narrowmatcher(subpath, match) | |
1302 bad.extend(sub.add(ui, submatch, dryrun, prefix)) | |
1303 except error.LookupError: | |
1304 ui.status(_("skipping missing subrepository: %s\n") | |
1305 % join(subpath)) | |
1306 | |
1294 if not dryrun: | 1307 if not dryrun: |
1295 rejected = repo[None].add(names) | 1308 rejected = wctx.add(names, prefix) |
1296 bad.extend(f for f in rejected if f in match.files()) | 1309 bad.extend(f for f in rejected if f in match.files()) |
1297 return bad | 1310 return bad |
1298 | 1311 |
1299 def commit(ui, repo, commitfunc, pats, opts): | 1312 def commit(ui, repo, commitfunc, pats, opts): |
1300 '''commit the specified files or all outstanding changes''' | 1313 '''commit the specified files or all outstanding changes''' |