[PATCH] patch: allow copy information to be passed in

Augie Fackler raf at durin42.com
Mon Jun 27 12:54:47 EDT 2016


Sure, queued

> On Jun 27, 2016, at 9:11 AM, Henrik Stuart <henriks+hg at unity3d.com> wrote:
> 
> # HG changeset patch
> # User Henrik Stuart <henriks at unity3d.com>
> # Date 1467022278 -7200
> #      Mon Jun 27 12:11:18 2016 +0200
> # Node ID de6b1dadad4feafa702bf9eef71699d37edd254f
> # Parent  b62bce819d0cafcd94e3838e97062b42c9cb13b2
> patch: allow copy information to be passed in
> 
> When displaying patches from graphical tools where you can browse through
> individual files, with diff being called separately on each, recomputing the
> limits of file copy history can become rather expensive on large repositories.
> Instead, we can compute it once and pass it in for subsequent calls.
> 
> diff --git a/mercurial/patch.py b/mercurial/patch.py
> --- a/mercurial/patch.py
> +++ b/mercurial/patch.py
> @@ -2184,7 +2184,7 @@
>     return mdiff.diffopts(**buildopts)
> 
> def diff(repo, node1=None, node2=None, match=None, changes=None, opts=None,
> -         losedatafn=None, prefix='', relroot=''):
> +         losedatafn=None, prefix='', relroot='', copy=None):
>     '''yields diff of changes to files between two nodes, or node and
>     working directory.
> 
> @@ -2203,7 +2203,10 @@
>     display (used for subrepos).
> 
>     relroot, if not empty, must be normalized with a trailing /. Any match
> -    patterns that fall outside it will be ignored.'''
> +    patterns that fall outside it will be ignored.
> +
> +    copy, if not empty, should contain mappings {dst at y: src at x} of copy
> +    information.'''
> 
>     if opts is None:
>         opts = mdiff.defaultopts
> @@ -2250,9 +2253,10 @@
>         hexfunc = short
>     revs = [hexfunc(node) for node in [ctx1.node(), ctx2.node()] if node]
> 
> -    copy = {}
> -    if opts.git or opts.upgrade:
> -        copy = copies.pathcopies(ctx1, ctx2, match=match)
> +    if copy is None:
> +        copy = {}
> +        if opts.git or opts.upgrade:
> +            copy = copies.pathcopies(ctx1, ctx2, match=match)
> 
>     if relroot is not None:
>         if not relfiltered:
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at mercurial-scm.org
> https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 801 bytes
Desc: Message signed with OpenPGP using GPGMail
URL: <http://www.mercurial-scm.org/pipermail/mercurial-devel/attachments/20160627/7307e1f1/attachment.sig>


More information about the Mercurial-devel mailing list