Mercurial > public > mercurial-scm > hg
comparison mercurial/debugcommands.py @ 50955: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
50954:81801dc55819 | 50955: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( |