comparison mercurial/debugcommands.py @ 50969:55c28ffadb14

debugobsolete: migrate `opts` to native kwargs
author Matt Harbison <matt_harbison@yahoo.com>
date Mon, 21 Aug 2023 17:26:56 -0400
parents 81801dc55819
children 91c32fccd282
comparison
equal deleted inserted replaced
50968:81801dc55819 50969:55c28ffadb14
2697 def debugobsolete(ui, repo, precursor=None, *successors, **opts): 2697 def debugobsolete(ui, repo, precursor=None, *successors, **opts):
2698 """create arbitrary obsolete marker 2698 """create arbitrary obsolete marker
2699 2699
2700 With no arguments, displays the list of obsolescence markers.""" 2700 With no arguments, displays the list of obsolescence markers."""
2701 2701
2702 opts = pycompat.byteskwargs(opts)
2703
2704 def parsenodeid(s): 2702 def parsenodeid(s):
2705 try: 2703 try:
2706 # We do not use revsingle/revrange functions here to accept 2704 # We do not use revsingle/revrange functions here to accept
2707 # arbitrary node identifiers, possibly not present in the 2705 # arbitrary node identifiers, possibly not present in the
2708 # local repository. 2706 # local repository.
2714 raise error.InputError( 2712 raise error.InputError(
2715 b'changeset references must be full hexadecimal ' 2713 b'changeset references must be full hexadecimal '
2716 b'node identifiers' 2714 b'node identifiers'
2717 ) 2715 )
2718 2716
2719 if opts.get(b'delete'): 2717 if opts.get('delete'):
2720 indices = [] 2718 indices = []
2721 for v in opts.get(b'delete'): 2719 for v in opts.get('delete'):
2722 try: 2720 try:
2723 indices.append(int(v)) 2721 indices.append(int(v))
2724 except ValueError: 2722 except ValueError:
2725 raise error.InputError( 2723 raise error.InputError(
2726 _(b'invalid index value: %r') % v, 2724 _(b'invalid index value: %r') % v,
2737 ui.write(_(b'deleted %i obsolescence markers\n') % n) 2735 ui.write(_(b'deleted %i obsolescence markers\n') % n)
2738 2736
2739 return 2737 return
2740 2738
2741 if precursor is not None: 2739 if precursor is not None:
2742 if opts[b'rev']: 2740 if opts['rev']:
2743 raise error.InputError( 2741 raise error.InputError(
2744 b'cannot select revision when creating marker' 2742 b'cannot select revision when creating marker'
2745 ) 2743 )
2746 metadata = {} 2744 metadata = {}
2747 metadata[b'user'] = encoding.fromlocal(opts[b'user'] or ui.username()) 2745 metadata[b'user'] = encoding.fromlocal(opts['user'] or ui.username())
2748 succs = tuple(parsenodeid(succ) for succ in successors) 2746 succs = tuple(parsenodeid(succ) for succ in successors)
2749 l = repo.lock() 2747 l = repo.lock()
2750 try: 2748 try:
2751 tr = repo.transaction(b'debugobsolete') 2749 tr = repo.transaction(b'debugobsolete')
2752 try: 2750 try:
2753 date = opts.get(b'date') 2751 date = opts.get('date')
2754 if date: 2752 if date:
2755 date = dateutil.parsedate(date) 2753 date = dateutil.parsedate(date)
2756 else: 2754 else:
2757 date = None 2755 date = None
2758 prec = parsenodeid(precursor) 2756 prec = parsenodeid(precursor)
2759 parents = None 2757 parents = None
2760 if opts[b'record_parents']: 2758 if opts['record_parents']:
2761 if prec not in repo.unfiltered(): 2759 if prec not in repo.unfiltered():
2762 raise error.Abort( 2760 raise error.Abort(
2763 b'cannot used --record-parents on ' 2761 b'cannot used --record-parents on '
2764 b'unknown changesets' 2762 b'unknown changesets'
2765 ) 2763 )
2767 parents = tuple(p.node() for p in parents) 2765 parents = tuple(p.node() for p in parents)
2768 repo.obsstore.create( 2766 repo.obsstore.create(
2769 tr, 2767 tr,
2770 prec, 2768 prec,
2771 succs, 2769 succs,
2772 opts[b'flags'], 2770 opts['flags'],
2773 parents=parents, 2771 parents=parents,
2774 date=date, 2772 date=date,
2775 metadata=metadata, 2773 metadata=metadata,
2776 ui=ui, 2774 ui=ui,
2777 ) 2775 )
2783 finally: 2781 finally:
2784 tr.release() 2782 tr.release()
2785 finally: 2783 finally:
2786 l.release() 2784 l.release()
2787 else: 2785 else:
2788 if opts[b'rev']: 2786 if opts['rev']:
2789 revs = logcmdutil.revrange(repo, opts[b'rev']) 2787 revs = logcmdutil.revrange(repo, opts['rev'])
2790 nodes = [repo[r].node() for r in revs] 2788 nodes = [repo[r].node() for r in revs]
2791 markers = list( 2789 markers = list(
2792 obsutil.getmarkers( 2790 obsutil.getmarkers(
2793 repo, nodes=nodes, exclusive=opts[b'exclusive'] 2791 repo, nodes=nodes, exclusive=opts['exclusive']
2794 ) 2792 )
2795 ) 2793 )
2796 markers.sort(key=lambda x: x._data) 2794 markers.sort(key=lambda x: x._data)
2797 else: 2795 else:
2798 markers = obsutil.getmarkers(repo) 2796 markers = obsutil.getmarkers(repo)
2799 2797
2800 markerstoiter = markers 2798 markerstoiter = markers
2801 isrelevant = lambda m: True 2799 isrelevant = lambda m: True
2802 if opts.get(b'rev') and opts.get(b'index'): 2800 if opts.get('rev') and opts.get('index'):
2803 markerstoiter = obsutil.getmarkers(repo) 2801 markerstoiter = obsutil.getmarkers(repo)
2804 markerset = set(markers) 2802 markerset = set(markers)
2805 isrelevant = lambda m: m in markerset 2803 isrelevant = lambda m: m in markerset
2806 2804
2807 fm = ui.formatter(b'debugobsolete', opts) 2805 fm = ui.formatter(b'debugobsolete', pycompat.byteskwargs(opts))
2808 for i, m in enumerate(markerstoiter): 2806 for i, m in enumerate(markerstoiter):
2809 if not isrelevant(m): 2807 if not isrelevant(m):
2810 # marker can be irrelevant when we're iterating over a set 2808 # marker can be irrelevant when we're iterating over a set
2811 # of markers (markerstoiter) which is bigger than the set 2809 # of markers (markerstoiter) which is bigger than the set
2812 # of markers we want to display (markers) 2810 # of markers we want to display (markers)
2814 # provided and thus we need to iterate over all of the markers 2812 # provided and thus we need to iterate over all of the markers
2815 # to get the correct indices, but only display the ones that 2813 # to get the correct indices, but only display the ones that
2816 # are relevant to --rev value 2814 # are relevant to --rev value
2817 continue 2815 continue
2818 fm.startitem() 2816 fm.startitem()
2819 ind = i if opts.get(b'index') else None 2817 ind = i if opts.get('index') else None
2820 cmdutil.showmarker(fm, m, index=ind) 2818 cmdutil.showmarker(fm, m, index=ind)
2821 fm.end() 2819 fm.end()
2822 2820
2823 2821
2824 @command( 2822 @command(