Mercurial > hg
changeset 51143: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 | 204af2aa4931 |
children | 9ff3d5395d6b |
files | mercurial/commands.py mercurial/diffutil.py mercurial/logcmdutil.py |
diffstat | 3 files changed, 39 insertions(+), 34 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/commands.py Thu Sep 07 08:39:21 2023 +0200 +++ b/mercurial/commands.py Wed Nov 15 02:39:53 2023 +0100 @@ -29,6 +29,7 @@ copies, debugcommands as debugcommandsmod, destutil, + diffutil, discovery, encoding, error, @@ -2655,7 +2656,7 @@ if change: repo = scmutil.unhidehashlikerevs(repo, [change], b'nowarn') ctx2 = logcmdutil.revsingle(repo, change, None) - ctx1 = logcmdutil.diff_parent(ctx2) + ctx1 = diffutil.diff_parent(ctx2) elif from_rev or to_rev: repo = scmutil.unhidehashlikerevs( repo, [from_rev] + [to_rev], b'nowarn'
--- a/mercurial/diffutil.py Thu Sep 07 08:39:21 2023 +0200 +++ b/mercurial/diffutil.py Wed Nov 15 02:39:53 2023 +0100 @@ -16,6 +16,7 @@ ) from .i18n import _ +from .node import nullrev from . import ( mdiff, @@ -155,3 +156,35 @@ ) return mdiff.diffopts(**pycompat.strkwargs(buildopts)) + + +def diff_parent(ctx): + """get the context object to use as parent when diffing + + + If diff.merge is enabled, an overlayworkingctx of the auto-merged parents will be returned. + """ + repo = ctx.repo() + if repo.ui.configbool(b"diff", b"merge") and ctx.p2().rev() != nullrev: + # avoid circular import + from . import ( + context, + merge, + ) + + wctx = context.overlayworkingctx(repo) + wctx.setbase(ctx.p1()) + with repo.ui.configoverride( + { + ( + b"ui", + b"forcemerge", + ): b"internal:merge3-lie-about-conflicts", + }, + b"merge-diff", + ): + with repo.ui.silent(): + merge.merge(ctx.p2(), wc=wctx) + return wctx + else: + return ctx.p1()
--- a/mercurial/logcmdutil.py Thu Sep 07 08:39:21 2023 +0200 +++ b/mercurial/logcmdutil.py Wed Nov 15 02:39:53 2023 +0100 @@ -11,18 +11,18 @@ import posixpath from .i18n import _ -from .node import nullrev, wdirrev +from .node import wdirrev from .thirdparty import attr from . import ( dagop, + diffutil, error, formatter, graphmod, match as matchmod, mdiff, - merge, patch, pathutil, pycompat, @@ -69,35 +69,6 @@ return limit -def diff_parent(ctx): - """get the context object to use as parent when diffing - - - If diff.merge is enabled, an overlayworkingctx of the auto-merged parents will be returned. - """ - repo = ctx.repo() - if repo.ui.configbool(b"diff", b"merge") and ctx.p2().rev() != nullrev: - # avoid cycle context -> subrepo -> cmdutil -> logcmdutil - from . import context - - wctx = context.overlayworkingctx(repo) - wctx.setbase(ctx.p1()) - with repo.ui.configoverride( - { - ( - b"ui", - b"forcemerge", - ): b"internal:merge3-lie-about-conflicts", - }, - b"merge-diff", - ): - with repo.ui.silent(): - merge.merge(ctx.p2(), wc=wctx) - return wctx - else: - return ctx.p1() - - def get_diff_chunks( ui, repo, @@ -273,7 +244,7 @@ ui, ctx.repo(), diffopts, - diff_parent(ctx), + diffutil.diff_parent(ctx), ctx, match=self._makefilematcher(ctx), stat=stat, @@ -286,7 +257,7 @@ ui, ctx.repo(), diffopts, - diff_parent(ctx), + diffutil.diff_parent(ctx), ctx, match=self._makefilematcher(ctx), stat=stat,