Mercurial > evolve
changeset 1598:2a08ef812b84
evolve: make split respect rev args passed without --rev or -r
Currently, if one runs `hg split .` or `hg split`, it will fail
with an exception. This happens becuase we only expect revision
args to be passed as --rev/-r ones and don't treat unnamed args
properly or add default values if no args are provided.
author | Kostia Balytskyi <ikostia@fb.com> |
---|---|
date | Thu, 04 Feb 2016 02:46:40 -0800 |
parents | 7876ed4fceb7 |
children | f932853783a5 99077dbb83e0 |
files | hgext/evolve.py tests/test-split.t |
diffstat | 2 files changed, 51 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- a/hgext/evolve.py Thu Feb 04 01:19:14 2016 +0000 +++ b/hgext/evolve.py Thu Feb 04 02:46:40 2016 -0800 @@ -2723,16 +2723,13 @@ tr = wlock = lock = None newcommits = [] - revopt = opts.get('rev') - if revopt: - revs = scmutil.revrange(repo, revopt) - if len(revs) != 1: - raise error.Abort(_("you can only specify one revision to split")) - else: - rev = list(revs)[0] - else: - rev = '.' - + revarg = (list(revs) + opts.get('rev')) or ['.'] + if len(revarg) != 1: + msg = _("more than one revset is given") + hnt = _("use either `hg split <rs>` or `hg split --rev <rs>`, not both") + raise error.Abort(msg, hint=hnt) + + rev = scmutil.revsingle(repo, revarg[0]) try: wlock = repo.wlock() lock = repo.lock()
--- a/tests/test-split.t Thu Feb 04 01:19:14 2016 +0000 +++ b/tests/test-split.t Thu Feb 04 02:46:40 2016 -0800 @@ -320,9 +320,14 @@ bookA 19:a2b5c9d9b362 * bookB 19:a2b5c9d9b362 -Cannot specify multiple revisions with -r +Lastest revision is selected if multiple are given to -r $ hg split -r "desc(_a)::" - abort: you can only specify one revision to split + (leaving bookmark bookB) + 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + adding _d + diff --git a/_d b/_d + new file mode 100644 + examine changes to '_d'? [Ynesfdaq?] abort: response expected [255] Cannot split a commit that is not a head if instability is not allowed @@ -335,4 +340,41 @@ abort: cannot split commit: ced8fbcce3a7 not a head [255] +Changing evolution level to createmarkers + $ echo "[experimental]" >> $HGRCPATH + $ echo "evolution=createmarkers" >> $HGRCPATH +Running split without any revision operates on the parent of the working copy + $ hg split << EOF + > q + > EOF + 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + adding _d + diff --git a/_d b/_d + new file mode 100644 + examine changes to '_d'? [Ynesfdaq?] q + + abort: user quit + [255] + +Running split with tip revision, specified as unnamed argument + $ hg split . << EOF + > q + > EOF + 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + adding _d + diff --git a/_d b/_d + new file mode 100644 + examine changes to '_d'? [Ynesfdaq?] q + + abort: user quit + [255] + +Running split with both unnamed and named revision arguments shows an error msg + $ hg split . --rev .^ << EOF + > q + > EOF + abort: more than one revset is given + (use either `hg split <rs>` or `hg split --rev <rs>`, not both) + [255] +