[PATCH 4 of 4] histedit: handle multiple space between action and hash (issue3893)

Augie Fackler raf at durin42.com
Thu Apr 18 10:00:58 CDT 2013


On Thu, Apr 18, 2013 at 04:14:35PM +0200, pierre-yves.david at logilab.fr wrote:
> # HG changeset patch
> # User Pierre-Yves David <pierre-yves.david at logilab.fr>
> # Date 1366293449 -7200
> #      Thu Apr 18 15:57:29 2013 +0200
> # Node ID faf243b081f1aa1b141300158089ee978e64b618
> # Parent  a87a4fc0a11c51fcf7ec7d67ddf4fec319217678
> histedit: handle multiple space between action and hash (issue3893)
>
> There is some clue that the previous code intended to handle that but it was
> actually not the case.
>
> As a result action could apply to the empty string '' changeset. Leading to the
> use the current working directory parent in come operation.
>
> diff --git a/hgext/histedit.py b/hgext/histedit.py
> --- a/hgext/histedit.py
> +++ b/hgext/histedit.py
> @@ -720,14 +720,11 @@ def verifyrules(rules, repo, ctxs):
>          raise util.Abort(_('must specify a rule for each changeset once'))
>      for r in rules:
>          if ' ' not in r:
>              raise util.Abort(_('malformed line "%s"') % r)
>          action, rest = r.split(' ', 1)
> -        if ' ' in rest.strip():
> -            ha, rest = rest.split(' ', 1)
> -        else:
> -            ha = r.strip()
> +        ha = rest.strip().split(' ', 1)[0]
>          try:
>              if repo[ha] not in ctxs:
>                  raise util.Abort(
>                      _('may not use changesets other than the ones listed'))
>          except error.RepoError:
> diff --git a/tests/test-histedit-arguments.t b/tests/test-histedit-arguments.t
> --- a/tests/test-histedit-arguments.t
> +++ b/tests/test-histedit-arguments.t
> @@ -66,5 +66,38 @@ Run on a revision not ancestors of the c
>    $ hg up 2
>    1 files updated, 0 files merged, 0 files removed, 0 files unresolved
>    $ hg histedit -r 4
>    abort: 08d98a8350f3 is not an ancestor of working directory
>    [255]
> +  $ hg up --quiet
> +
> +Test short version of command
> +---------------------------------------
> +
> +Note: we use various number of white space between command name and changeset
> +short hash. This test issue3893.
> +
> +So one is missing and one appear twice.

Huh? I'm not sure what this sentence means - it looks like we've got
all three changes, and they're just in order?

> +
> +  $ HGEDITOR=cat hg histedit "tip^^" --commands - << EOF
> +  > pick eb57da33312f 2 three
> +  > p    c8e68270e35a 3 four
> +  > f 08d98a8350f3 4 five
> +  > EOF
> +  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
> +  reverting alpha
> +  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
> +  four
> +  ***
> +  five
> +
> +
> +
> +  HG: Enter commit message.  Lines beginning with 'HG:' are removed.
> +  HG: Leave message empty to abort commit.
> +  HG: --
> +  HG: user: test
> +  HG: branch 'default'
> +  HG: changed alpha
> +  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
> +  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
> +  saved backup bundle to $TESTTMP/foo/.hg/strip-backup/*-backup.hg (glob)

Can we log some before and after here? I'm not following.


More information about the Mercurial-devel mailing list