[PATCH] histedit: prevent parent guessed via --outgoing from being a revset (issue3770)

Matt Mackall mpm at selenic.com
Wed Jan 30 14:25:03 CST 2013


On Wed, 2013-01-30 at 10:58 -0500, Augie Fackler wrote:
> # HG changeset patch
> # User Augie Fackler <raf at durin42.com>
> # Date 1359561448 18000
> # Branch stable
> # Node ID d2de19a50f101734629c8c4d05b91780c0d7fe13
> # Parent  692cbda1eb50fe30c70792cb1e9380b28769467c
> histedit: prevent parent guessed via --outgoing from being a revset (issue3770)
> 
> If the binary hash of the parent node guessed via --outgoing happened
> to contain a special revset character (":" was specified in the bug),
> the revset parser would abort. Hexlifying the node before passing it
> to the revsingle call should fix that.

This looks fine. We generally prefer list comprehensions to map these
days, but post-2.5, the outgoing() revset approach is probably the
answer so we can put this in as-is.

> diff --git a/hgext/histedit.py b/hgext/histedit.py
> --- a/hgext/histedit.py
> +++ b/hgext/histedit.py
> @@ -454,8 +454,12 @@
>          if revs:
>              revs = [repo.lookup(rev) for rev in revs]
>  
> -        parent = discovery.findcommonoutgoing(
> -            repo, other, [], force=opts.get('force')).missing[0:1]
> +        # hexlify nodes from outgoing, because we're going to parse
> +        # parent[0] using revsingle below, and if the binary hash
> +        # contains special revset characters like ":" the revset
> +        # parser can choke.
> +        parent = map(node.hex, discovery.findcommonoutgoing(
> +            repo, other, [], force=opts.get('force')).missing[0:1])
>      else:
>          if opts.get('force'):
>              raise util.Abort(_('--force only allowed with --outgoing'))
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at selenic.com
> http://selenic.com/mailman/listinfo/mercurial-devel


-- 
Mathematics is the supreme nostalgia of our time.




More information about the Mercurial-devel mailing list