comparison mercurial/commands.py @ 30127:1ee65f1a11a5

bisect: factor commonly update sequence For now, This remains a closure in the module to avoid circular import with used module.
author Pierre-Yves David <pierre-yves.david@ens-lyon.org>
date Wed, 24 Aug 2016 05:04:46 +0200
parents 755730fc1e48
children e37ee8367ab4
comparison
equal deleted inserted replaced
30126:755730fc1e48 30127:1ee65f1a11a5
870 state['skip'] += nodes 870 state['skip'] += nodes
871 hbisect.save_state(repo, state) 871 hbisect.save_state(repo, state)
872 if not (state['good'] and state['bad']): 872 if not (state['good'] and state['bad']):
873 return 873 return
874 874
875 def mayupdate(repo, node, show_stats=True):
876 """common used update sequence"""
877 if noupdate:
878 return
879 cmdutil.bailifchanged(repo)
880 return hg.clean(repo, node, show_stats=show_stats)
881
875 if command: 882 if command:
876 changesets = 1 883 changesets = 1
877 if noupdate: 884 if noupdate:
878 try: 885 try:
879 node = state['current'][0] 886 node = state['current'][0]
908 hbisect.checkstate(state) 915 hbisect.checkstate(state)
909 # bisect 916 # bisect
910 nodes, changesets, bgood = hbisect.bisect(repo.changelog, state) 917 nodes, changesets, bgood = hbisect.bisect(repo.changelog, state)
911 # update to next check 918 # update to next check
912 node = nodes[0] 919 node = nodes[0]
913 if not noupdate: 920 mayupdate(repo, node, show_stats=False)
914 cmdutil.bailifchanged(repo)
915 hg.clean(repo, node, show_stats=False)
916 finally: 921 finally:
917 state['current'] = [node] 922 state['current'] = [node]
918 hbisect.save_state(repo, state) 923 hbisect.save_state(repo, state)
919 displayer = cmdutil.show_changeset(ui, repo, {}) 924 displayer = cmdutil.show_changeset(ui, repo, {})
920 hbisect.printresult(ui, repo, state, displayer, nodes, bgood) 925 hbisect.printresult(ui, repo, state, displayer, nodes, bgood)
930 if extendnode is not None: 935 if extendnode is not None:
931 ui.write(_("Extending search to changeset %d:%s\n") 936 ui.write(_("Extending search to changeset %d:%s\n")
932 % (extendnode.rev(), extendnode)) 937 % (extendnode.rev(), extendnode))
933 state['current'] = [extendnode.node()] 938 state['current'] = [extendnode.node()]
934 hbisect.save_state(repo, state) 939 hbisect.save_state(repo, state)
935 if noupdate: 940 return mayupdate(repo, extendnode.node())
936 return
937 cmdutil.bailifchanged(repo)
938 return hg.clean(repo, extendnode.node())
939 raise error.Abort(_("nothing to extend")) 941 raise error.Abort(_("nothing to extend"))
940 942
941 if changesets == 0: 943 if changesets == 0:
942 displayer = cmdutil.show_changeset(ui, repo, {}) 944 displayer = cmdutil.show_changeset(ui, repo, {})
943 hbisect.printresult(ui, repo, state, displayer, nodes, good) 945 hbisect.printresult(ui, repo, state, displayer, nodes, good)
952 ui.write(_("Testing changeset %d:%s " 954 ui.write(_("Testing changeset %d:%s "
953 "(%d changesets remaining, ~%d tests)\n") 955 "(%d changesets remaining, ~%d tests)\n")
954 % (rev, short(node), changesets, tests)) 956 % (rev, short(node), changesets, tests))
955 state['current'] = [node] 957 state['current'] = [node]
956 hbisect.save_state(repo, state) 958 hbisect.save_state(repo, state)
957 if not noupdate: 959 return mayupdate(repo, node)
958 cmdutil.bailifchanged(repo)
959 return hg.clean(repo, node)
960 960
961 @command('bookmarks|bookmark', 961 @command('bookmarks|bookmark',
962 [('f', 'force', False, _('force')), 962 [('f', 'force', False, _('force')),
963 ('r', 'rev', '', _('revision for bookmark action'), _('REV')), 963 ('r', 'rev', '', _('revision for bookmark action'), _('REV')),
964 ('d', 'delete', False, _('delete a given bookmark')), 964 ('d', 'delete', False, _('delete a given bookmark')),