Mercurial > public > mercurial-scm > hg-stable
comparison mercurial/commands.py @ 3972:356e20d46b34
commands.py: use contexts in various places (debug*state, revert)
author | Benoit Boissinot <benoit.boissinot@ens-lyon.org> |
---|---|
date | Tue, 26 Dec 2006 03:13:57 +0100 |
parents | cb66641cdee3 |
children | 96e21337dc03 |
comparison
equal
deleted
inserted
replaced
3971:68a0fa81ad28 | 3972:356e20d46b34 |
---|---|
682 | 682 |
683 clist = findpossible(ui, cmd).keys() | 683 clist = findpossible(ui, cmd).keys() |
684 clist.sort() | 684 clist.sort() |
685 ui.write("%s\n" % "\n".join(clist)) | 685 ui.write("%s\n" % "\n".join(clist)) |
686 | 686 |
687 def debugrebuildstate(ui, repo, rev=None): | 687 def debugrebuildstate(ui, repo, rev=""): |
688 """rebuild the dirstate as it would look like for the given revision""" | 688 """rebuild the dirstate as it would look like for the given revision""" |
689 if not rev: | 689 if rev == "": |
690 rev = repo.changelog.tip() | 690 rev = repo.changelog.tip() |
691 else: | 691 ctx = repo.changectx(rev) |
692 rev = repo.lookup(rev) | 692 files = ctx.manifest() |
693 change = repo.changelog.read(rev) | |
694 n = change[0] | |
695 files = repo.manifest.read(n) | |
696 wlock = repo.wlock() | 693 wlock = repo.wlock() |
697 repo.dirstate.rebuild(rev, files) | 694 repo.dirstate.rebuild(rev, files) |
698 | 695 |
699 def debugcheckstate(ui, repo): | 696 def debugcheckstate(ui, repo): |
700 """validate the correctness of the current dirstate""" | 697 """validate the correctness of the current dirstate""" |
701 parent1, parent2 = repo.dirstate.parents() | 698 parent1, parent2 = repo.dirstate.parents() |
702 repo.dirstate.read() | 699 repo.dirstate.read() |
703 dc = repo.dirstate.map | 700 dc = repo.dirstate.map |
704 keys = dc.keys() | 701 keys = dc.keys() |
705 keys.sort() | 702 keys.sort() |
706 m1n = repo.changelog.read(parent1)[0] | 703 m1 = repo.changectx(parent1).manifest() |
707 m2n = repo.changelog.read(parent2)[0] | 704 m2 = repo.changectx(parent2).manifest() |
708 m1 = repo.manifest.read(m1n) | |
709 m2 = repo.manifest.read(m2n) | |
710 errors = 0 | 705 errors = 0 |
711 for f in dc: | 706 for f in dc: |
712 state = repo.dirstate.state(f) | 707 state = repo.dirstate.state(f) |
713 if state in "nr" and f not in m1: | 708 if state in "nr" and f not in m1: |
714 ui.warn(_("%s in state %s, but not in manifest1\n") % (f, state)) | 709 ui.warn(_("%s in state %s, but not in manifest1\n") % (f, state)) |
2125 | 2120 |
2126 parent, p2 = repo.dirstate.parents() | 2121 parent, p2 = repo.dirstate.parents() |
2127 if not opts['rev'] and p2 != nullid: | 2122 if not opts['rev'] and p2 != nullid: |
2128 raise util.Abort(_('uncommitted merge - please provide a ' | 2123 raise util.Abort(_('uncommitted merge - please provide a ' |
2129 'specific revision')) | 2124 'specific revision')) |
2130 node = repo.changectx(opts['rev']).node() | 2125 ctx = repo.changectx(opts['rev']) |
2131 mf = repo.manifest.read(repo.changelog.read(node)[0]) | 2126 node = ctx.node() |
2127 mf = ctx.manifest() | |
2132 if node == parent: | 2128 if node == parent: |
2133 pmf = mf | 2129 pmf = mf |
2134 else: | 2130 else: |
2135 pmf = None | 2131 pmf = None |
2136 | 2132 |
2216 if exact: ui.warn(_('no changes needed to %s\n') % rel) | 2212 if exact: ui.warn(_('no changes needed to %s\n') % rel) |
2217 continue | 2213 continue |
2218 if pmf is None: | 2214 if pmf is None: |
2219 # only need parent manifest in this unlikely case, | 2215 # only need parent manifest in this unlikely case, |
2220 # so do not read by default | 2216 # so do not read by default |
2221 pmf = repo.manifest.read(repo.changelog.read(parent)[0]) | 2217 pmf = repo.changectx(parent).manifest() |
2222 if abs in pmf: | 2218 if abs in pmf: |
2223 if mfentry: | 2219 if mfentry: |
2224 # if version of file is same in parent and target | 2220 # if version of file is same in parent and target |
2225 # manifests, do nothing | 2221 # manifests, do nothing |
2226 if pmf[abs] != mfentry: | 2222 if pmf[abs] != mfentry: |