Mercurial > public > mercurial-scm > hg-stable
annotate mercurial/diffutil.py @ 51185:d6e5bec550f1
util: move diff_parent from logcmdutil to diffutil
This function will be used outside of the log command
(in templatekw, used by hgweb, for which logcmdutil is not available).
Let's move this function together with the rest of the diff-related
utils instead.
author | pacien <pacien.trangirard@pacien.net> |
---|---|
date | Wed, 15 Nov 2023 02:39:53 +0100 |
parents | a6b8b1ab9116 |
children | f4733654f144 |
rev | line source |
---|---|
38563
c88d2c9b00dd
diffutil: extract diff options code into a dedicated util-module
Boris Feld <boris.feld@octobus.net>
parents:
38497
diff
changeset
|
1 # diffutil.py - utility functions related to diff and patch |
2861
0f08f2c042ec
Move patch-related code into its own module.
Brendan Cully <brendan@kublai.com>
parents:
diff
changeset
|
2 # |
2865
71e78f2ca5ae
merge git patch code.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2863
diff
changeset
|
3 # Copyright 2006 Brendan Cully <brendan@kublai.com> |
4897
4574925db5c0
Add Chris Mason's mpatch library.
Bryan O'Sullivan <bos@serpentine.com>
parents:
4778
diff
changeset
|
4 # Copyright 2007 Chris Mason <chris.mason@oracle.com> |
38563
c88d2c9b00dd
diffutil: extract diff options code into a dedicated util-module
Boris Feld <boris.feld@octobus.net>
parents:
38497
diff
changeset
|
5 # Copyright 2018 Octobus <octobus@octobus.net> |
2865
71e78f2ca5ae
merge git patch code.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2863
diff
changeset
|
6 # |
8225
46293a0c7e9f
updated license to be explicit about GPL version 2
Martin Geisler <mg@lazybytes.net>
parents:
8209
diff
changeset
|
7 # This software may be used and distributed according to the terms of the |
10263 | 8 # GNU General Public License version 2 or any later version. |
2861
0f08f2c042ec
Move patch-related code into its own module.
Brendan Cully <brendan@kublai.com>
parents:
diff
changeset
|
9 |
49705
b8cac4e37100
typing: add typehints to mercurial/diffutil.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
48966
diff
changeset
|
10 import typing |
b8cac4e37100
typing: add typehints to mercurial/diffutil.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
48966
diff
changeset
|
11 |
b8cac4e37100
typing: add typehints to mercurial/diffutil.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
48966
diff
changeset
|
12 from typing import ( |
b8cac4e37100
typing: add typehints to mercurial/diffutil.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
48966
diff
changeset
|
13 Any, |
b8cac4e37100
typing: add typehints to mercurial/diffutil.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
48966
diff
changeset
|
14 Dict, |
b8cac4e37100
typing: add typehints to mercurial/diffutil.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
48966
diff
changeset
|
15 Optional, |
b8cac4e37100
typing: add typehints to mercurial/diffutil.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
48966
diff
changeset
|
16 ) |
14370
17cea10c343e
patch: add a workingbackend dirstate layer on top of fsbackend
Patrick Mezard <pmezard@gmail.com>
parents:
14369
diff
changeset
|
17 |
38589
1c93e0237a24
diffutil: move the module out of utils package
Yuya Nishihara <yuya@tcha.org>
parents:
38588
diff
changeset
|
18 from .i18n import _ |
51185
d6e5bec550f1
util: move diff_parent from logcmdutil to diffutil
pacien <pacien.trangirard@pacien.net>
parents:
50252
diff
changeset
|
19 from .node import nullrev |
24269
9a745ced79a9
record: move filterpatch from record to patch
Laurent Charignon <lcharignon@fb.com>
parents:
24268
diff
changeset
|
20 |
38589
1c93e0237a24
diffutil: move the module out of utils package
Yuya Nishihara <yuya@tcha.org>
parents:
38588
diff
changeset
|
21 from . import ( |
38563
c88d2c9b00dd
diffutil: extract diff options code into a dedicated util-module
Boris Feld <boris.feld@octobus.net>
parents:
38497
diff
changeset
|
22 mdiff, |
c88d2c9b00dd
diffutil: extract diff options code into a dedicated util-module
Boris Feld <boris.feld@octobus.net>
parents:
38497
diff
changeset
|
23 pycompat, |
c88d2c9b00dd
diffutil: extract diff options code into a dedicated util-module
Boris Feld <boris.feld@octobus.net>
parents:
38497
diff
changeset
|
24 ) |
7198
df79ee9b6278
patch: extract local function addmodehdr
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
7186
diff
changeset
|
25 |
49705
b8cac4e37100
typing: add typehints to mercurial/diffutil.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
48966
diff
changeset
|
26 if typing.TYPE_CHECKING: |
b8cac4e37100
typing: add typehints to mercurial/diffutil.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
48966
diff
changeset
|
27 from . import ui as uimod |
b8cac4e37100
typing: add typehints to mercurial/diffutil.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
48966
diff
changeset
|
28 |
b8cac4e37100
typing: add typehints to mercurial/diffutil.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
48966
diff
changeset
|
29 # TODO: narrow the value after the config module is typed |
b8cac4e37100
typing: add typehints to mercurial/diffutil.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
48966
diff
changeset
|
30 _Opts = Dict[bytes, Any] |
b8cac4e37100
typing: add typehints to mercurial/diffutil.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
48966
diff
changeset
|
31 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
41573
diff
changeset
|
32 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
41573
diff
changeset
|
33 def diffallopts( |
49705
b8cac4e37100
typing: add typehints to mercurial/diffutil.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
48966
diff
changeset
|
34 ui: "uimod.ui", |
b8cac4e37100
typing: add typehints to mercurial/diffutil.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
48966
diff
changeset
|
35 opts: Optional[_Opts] = None, |
b8cac4e37100
typing: add typehints to mercurial/diffutil.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
48966
diff
changeset
|
36 untrusted: bool = False, |
b8cac4e37100
typing: add typehints to mercurial/diffutil.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
48966
diff
changeset
|
37 section: bytes = b'diff', |
b8cac4e37100
typing: add typehints to mercurial/diffutil.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
48966
diff
changeset
|
38 configprefix: bytes = b'', |
b8cac4e37100
typing: add typehints to mercurial/diffutil.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
48966
diff
changeset
|
39 ) -> mdiff.diffopts: |
23430
3821be85fd4d
patch: add a new function to initialize diffopts by feature
Siddharth Agarwal <sid0@fb.com>
parents:
23429
diff
changeset
|
40 '''return diffopts with all features supported and parsed''' |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
41573
diff
changeset
|
41 return difffeatureopts( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
41573
diff
changeset
|
42 ui, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
41573
diff
changeset
|
43 opts=opts, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
41573
diff
changeset
|
44 untrusted=untrusted, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
41573
diff
changeset
|
45 section=section, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
41573
diff
changeset
|
46 git=True, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
41573
diff
changeset
|
47 whitespace=True, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
41573
diff
changeset
|
48 formatchanging=True, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
41573
diff
changeset
|
49 configprefix=configprefix, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
41573
diff
changeset
|
50 ) |
23430
3821be85fd4d
patch: add a new function to initialize diffopts by feature
Siddharth Agarwal <sid0@fb.com>
parents:
23429
diff
changeset
|
51 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
41573
diff
changeset
|
52 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
41573
diff
changeset
|
53 def difffeatureopts( |
49705
b8cac4e37100
typing: add typehints to mercurial/diffutil.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
48966
diff
changeset
|
54 ui: "uimod.ui", |
b8cac4e37100
typing: add typehints to mercurial/diffutil.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
48966
diff
changeset
|
55 opts: Optional[_Opts] = None, |
b8cac4e37100
typing: add typehints to mercurial/diffutil.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
48966
diff
changeset
|
56 untrusted: bool = False, |
b8cac4e37100
typing: add typehints to mercurial/diffutil.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
48966
diff
changeset
|
57 section: bytes = b'diff', |
b8cac4e37100
typing: add typehints to mercurial/diffutil.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
48966
diff
changeset
|
58 git: bool = False, |
b8cac4e37100
typing: add typehints to mercurial/diffutil.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
48966
diff
changeset
|
59 whitespace: bool = False, |
b8cac4e37100
typing: add typehints to mercurial/diffutil.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
48966
diff
changeset
|
60 formatchanging: bool = False, |
b8cac4e37100
typing: add typehints to mercurial/diffutil.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
48966
diff
changeset
|
61 configprefix: bytes = b'', |
b8cac4e37100
typing: add typehints to mercurial/diffutil.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
48966
diff
changeset
|
62 ) -> mdiff.diffopts: |
45957
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43077
diff
changeset
|
63 """return diffopts with only opted-in features parsed |
23432
27af986a332b
patch.difffeatureopts: add a feature for diff.git
Siddharth Agarwal <sid0@fb.com>
parents:
23431
diff
changeset
|
64 |
27af986a332b
patch.difffeatureopts: add a feature for diff.git
Siddharth Agarwal <sid0@fb.com>
parents:
23431
diff
changeset
|
65 Features: |
27af986a332b
patch.difffeatureopts: add a feature for diff.git
Siddharth Agarwal <sid0@fb.com>
parents:
23431
diff
changeset
|
66 - git: git-style diffs |
23433
41dd76b3facb
patch.difffeatureopts: add a feature for whitespace diffopts
Siddharth Agarwal <sid0@fb.com>
parents:
23432
diff
changeset
|
67 - whitespace: whitespace options like ignoreblanklines and ignorews |
23434
60300a4c0ae5
patch.difffeatureopts: add a feature for format-changing diffopts
Siddharth Agarwal <sid0@fb.com>
parents:
23433
diff
changeset
|
68 - formatchanging: options that will likely break or cause correctness issues |
60300a4c0ae5
patch.difffeatureopts: add a feature for format-changing diffopts
Siddharth Agarwal <sid0@fb.com>
parents:
23433
diff
changeset
|
69 with most diff parsers |
45957
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43077
diff
changeset
|
70 """ |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
41573
diff
changeset
|
71 |
49705
b8cac4e37100
typing: add typehints to mercurial/diffutil.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
48966
diff
changeset
|
72 def get( |
b8cac4e37100
typing: add typehints to mercurial/diffutil.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
48966
diff
changeset
|
73 key: bytes, |
b8cac4e37100
typing: add typehints to mercurial/diffutil.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
48966
diff
changeset
|
74 name: Optional[bytes] = None, |
b8cac4e37100
typing: add typehints to mercurial/diffutil.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
48966
diff
changeset
|
75 getter=ui.configbool, |
b8cac4e37100
typing: add typehints to mercurial/diffutil.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
48966
diff
changeset
|
76 forceplain: Optional[bool] = None, |
b8cac4e37100
typing: add typehints to mercurial/diffutil.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
48966
diff
changeset
|
77 ) -> Any: |
23295
ac072c79bd9d
patch.diffopts: break get function into if statements
Siddharth Agarwal <sid0@fb.com>
parents:
22460
diff
changeset
|
78 if opts: |
ac072c79bd9d
patch.diffopts: break get function into if statements
Siddharth Agarwal <sid0@fb.com>
parents:
22460
diff
changeset
|
79 v = opts.get(key) |
29952
e40343ce9c4c
diffopts: notice a negated boolean flag in diffopts
Augie Fackler <augie@google.com>
parents:
29904
diff
changeset
|
80 # diffopts flags are either None-default (which is passed |
e40343ce9c4c
diffopts: notice a negated boolean flag in diffopts
Augie Fackler <augie@google.com>
parents:
29904
diff
changeset
|
81 # through unchanged, so we can identify unset values), or |
e40343ce9c4c
diffopts: notice a negated boolean flag in diffopts
Augie Fackler <augie@google.com>
parents:
29904
diff
changeset
|
82 # some other falsey default (eg --unified, which defaults |
e40343ce9c4c
diffopts: notice a negated boolean flag in diffopts
Augie Fackler <augie@google.com>
parents:
29904
diff
changeset
|
83 # to an empty string). We only want to override the config |
e40343ce9c4c
diffopts: notice a negated boolean flag in diffopts
Augie Fackler <augie@google.com>
parents:
29904
diff
changeset
|
84 # entries from hgrc with command line values if they |
e40343ce9c4c
diffopts: notice a negated boolean flag in diffopts
Augie Fackler <augie@google.com>
parents:
29904
diff
changeset
|
85 # appear to have been set, which is any truthy value, |
e40343ce9c4c
diffopts: notice a negated boolean flag in diffopts
Augie Fackler <augie@google.com>
parents:
29904
diff
changeset
|
86 # True, or False. |
e40343ce9c4c
diffopts: notice a negated boolean flag in diffopts
Augie Fackler <augie@google.com>
parents:
29904
diff
changeset
|
87 if v or isinstance(v, bool): |
23295
ac072c79bd9d
patch.diffopts: break get function into if statements
Siddharth Agarwal <sid0@fb.com>
parents:
22460
diff
changeset
|
88 return v |
23296
922fcfb02e77
patch.diffopts: allow a setting to be forced in plain mode
Siddharth Agarwal <sid0@fb.com>
parents:
23295
diff
changeset
|
89 if forceplain is not None and ui.plain(): |
922fcfb02e77
patch.diffopts: allow a setting to be forced in plain mode
Siddharth Agarwal <sid0@fb.com>
parents:
23295
diff
changeset
|
90 return forceplain |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
41573
diff
changeset
|
91 return getter( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
41573
diff
changeset
|
92 section, configprefix + (name or key), untrusted=untrusted |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
41573
diff
changeset
|
93 ) |
23295
ac072c79bd9d
patch.diffopts: break get function into if statements
Siddharth Agarwal <sid0@fb.com>
parents:
22460
diff
changeset
|
94 |
23434
60300a4c0ae5
patch.difffeatureopts: add a feature for format-changing diffopts
Siddharth Agarwal <sid0@fb.com>
parents:
23433
diff
changeset
|
95 # core options, expected to be understood by every diff parser |
23429
f35526b999f4
patch.diffopts: use a dict for initialization
Siddharth Agarwal <sid0@fb.com>
parents:
23300
diff
changeset
|
96 buildopts = { |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
97 b'nodates': get(b'nodates'), |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
98 b'showfunc': get(b'show_function', b'showfunc'), |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
99 b'context': get(b'unified', getter=ui.config), |
23429
f35526b999f4
patch.diffopts: use a dict for initialization
Siddharth Agarwal <sid0@fb.com>
parents:
23300
diff
changeset
|
100 } |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
101 buildopts[b'xdiff'] = ui.configbool(b'experimental', b'xdiff') |
23429
f35526b999f4
patch.diffopts: use a dict for initialization
Siddharth Agarwal <sid0@fb.com>
parents:
23300
diff
changeset
|
102 |
23432
27af986a332b
patch.difffeatureopts: add a feature for diff.git
Siddharth Agarwal <sid0@fb.com>
parents:
23431
diff
changeset
|
103 if git: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
104 buildopts[b'git'] = get(b'git') |
30788
d1901c4c8ec0
patch: add config knob for displaying the index header
Sean Farley <sean@farley.io>
parents:
30417
diff
changeset
|
105 |
30806
e2796f193f06
patch: add similarity config knob in experimental section
Sean Farley <sean@farley.io>
parents:
30790
diff
changeset
|
106 # since this is in the experimental section, we need to call |
e2796f193f06
patch: add similarity config knob in experimental section
Sean Farley <sean@farley.io>
parents:
30790
diff
changeset
|
107 # ui.configbool directory |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
108 buildopts[b'showsimilarity'] = ui.configbool( |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
109 b'experimental', b'extendedheader.similarity' |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
41573
diff
changeset
|
110 ) |
30806
e2796f193f06
patch: add similarity config knob in experimental section
Sean Farley <sean@farley.io>
parents:
30790
diff
changeset
|
111 |
30788
d1901c4c8ec0
patch: add config knob for displaying the index header
Sean Farley <sean@farley.io>
parents:
30417
diff
changeset
|
112 # need to inspect the ui object instead of using get() since we want to |
d1901c4c8ec0
patch: add config knob for displaying the index header
Sean Farley <sean@farley.io>
parents:
30417
diff
changeset
|
113 # test for an int |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
114 hconf = ui.config(b'experimental', b'extendedheader.index') |
30788
d1901c4c8ec0
patch: add config knob for displaying the index header
Sean Farley <sean@farley.io>
parents:
30417
diff
changeset
|
115 if hconf is not None: |
d1901c4c8ec0
patch: add config knob for displaying the index header
Sean Farley <sean@farley.io>
parents:
30417
diff
changeset
|
116 hlen = None |
d1901c4c8ec0
patch: add config knob for displaying the index header
Sean Farley <sean@farley.io>
parents:
30417
diff
changeset
|
117 try: |
d1901c4c8ec0
patch: add config knob for displaying the index header
Sean Farley <sean@farley.io>
parents:
30417
diff
changeset
|
118 # the hash config could be an integer (for length of hash) or a |
d1901c4c8ec0
patch: add config knob for displaying the index header
Sean Farley <sean@farley.io>
parents:
30417
diff
changeset
|
119 # word (e.g. short, full, none) |
d1901c4c8ec0
patch: add config knob for displaying the index header
Sean Farley <sean@farley.io>
parents:
30417
diff
changeset
|
120 hlen = int(hconf) |
30819
897726622877
patch: check length of git index header only if integer is specified
Yuya Nishihara <yuya@tcha.org>
parents:
30808
diff
changeset
|
121 if hlen < 0 or hlen > 40: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
122 msg = _(b"invalid length for extendedheader.index: '%d'\n") |
30819
897726622877
patch: check length of git index header only if integer is specified
Yuya Nishihara <yuya@tcha.org>
parents:
30808
diff
changeset
|
123 ui.warn(msg % hlen) |
30788
d1901c4c8ec0
patch: add config knob for displaying the index header
Sean Farley <sean@farley.io>
parents:
30417
diff
changeset
|
124 except ValueError: |
d1901c4c8ec0
patch: add config knob for displaying the index header
Sean Farley <sean@farley.io>
parents:
30417
diff
changeset
|
125 # default value |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
126 if hconf == b'short' or hconf == b'': |
30788
d1901c4c8ec0
patch: add config knob for displaying the index header
Sean Farley <sean@farley.io>
parents:
30417
diff
changeset
|
127 hlen = 12 |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
128 elif hconf == b'full': |
30788
d1901c4c8ec0
patch: add config knob for displaying the index header
Sean Farley <sean@farley.io>
parents:
30417
diff
changeset
|
129 hlen = 40 |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
130 elif hconf != b'none': |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
131 msg = _(b"invalid value for extendedheader.index: '%s'\n") |
30788
d1901c4c8ec0
patch: add config knob for displaying the index header
Sean Farley <sean@farley.io>
parents:
30417
diff
changeset
|
132 ui.warn(msg % hconf) |
d1901c4c8ec0
patch: add config knob for displaying the index header
Sean Farley <sean@farley.io>
parents:
30417
diff
changeset
|
133 finally: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
134 buildopts[b'index'] = hlen |
30788
d1901c4c8ec0
patch: add config knob for displaying the index header
Sean Farley <sean@farley.io>
parents:
30417
diff
changeset
|
135 |
23433
41dd76b3facb
patch.difffeatureopts: add a feature for whitespace diffopts
Siddharth Agarwal <sid0@fb.com>
parents:
23432
diff
changeset
|
136 if whitespace: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
137 buildopts[b'ignorews'] = get(b'ignore_all_space', b'ignorews') |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
138 buildopts[b'ignorewsamount'] = get( |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
139 b'ignore_space_change', b'ignorewsamount' |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
41573
diff
changeset
|
140 ) |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
141 buildopts[b'ignoreblanklines'] = get( |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
142 b'ignore_blank_lines', b'ignoreblanklines' |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
41573
diff
changeset
|
143 ) |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
144 buildopts[b'ignorewseol'] = get(b'ignore_space_at_eol', b'ignorewseol') |
23434
60300a4c0ae5
patch.difffeatureopts: add a feature for format-changing diffopts
Siddharth Agarwal <sid0@fb.com>
parents:
23433
diff
changeset
|
145 if formatchanging: |
49974
024e0580b853
diffutil: rewrite an ersatz ternary operator for building diffopts.text
Matt Harbison <matt_harbison@yahoo.com>
parents:
48966
diff
changeset
|
146 buildopts[b'text'] = None if opts is None else opts.get(b'text') |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
147 binary = None if opts is None else opts.get(b'binary') |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
148 buildopts[b'nobinary'] = ( |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
41573
diff
changeset
|
149 not binary |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
41573
diff
changeset
|
150 if binary is not None |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
151 else get(b'nobinary', forceplain=False) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
41573
diff
changeset
|
152 ) |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
153 buildopts[b'noprefix'] = get(b'noprefix', forceplain=False) |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
154 buildopts[b'worddiff'] = get( |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
155 b'word_diff', b'word-diff', forceplain=False |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
156 ) |
23432
27af986a332b
patch.difffeatureopts: add a feature for diff.git
Siddharth Agarwal <sid0@fb.com>
parents:
23431
diff
changeset
|
157 |
31636
a7acda2de4b8
diff: use pycompat.{byteskwargs, strkwargs} to switch opts b/w bytes and str
Pulkit Goyal <7895pulkit@gmail.com>
parents:
31635
diff
changeset
|
158 return mdiff.diffopts(**pycompat.strkwargs(buildopts)) |
51185
d6e5bec550f1
util: move diff_parent from logcmdutil to diffutil
pacien <pacien.trangirard@pacien.net>
parents:
50252
diff
changeset
|
159 |
d6e5bec550f1
util: move diff_parent from logcmdutil to diffutil
pacien <pacien.trangirard@pacien.net>
parents:
50252
diff
changeset
|
160 |
d6e5bec550f1
util: move diff_parent from logcmdutil to diffutil
pacien <pacien.trangirard@pacien.net>
parents:
50252
diff
changeset
|
161 def diff_parent(ctx): |
d6e5bec550f1
util: move diff_parent from logcmdutil to diffutil
pacien <pacien.trangirard@pacien.net>
parents:
50252
diff
changeset
|
162 """get the context object to use as parent when diffing |
d6e5bec550f1
util: move diff_parent from logcmdutil to diffutil
pacien <pacien.trangirard@pacien.net>
parents:
50252
diff
changeset
|
163 |
d6e5bec550f1
util: move diff_parent from logcmdutil to diffutil
pacien <pacien.trangirard@pacien.net>
parents:
50252
diff
changeset
|
164 |
d6e5bec550f1
util: move diff_parent from logcmdutil to diffutil
pacien <pacien.trangirard@pacien.net>
parents:
50252
diff
changeset
|
165 If diff.merge is enabled, an overlayworkingctx of the auto-merged parents will be returned. |
d6e5bec550f1
util: move diff_parent from logcmdutil to diffutil
pacien <pacien.trangirard@pacien.net>
parents:
50252
diff
changeset
|
166 """ |
d6e5bec550f1
util: move diff_parent from logcmdutil to diffutil
pacien <pacien.trangirard@pacien.net>
parents:
50252
diff
changeset
|
167 repo = ctx.repo() |
d6e5bec550f1
util: move diff_parent from logcmdutil to diffutil
pacien <pacien.trangirard@pacien.net>
parents:
50252
diff
changeset
|
168 if repo.ui.configbool(b"diff", b"merge") and ctx.p2().rev() != nullrev: |
d6e5bec550f1
util: move diff_parent from logcmdutil to diffutil
pacien <pacien.trangirard@pacien.net>
parents:
50252
diff
changeset
|
169 # avoid circular import |
d6e5bec550f1
util: move diff_parent from logcmdutil to diffutil
pacien <pacien.trangirard@pacien.net>
parents:
50252
diff
changeset
|
170 from . import ( |
d6e5bec550f1
util: move diff_parent from logcmdutil to diffutil
pacien <pacien.trangirard@pacien.net>
parents:
50252
diff
changeset
|
171 context, |
d6e5bec550f1
util: move diff_parent from logcmdutil to diffutil
pacien <pacien.trangirard@pacien.net>
parents:
50252
diff
changeset
|
172 merge, |
d6e5bec550f1
util: move diff_parent from logcmdutil to diffutil
pacien <pacien.trangirard@pacien.net>
parents:
50252
diff
changeset
|
173 ) |
d6e5bec550f1
util: move diff_parent from logcmdutil to diffutil
pacien <pacien.trangirard@pacien.net>
parents:
50252
diff
changeset
|
174 |
d6e5bec550f1
util: move diff_parent from logcmdutil to diffutil
pacien <pacien.trangirard@pacien.net>
parents:
50252
diff
changeset
|
175 wctx = context.overlayworkingctx(repo) |
d6e5bec550f1
util: move diff_parent from logcmdutil to diffutil
pacien <pacien.trangirard@pacien.net>
parents:
50252
diff
changeset
|
176 wctx.setbase(ctx.p1()) |
d6e5bec550f1
util: move diff_parent from logcmdutil to diffutil
pacien <pacien.trangirard@pacien.net>
parents:
50252
diff
changeset
|
177 with repo.ui.configoverride( |
d6e5bec550f1
util: move diff_parent from logcmdutil to diffutil
pacien <pacien.trangirard@pacien.net>
parents:
50252
diff
changeset
|
178 { |
d6e5bec550f1
util: move diff_parent from logcmdutil to diffutil
pacien <pacien.trangirard@pacien.net>
parents:
50252
diff
changeset
|
179 ( |
d6e5bec550f1
util: move diff_parent from logcmdutil to diffutil
pacien <pacien.trangirard@pacien.net>
parents:
50252
diff
changeset
|
180 b"ui", |
d6e5bec550f1
util: move diff_parent from logcmdutil to diffutil
pacien <pacien.trangirard@pacien.net>
parents:
50252
diff
changeset
|
181 b"forcemerge", |
d6e5bec550f1
util: move diff_parent from logcmdutil to diffutil
pacien <pacien.trangirard@pacien.net>
parents:
50252
diff
changeset
|
182 ): b"internal:merge3-lie-about-conflicts", |
d6e5bec550f1
util: move diff_parent from logcmdutil to diffutil
pacien <pacien.trangirard@pacien.net>
parents:
50252
diff
changeset
|
183 }, |
d6e5bec550f1
util: move diff_parent from logcmdutil to diffutil
pacien <pacien.trangirard@pacien.net>
parents:
50252
diff
changeset
|
184 b"merge-diff", |
d6e5bec550f1
util: move diff_parent from logcmdutil to diffutil
pacien <pacien.trangirard@pacien.net>
parents:
50252
diff
changeset
|
185 ): |
d6e5bec550f1
util: move diff_parent from logcmdutil to diffutil
pacien <pacien.trangirard@pacien.net>
parents:
50252
diff
changeset
|
186 with repo.ui.silent(): |
d6e5bec550f1
util: move diff_parent from logcmdutil to diffutil
pacien <pacien.trangirard@pacien.net>
parents:
50252
diff
changeset
|
187 merge.merge(ctx.p2(), wc=wctx) |
d6e5bec550f1
util: move diff_parent from logcmdutil to diffutil
pacien <pacien.trangirard@pacien.net>
parents:
50252
diff
changeset
|
188 return wctx |
d6e5bec550f1
util: move diff_parent from logcmdutil to diffutil
pacien <pacien.trangirard@pacien.net>
parents:
50252
diff
changeset
|
189 else: |
d6e5bec550f1
util: move diff_parent from logcmdutil to diffutil
pacien <pacien.trangirard@pacien.net>
parents:
50252
diff
changeset
|
190 return ctx.p1() |