Show More
@@ -29,7 +29,6 b' from . import (' | |||
|
29 | 29 | bundlecaches, |
|
30 | 30 | changegroup, |
|
31 | 31 | cmdutil, |
|
32 | context as contextmod, | |
|
33 | 32 | copies, |
|
34 | 33 | debugcommands as debugcommandsmod, |
|
35 | 34 | destutil, |
@@ -2545,33 +2544,13 b' def diff(ui, repo, *pats, **opts):' | |||
|
2545 | 2544 | to_rev = opts.get(b'to') |
|
2546 | 2545 | stat = opts.get(b'stat') |
|
2547 | 2546 | reverse = opts.get(b'reverse') |
|
2548 | diffmerge = ui.configbool(b'diff', b'merge') | |
|
2549 | 2547 | |
|
2550 | 2548 | cmdutil.check_incompatible_arguments(opts, b'from', [b'rev', b'change']) |
|
2551 | 2549 | cmdutil.check_incompatible_arguments(opts, b'to', [b'rev', b'change']) |
|
2552 | 2550 | if change: |
|
2553 | 2551 | repo = scmutil.unhidehashlikerevs(repo, [change], b'nowarn') |
|
2554 | 2552 | ctx2 = scmutil.revsingle(repo, change, None) |
|
2555 | if diffmerge and ctx2.p2().node() != nullid: | |
|
2556 | pctx1 = ctx2.p1() | |
|
2557 | pctx2 = ctx2.p2() | |
|
2558 | wctx = contextmod.overlayworkingctx(repo) | |
|
2559 | wctx.setbase(pctx1) | |
|
2560 | with ui.configoverride( | |
|
2561 | { | |
|
2562 | ( | |
|
2563 | b'ui', | |
|
2564 | b'forcemerge', | |
|
2565 | ): b'internal:merge3-lie-about-conflicts', | |
|
2566 | }, | |
|
2567 | b'diff --merge', | |
|
2568 | ): | |
|
2569 | repo.ui.pushbuffer() | |
|
2570 | mergemod.merge(pctx2, wc=wctx) | |
|
2571 | repo.ui.popbuffer() | |
|
2572 | ctx1 = wctx | |
|
2573 | else: | |
|
2574 | ctx1 = ctx2.p1() | |
|
2553 | ctx1 = logcmdutil.diff_parent(ctx2) | |
|
2575 | 2554 | elif from_rev or to_rev: |
|
2576 | 2555 | repo = scmutil.unhidehashlikerevs( |
|
2577 | 2556 | repo, [from_rev] + [to_rev], b'nowarn' |
@@ -27,6 +27,7 b' from . import (' | |||
|
27 | 27 | graphmod, |
|
28 | 28 | match as matchmod, |
|
29 | 29 | mdiff, |
|
30 | merge, | |
|
30 | 31 | patch, |
|
31 | 32 | pathutil, |
|
32 | 33 | pycompat, |
@@ -73,6 +74,36 b' def getlimit(opts):' | |||
|
73 | 74 | return limit |
|
74 | 75 | |
|
75 | 76 | |
|
77 | def diff_parent(ctx): | |
|
78 | """get the context object to use as parent when diffing | |
|
79 | ||
|
80 | ||
|
81 | If diff.merge is enabled, an overlayworkingctx of the auto-merged parents will be returned. | |
|
82 | """ | |
|
83 | repo = ctx.repo() | |
|
84 | if repo.ui.configbool(b"diff", b"merge") and ctx.p2().node() != nullid: | |
|
85 | # avoid cycle context -> subrepo -> cmdutil -> logcmdutil | |
|
86 | from . import context | |
|
87 | ||
|
88 | wctx = context.overlayworkingctx(repo) | |
|
89 | wctx.setbase(ctx.p1()) | |
|
90 | with repo.ui.configoverride( | |
|
91 | { | |
|
92 | ( | |
|
93 | b"ui", | |
|
94 | b"forcemerge", | |
|
95 | ): b"internal:merge3-lie-about-conflicts", | |
|
96 | }, | |
|
97 | b"merge-diff", | |
|
98 | ): | |
|
99 | repo.ui.pushbuffer() | |
|
100 | merge.merge(ctx.p2(), wc=wctx) | |
|
101 | repo.ui.popbuffer() | |
|
102 | return wctx | |
|
103 | else: | |
|
104 | return ctx.p1() | |
|
105 | ||
|
106 | ||
|
76 | 107 | def diffordiffstat( |
|
77 | 108 | ui, |
|
78 | 109 | repo, |
General Comments 0
You need to be logged in to leave comments.
Login now