427 overrides = {(b'ui', b'commitsubrepos'): True} |
427 overrides = {(b'ui', b'commitsubrepos'): True} |
428 |
428 |
429 with repo.ui.configoverride(overrides, b'record'): |
429 with repo.ui.configoverride(overrides, b'record'): |
430 # subrepoutil.precommit() modifies the status |
430 # subrepoutil.precommit() modifies the status |
431 tmpstatus = scmutil.status( |
431 tmpstatus = scmutil.status( |
432 copymod.copy(status[0]), |
432 copymod.copy(status.modified), |
433 copymod.copy(status[1]), |
433 copymod.copy(status.added), |
434 copymod.copy(status[2]), |
434 copymod.copy(status.removed), |
435 copymod.copy(status[3]), |
435 copymod.copy(status.deleted), |
436 copymod.copy(status[4]), |
436 copymod.copy(status.unknown), |
437 copymod.copy(status[5]), |
437 copymod.copy(status.ignored), |
438 copymod.copy(status[6]), # pytype: disable=wrong-arg-count |
438 copymod.copy(status.clean), # pytype: disable=wrong-arg-count |
439 ) |
439 ) |
440 |
440 |
441 # Force allows -X subrepo to skip the subrepo. |
441 # Force allows -X subrepo to skip the subrepo. |
442 subs, commitsubs, newstate = subrepoutil.precommit( |
442 subs, commitsubs, newstate = subrepoutil.precommit( |
443 repo.ui, wctx, tmpstatus, match, force=True |
443 repo.ui, wctx, tmpstatus, match, force=True |
989 'hint' is the usual hint given to Abort exception. |
989 'hint' is the usual hint given to Abort exception. |
990 """ |
990 """ |
991 |
991 |
992 if merge and repo.dirstate.p2() != nullid: |
992 if merge and repo.dirstate.p2() != nullid: |
993 raise error.Abort(_(b'outstanding uncommitted merge'), hint=hint) |
993 raise error.Abort(_(b'outstanding uncommitted merge'), hint=hint) |
994 modified, added, removed, deleted = repo.status()[:4] |
994 st = repo.status() |
995 if modified or added or removed or deleted: |
995 if st.modified or st.added or st.removed or st.deleted: |
996 raise error.Abort(_(b'uncommitted changes'), hint=hint) |
996 raise error.Abort(_(b'uncommitted changes'), hint=hint) |
997 ctx = repo[None] |
997 ctx = repo[None] |
998 for s in sorted(ctx.substate): |
998 for s in sorted(ctx.substate): |
999 ctx.sub(s).bailifchanged(hint=hint) |
999 ctx.sub(s).bailifchanged(hint=hint) |
1000 |
1000 |
2563 def remove( |
2563 def remove( |
2564 ui, repo, m, prefix, uipathfn, after, force, subrepos, dryrun, warnings=None |
2564 ui, repo, m, prefix, uipathfn, after, force, subrepos, dryrun, warnings=None |
2565 ): |
2565 ): |
2566 ret = 0 |
2566 ret = 0 |
2567 s = repo.status(match=m, clean=True) |
2567 s = repo.status(match=m, clean=True) |
2568 modified, added, deleted, clean = s[0], s[1], s[3], s[6] |
2568 modified, added, deleted, clean = s.modified, s.added, s.deleted, s.clean |
2569 |
2569 |
2570 wctx = repo[None] |
2570 wctx = repo[None] |
2571 |
2571 |
2572 if warnings is None: |
2572 if warnings is None: |
2573 warnings = [] |
2573 warnings = [] |
2874 user = opts.get(b'user') or old.user() |
2874 user = opts.get(b'user') or old.user() |
2875 |
2875 |
2876 if len(old.parents()) > 1: |
2876 if len(old.parents()) > 1: |
2877 # ctx.files() isn't reliable for merges, so fall back to the |
2877 # ctx.files() isn't reliable for merges, so fall back to the |
2878 # slower repo.status() method |
2878 # slower repo.status() method |
2879 files = {fn for st in base.status(old)[:3] for fn in st} |
2879 st = base.status(old) |
|
2880 files = set(st.modified) | set(st.added) | set(st.removed) |
2880 else: |
2881 else: |
2881 files = set(old.files()) |
2882 files = set(old.files()) |
2882 |
2883 |
2883 # add/remove the files to the working copy if the "addremove" option |
2884 # add/remove the files to the working copy if the "addremove" option |
2884 # was specified. |
2885 # was specified. |