Mercurial > hg
comparison mercurial/commands.py @ 30067:6e88cd060ba2
bisect: move 'printresult' in the 'hbisect' module
The logic is already extracted into a closure. We move it into the module
dedicated to bisect.
A minor change is applied: the creation of the 'displayer' is kept in the main
command function, it remove the needs to import 'cmdutil' in 'hbisect'. This
would create an import circle otherwise.
author | Pierre-Yves David <pierre-yves.david@ens-lyon.org> |
---|---|
date | Wed, 24 Aug 2016 04:19:11 +0200 |
parents | 5f93737d0ba8 |
children | b710dca9937a |
comparison
equal
deleted
inserted
replaced
30066:5f93737d0ba8 | 30067:6e88cd060ba2 |
---|---|
833 | 833 |
834 See :hg:`help revsets` for more about the `bisect()` keyword. | 834 See :hg:`help revsets` for more about the `bisect()` keyword. |
835 | 835 |
836 Returns 0 on success. | 836 Returns 0 on success. |
837 """ | 837 """ |
838 def print_result(nodes, good): | |
839 displayer = cmdutil.show_changeset(ui, repo, {}) | |
840 if len(nodes) == 1: | |
841 # narrowed it down to a single revision | |
842 if good: | |
843 ui.write(_("The first good revision is:\n")) | |
844 else: | |
845 ui.write(_("The first bad revision is:\n")) | |
846 displayer.show(repo[nodes[0]]) | |
847 extendnode = hbisect.extendrange(repo, state, nodes, good) | |
848 if extendnode is not None: | |
849 ui.write(_('Not all ancestors of this changeset have been' | |
850 ' checked.\nUse bisect --extend to continue the ' | |
851 'bisection from\nthe common ancestor, %s.\n') | |
852 % extendnode) | |
853 else: | |
854 # multiple possible revisions | |
855 if good: | |
856 ui.write(_("Due to skipped revisions, the first " | |
857 "good revision could be any of:\n")) | |
858 else: | |
859 ui.write(_("Due to skipped revisions, the first " | |
860 "bad revision could be any of:\n")) | |
861 for n in nodes: | |
862 displayer.show(repo[n]) | |
863 displayer.close() | |
864 | |
865 def check_state(state, interactive=True): | 838 def check_state(state, interactive=True): |
866 if not state['good'] or not state['bad']: | 839 if not state['good'] or not state['bad']: |
867 if (good or bad or skip or reset) and interactive: | 840 if (good or bad or skip or reset) and interactive: |
868 return | 841 return |
869 if not state['good']: | 842 if not state['good']: |
935 cmdutil.bailifchanged(repo) | 908 cmdutil.bailifchanged(repo) |
936 hg.clean(repo, node, show_stats=False) | 909 hg.clean(repo, node, show_stats=False) |
937 finally: | 910 finally: |
938 state['current'] = [node] | 911 state['current'] = [node] |
939 hbisect.save_state(repo, state) | 912 hbisect.save_state(repo, state) |
940 print_result(nodes, bgood) | 913 displayer = cmdutil.show_changeset(ui, repo, {}) |
914 hbisect.printresult(ui, repo, state, displayer, nodes, bgood) | |
941 return | 915 return |
942 | 916 |
943 # update state | 917 # update state |
944 | 918 |
945 if rev: | 919 if rev: |
974 cmdutil.bailifchanged(repo) | 948 cmdutil.bailifchanged(repo) |
975 return hg.clean(repo, extendnode.node()) | 949 return hg.clean(repo, extendnode.node()) |
976 raise error.Abort(_("nothing to extend")) | 950 raise error.Abort(_("nothing to extend")) |
977 | 951 |
978 if changesets == 0: | 952 if changesets == 0: |
979 print_result(nodes, good) | 953 displayer = cmdutil.show_changeset(ui, repo, {}) |
954 hbisect.printresult(ui, repo, state, displayer, nodes, good) | |
980 else: | 955 else: |
981 assert len(nodes) == 1 # only a single node can be tested next | 956 assert len(nodes) == 1 # only a single node can be tested next |
982 node = nodes[0] | 957 node = nodes[0] |
983 # compute the approximate number of remaining tests | 958 # compute the approximate number of remaining tests |
984 tests, size = 0, 2 | 959 tests, size = 0, 2 |