##// END OF EJS Templates
histedit: removing the experimental config 'histeditng'...
histedit: removing the experimental config 'histeditng' This config has been around for about 2 years now. So, it can be assumed to be stable. Therefore, I am removing the config. This also makes the test 'test-histedit-base.t' compatible with chg. Test Plan: - Ran the test 'test-histedit-base.t' with and without '--chg' option. - Ran all the other tests without '--chg' option. - Checked the output of 'hg help histedit'. Differential Revision: https://phab.mercurial-scm.org/D942

File last commit:

r34490:270e344a default
r34490:270e344a default
Show More
test-histedit-arguments.t
552 lines | 14.6 KiB | text/troff | Tads3Lexer
/ tests / test-histedit-arguments.t
Pierre-Yves David
histedit-test: rename histedit-revspec into histedit-argument...
r19035 Test argument handling and various data parsing
==================================================
Enable extensions used by this test.
$ cat >>$HGRCPATH <<EOF
> [extensions]
> histedit=
> EOF
Repo setup.
$ hg init foo
$ cd foo
$ echo alpha >> alpha
$ hg addr
adding alpha
$ hg ci -m one
$ echo alpha >> alpha
$ hg ci -m two
$ echo alpha >> alpha
$ hg ci -m three
$ echo alpha >> alpha
$ hg ci -m four
$ echo alpha >> alpha
$ hg ci -m five
$ hg log --style compact --graph
@ 4[tip] 08d98a8350f3 1970-01-01 00:00 +0000 test
| five
|
o 3 c8e68270e35a 1970-01-01 00:00 +0000 test
| four
|
o 2 eb57da33312f 1970-01-01 00:00 +0000 test
| three
|
o 1 579e40513370 1970-01-01 00:00 +0000 test
| two
|
o 0 6058cbb6cfd7 1970-01-01 00:00 +0000 test
one
Siddharth Agarwal
histedit: abort gracefully on --continue/--abort with no state...
r22368 histedit --continue/--abort with no existing state
--------------------------------------------------
$ hg histedit --continue
abort: no histedit in progress
[255]
$ hg histedit --abort
abort: no histedit in progress
[255]
Pierre-Yves David
histedit-test: rename histedit-revspec into histedit-argument...
r19035 Run a dummy edit to make sure we get tip^^ correctly via revsingle.
--------------------------------------------------------------------
$ HGEDITOR=cat hg histedit "tip^^"
pick eb57da33312f 2 three
pick c8e68270e35a 3 four
pick 08d98a8350f3 4 five
# Edit history between eb57da33312f and 08d98a8350f3
#
Adrian Zgorzałek
histedit: clarify description of fold command...
r20503 # Commits are listed from least to most recent
#
liscju
histedit: adds hint how to reorder changesets at editor (issue3766)
r28396 # You can reorder changesets by reordering the lines
#
Pierre-Yves David
histedit-test: rename histedit-revspec into histedit-argument...
r19035 # Commands:
timeless
histedit: prefer edit commit, edit message, use commit...
r27674 #
# e, edit = use commit, but stop for amending
# m, mess = edit commit message without changing commit content
Pierre-Yves David
histedit-test: rename histedit-revspec into histedit-argument...
r19035 # p, pick = use commit
Saurabh Singh
histedit: removing the experimental config 'histeditng'...
r34490 # b, base = checkout changeset and apply further changesets from there
timeless
histedit: prefer edit commit, edit message, use commit...
r27674 # d, drop = remove commit from history
Matt Mackall
histedit: shorten new fold message...
r20511 # f, fold = use commit, but combine it with the one above
Ben Schmidt
histedit: modify rollup to discard date from the rollup commit (issue4820)...
r31056 # r, roll = like fold, but discard this commit's description and date
Pierre-Yves David
histedit-test: rename histedit-revspec into histedit-argument...
r19035 #
Run on a revision not ancestors of the current working directory.
--------------------------------------------------------------------
$ 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]
Pierre-Yves David
histedit: handle multiple spaces between action and hash (issue3893)...
r19039 $ hg up --quiet
David Soria Parra
histedit: select the lowest rev when looking for a root in a revset (bc)...
r20806
Test that we pick the minimum of a revrange
---------------------------------------
$ HGEDITOR=cat hg histedit '2::' --commands - << EOF
> pick eb57da33312f 2 three
> pick c8e68270e35a 3 four
> pick 08d98a8350f3 4 five
> EOF
$ hg up --quiet
$ HGEDITOR=cat hg histedit 'tip:2' --commands - << EOF
> pick eb57da33312f 2 three
> pick c8e68270e35a 3 four
> pick 08d98a8350f3 4 five
> EOF
$ hg up --quiet
Durham Goode
histedit: allow configuring default behavior...
r24009 Test config specified default
-----------------------------
$ HGEDITOR=cat hg histedit --config "histedit.defaultrev=only(.) - ::eb57da33312f" --commands - << EOF
> pick c8e68270e35a 3 four
> pick 08d98a8350f3 4 five
> EOF
FUJIWARA Katsunori
histedit: suggest "histedit --abort" for inconsistent histedit state...
r19847 Run on a revision not descendants of the initial parent
--------------------------------------------------------------------
Test the message shown for inconsistent histedit state, which may be
created (and forgotten) by Mercurial earlier than 2.7. This emulates
Mercurial earlier than 2.7 by renaming ".hg/histedit-state"
temporarily.
Durham Goode
histedit: allow histedit --continue when not on a descendant (BC)...
r24764 $ hg log -G -T '{rev} {shortest(node)} {desc}\n' -r 2::
@ 4 08d9 five
|
o 3 c8e6 four
|
o 2 eb57 three
|
Martijn Pieters
graphmod: set default edge styles for ascii graphs (BC)...
r28627 ~
FUJIWARA Katsunori
histedit: suggest "histedit --abort" for inconsistent histedit state...
r19847 $ HGEDITOR=cat hg histedit -r 4 --commands - << EOF
> edit 08d98a8350f3 4 five
> EOF
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
reverting alpha
timeless
histedit: list action when intervention is required
r27629 Editing (08d98a8350f3), you may commit or record as needed now.
(hg histedit --continue to resume)
FUJIWARA Katsunori
histedit: suggest "histedit --abort" for inconsistent histedit state...
r19847 [1]
timeless
histedit: suggest the correct tool to continue (not histedit)...
r28123 $ hg graft --continue
abort: no graft in progress
(continue: hg histedit --continue)
[255]
FUJIWARA Katsunori
histedit: suggest "histedit --abort" for inconsistent histedit state...
r19847 $ mv .hg/histedit-state .hg/histedit-state.back
$ hg update --quiet --clean 2
Durham Goode
histedit: allow histedit --continue when not on a descendant (BC)...
r24764 $ echo alpha >> alpha
FUJIWARA Katsunori
histedit: suggest "histedit --abort" for inconsistent histedit state...
r19847 $ mv .hg/histedit-state.back .hg/histedit-state
$ hg histedit --continue
Jun Wu
histedit: use scmutil.cleanupnodes (BC)...
r33351 saved backup bundle to $TESTTMP/foo/.hg/strip-backup/08d98a8350f3-02594089-histedit.hg (glob)
Durham Goode
histedit: allow histedit --continue when not on a descendant (BC)...
r24764 $ hg log -G -T '{rev} {shortest(node)} {desc}\n' -r 2::
@ 4 f5ed five
|
| o 3 c8e6 four
|/
o 2 eb57 three
|
Martijn Pieters
graphmod: set default edge styles for ascii graphs (BC)...
r28627 ~
FUJIWARA Katsunori
histedit: suggest "histedit --abort" for inconsistent histedit state...
r19847
Jun Wu
histedit: use scmutil.cleanupnodes (BC)...
r33351 $ hg unbundle -q $TESTTMP/foo/.hg/strip-backup/08d98a8350f3-02594089-histedit.hg
Durham Goode
histedit: allow histedit --continue when not on a descendant (BC)...
r24764 $ hg strip -q -r f5ed --config extensions.strip=
$ hg up -q 08d98a8350f3
FUJIWARA Katsunori
histedit: suggest "histedit --abort" for inconsistent histedit state...
r19847
Pierre-Yves David
histedit-test: test that missing revisions are detected...
r19040 Test that missing revisions are detected
---------------------------------------
$ HGEDITOR=cat hg histedit "tip^^" --commands - << EOF
> pick eb57da33312f 2 three
> pick 08d98a8350f3 4 five
> EOF
timeless
histedit: use parse-error exception for parsing
r27545 hg: parse error: missing rules for changeset c8e68270e35a
timeless
histedit: use single quotes in use warning
r29970 (use "drop c8e68270e35a" to discard, see also: 'hg help -e histedit.config')
Pierre-Yves David
histedit-test: test that missing revisions are detected...
r19040 [255]
Pierre-Yves David
histedit-test: test that extra revisions are detected...
r19041 Test that extra revisions are detected
---------------------------------------
$ HGEDITOR=cat hg histedit "tip^^" --commands - << EOF
> pick 6058cbb6cfd7 0 one
> pick c8e68270e35a 3 four
> pick 08d98a8350f3 4 five
> EOF
FUJIWARA Katsunori
histedit: show correct hash ID at verification error...
r27955 hg: parse error: pick "6058cbb6cfd7" changeset was not a candidate
timeless
histedit: report the unacceptable changeset
r27712 (only use listed changesets)
Pierre-Yves David
histedit-test: test that extra revisions are detected...
r19041 [255]
Pierre-Yves David
histedit-test: test malformed line...
r19042 Test malformed line
---------------------------------------
$ HGEDITOR=cat hg histedit "tip^^" --commands - << EOF
> pickeb57da33312f2three
> pick c8e68270e35a 3 four
> pick 08d98a8350f3 4 five
> EOF
timeless
histedit: use parse-error exception for parsing
r27545 hg: parse error: malformed line "pickeb57da33312f2three"
Pierre-Yves David
histedit-test: test malformed line...
r19042 [255]
Pierre-Yves David
histedit-test: test unknown changeset...
r19043 Test unknown changeset
---------------------------------------
$ HGEDITOR=cat hg histedit "tip^^" --commands - << EOF
> pick 0123456789ab 2 three
> pick c8e68270e35a 3 four
> pick 08d98a8350f3 4 five
> EOF
timeless
histedit: use parse-error exception for parsing
r27545 hg: parse error: unknown changeset 0123456789ab listed
Pierre-Yves David
histedit-test: test unknown changeset...
r19043 [255]
Pierre-Yves David
histedit-test: test unknown command...
r19044 Test unknown command
---------------------------------------
$ HGEDITOR=cat hg histedit "tip^^" --commands - << EOF
> coin eb57da33312f 2 three
> pick c8e68270e35a 3 four
> pick 08d98a8350f3 4 five
> EOF
timeless
histedit: use parse-error exception for parsing
r27545 hg: parse error: unknown action "coin"
Pierre-Yves David
histedit-test: test unknown command...
r19044 [255]
Pierre-Yves David
histedit: protect against duplicated entries...
r19047 Test duplicated changeset
---------------------------------------
So one is missing and one appear twice.
$ HGEDITOR=cat hg histedit "tip^^" --commands - << EOF
> pick eb57da33312f 2 three
> pick eb57da33312f 2 three
> pick 08d98a8350f3 4 five
> EOF
timeless
histedit: use parse-error exception for parsing
r27545 hg: parse error: duplicated command for changeset eb57da33312f
Pierre-Yves David
histedit: protect against duplicated entries...
r19047 [255]
timeless
histedit: handle exceptions from node.bin in fromrule
r27547 Test bogus rev
---------------------------------------
$ HGEDITOR=cat hg histedit "tip^^" --commands - << EOF
> pick eb57da33312f 2 three
> pick 0
> pick 08d98a8350f3 4 five
> EOF
hg: parse error: invalid changeset 0
[255]
Pierre-Yves David
histedit: handle multiple spaces between action and hash (issue3893)...
r19039 Test short version of command
---------------------------------------
Note: we use varying amounts of white space between command name and changeset
short hash. This tests issue3893.
$ HGEDITOR=cat hg histedit "tip^^" --commands - << EOF
> pick eb57da33312f 2 three
> p c8e68270e35a 3 four
> f 08d98a8350f3 4 five
> EOF
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
Jun Wu
histedit: use scmutil.cleanupnodes (BC)...
r33351 saved backup bundle to $TESTTMP/foo/.hg/strip-backup/c8e68270e35a-63d8b8d8-histedit.hg (glob)
David Soria Parra
histedit: select the lowest rev when looking for a root in a revset (bc)...
r20806
$ hg update -q 2
$ echo x > x
$ hg add x
$ hg commit -m'x' x
created new head
$ hg histedit -r 'heads(all())'
abort: The specified revisions must have exactly one common root
[255]
FUJIWARA Katsunori
histedit: use 'util.ellipsis' to trim description of each changesets...
r21858
Test that trimming description using multi-byte characters
--------------------------------------------------------------------
Augie Fackler
tests: replace yet more calls to `python` with $PYTHON...
r33262 $ $PYTHON <<EOF
FUJIWARA Katsunori
histedit: use 'util.ellipsis' to trim description of each changesets...
r21858 > fp = open('logfile', 'w')
> fp.write('12345678901234567890123456789012345678901234567890' +
> '12345') # there are 5 more columns for 80 columns
>
> # 2 x 4 = 8 columns, but 3 x 4 = 12 bytes
> fp.write(u'\u3042\u3044\u3046\u3048'.encode('utf-8'))
>
> fp.close()
> EOF
$ echo xx >> x
$ hg --encoding utf-8 commit --logfile logfile
$ HGEDITOR=cat hg --encoding utf-8 histedit tip
pick 3d3ea1f3a10b 5 1234567890123456789012345678901234567890123456789012345\xe3\x81\x82... (esc)
# Edit history between 3d3ea1f3a10b and 3d3ea1f3a10b
#
# Commits are listed from least to most recent
#
liscju
histedit: adds hint how to reorder changesets at editor (issue3766)
r28396 # You can reorder changesets by reordering the lines
#
FUJIWARA Katsunori
histedit: use 'util.ellipsis' to trim description of each changesets...
r21858 # Commands:
timeless
histedit: prefer edit commit, edit message, use commit...
r27674 #
# e, edit = use commit, but stop for amending
# m, mess = edit commit message without changing commit content
FUJIWARA Katsunori
histedit: use 'util.ellipsis' to trim description of each changesets...
r21858 # p, pick = use commit
Saurabh Singh
histedit: removing the experimental config 'histeditng'...
r34490 # b, base = checkout changeset and apply further changesets from there
timeless
histedit: prefer edit commit, edit message, use commit...
r27674 # d, drop = remove commit from history
FUJIWARA Katsunori
histedit: use 'util.ellipsis' to trim description of each changesets...
r21858 # f, fold = use commit, but combine it with the one above
Ben Schmidt
histedit: modify rollup to discard date from the rollup commit (issue4820)...
r31056 # r, roll = like fold, but discard this commit's description and date
FUJIWARA Katsunori
histedit: use 'util.ellipsis' to trim description of each changesets...
r21858 #
Durham Goode
histedit: fix keep during --continue...
r25330
Test --continue with --keep
$ hg strip -q -r . --config extensions.strip=
$ hg histedit '.^' -q --keep --commands - << EOF
> edit eb57da33312f 2 three
> pick f3cfcca30c44 4 x
> EOF
timeless
histedit: list action when intervention is required
r27629 Editing (eb57da33312f), you may commit or record as needed now.
(hg histedit --continue to resume)
Durham Goode
histedit: fix keep during --continue...
r25330 [1]
$ echo edit >> alpha
$ hg histedit -q --continue
$ hg log -G -T '{rev}:{node|short} {desc}'
@ 6:8fda0c726bf2 x
|
o 5:63379946892c three
|
| o 4:f3cfcca30c44 x
| |
| | o 3:2a30f3cfee78 four
| |/ ***
| | five
| o 2:eb57da33312f three
|/
o 1:579e40513370 two
|
o 0:6058cbb6cfd7 one
Christian Delahousse
histedit: delete histedit statefile on any exception during abort...
r26584
Test that abort fails gracefully on exception
----------------------------------------------
$ hg histedit . -q --commands - << EOF
> edit 8fda0c726bf2 6 x
> EOF
timeless
histedit: list action when intervention is required
r27629 Editing (8fda0c726bf2), you may commit or record as needed now.
(hg histedit --continue to resume)
Christian Delahousse
histedit: delete histedit statefile on any exception during abort...
r26584 [1]
Corrupt histedit state file
$ sed 's/8fda0c726bf2/123456789012/' .hg/histedit-state > ../corrupt-histedit
$ mv ../corrupt-histedit .hg/histedit-state
$ hg histedit --abort
warning: encountered an exception during histedit --abort; the repository may not have been completely cleaned up
Matt Harbison
tests: tolerate differences between Linux and Windows error strings...
r26952 abort: .*(No such file or directory:|The system cannot find the file specified).* (re)
Christian Delahousse
histedit: delete histedit statefile on any exception during abort...
r26584 [255]
Histedit state has been exited
$ hg summary -q
parent: 5:63379946892c
commit: 1 added, 1 unknown (new branch head)
update: 4 new changesets (update)
Gregory Szorc
histedit: pick an appropriate base changeset by default (BC)...
r27262 $ cd ..
Set up default base revision tests
$ hg init defaultbase
$ cd defaultbase
$ touch foo
$ hg -q commit -A -m root
$ echo 1 > foo
$ hg commit -m 'public 1'
$ hg phase --force --public -r .
$ echo 2 > foo
$ hg commit -m 'draft after public'
$ hg -q up -r 1
$ echo 3 > foo
$ hg commit -m 'head 1 public'
created new head
$ hg phase --force --public -r .
$ echo 4 > foo
$ hg commit -m 'head 1 draft 1'
$ echo 5 > foo
$ hg commit -m 'head 1 draft 2'
$ hg -q up -r 2
$ echo 6 > foo
$ hg commit -m 'head 2 commit 1'
$ echo 7 > foo
$ hg commit -m 'head 2 commit 2'
$ hg -q up -r 2
$ echo 8 > foo
$ hg commit -m 'head 3'
created new head
$ hg -q up -r 2
$ echo 9 > foo
$ hg commit -m 'head 4'
created new head
$ hg merge --tool :local -r 8
0 files updated, 1 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ hg commit -m 'merge head 3 into head 4'
$ echo 11 > foo
$ hg commit -m 'commit 1 after merge'
$ echo 12 > foo
$ hg commit -m 'commit 2 after merge'
$ hg log -G -T '{rev}:{node|short} {phase} {desc}\n'
@ 12:8cde254db839 draft commit 2 after merge
|
o 11:6f2f0241f119 draft commit 1 after merge
|
o 10:90506cc76b00 draft merge head 3 into head 4
|\
| o 9:f8607a373a97 draft head 4
| |
o | 8:0da92be05148 draft head 3
|/
| o 7:4c35cdf97d5e draft head 2 commit 2
| |
| o 6:931820154288 draft head 2 commit 1
|/
| o 5:8cdc02b9bc63 draft head 1 draft 2
| |
| o 4:463b8c0d2973 draft head 1 draft 1
| |
| o 3:23a0c4eefcbf public head 1 public
| |
o | 2:4117331c3abb draft draft after public
|/
o 1:4426d359ea59 public public 1
|
o 0:54136a8ddf32 public root
Default base revision should stop at public changesets
$ hg -q up 8cdc02b9bc63
$ hg histedit --commands - <<EOF
> pick 463b8c0d2973
> pick 8cdc02b9bc63
> EOF
Default base revision should stop at branchpoint
$ hg -q up 4c35cdf97d5e
$ hg histedit --commands - <<EOF
> pick 931820154288
> pick 4c35cdf97d5e
> EOF
Default base revision should stop at merge commit
$ hg -q up 8cde254db839
$ hg histedit --commands - <<EOF
> pick 6f2f0241f119
> pick 8cde254db839
> EOF
timeless
commit: block amend while histedit is in progress (issue4800)
r28359
commit --amend should abort if histedit is in progress
(issue4800) and markers are not being created.
Eventually, histedit could perhaps look at `source` extra,
in which case this test should be revisited.
$ hg -q up 8cde254db839
$ hg histedit 6f2f0241f119 --commands - <<EOF
> pick 8cde254db839
> edit 6f2f0241f119
> EOF
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
merging foo
warning: conflicts while merging foo! (edit, then use 'hg resolve --mark')
Fix up the change (pick 8cde254db839)
(hg histedit --continue to resume)
[1]
$ hg resolve -m --all
(no more unresolved files)
continue: hg histedit --continue
$ hg histedit --cont
merging foo
warning: conflicts while merging foo! (edit, then use 'hg resolve --mark')
Editing (6f2f0241f119), you may commit or record as needed now.
(hg histedit --continue to resume)
[1]
$ hg resolve -m --all
(no more unresolved files)
continue: hg histedit --continue
$ hg commit --amend -m 'reject this fold'
abort: histedit in progress
(use 'hg histedit --continue' or 'hg histedit --abort')
[255]
With markers enabled, histedit does not get confused, and
amend should not be blocked by the ongoing histedit.
$ cat >>$HGRCPATH <<EOF
> [experimental]
Boris Feld
test: update evolution config...
r33768 > stabilization=createmarkers,allowunstable
timeless
commit: block amend while histedit is in progress (issue4800)
r28359 > EOF
$ hg commit --amend -m 'allow this fold'
$ hg histedit --continue
Sean Farley
histedit: add experimental config for using the first word of the commit...
r29214
$ cd ..
Test autoverb feature
$ hg init autoverb
$ cd autoverb
$ echo alpha >> alpha
Sean Farley
histedit: move autoverb rule to the commit it matches...
r29470 $ hg ci -qAm one
Sean Farley
histedit: add experimental config for using the first word of the commit...
r29214 $ echo alpha >> alpha
Sean Farley
histedit: move autoverb rule to the commit it matches...
r29470 $ hg ci -qm two
$ echo beta >> beta
$ hg ci -qAm "roll! one"
Sean Farley
histedit: add experimental config for using the first word of the commit...
r29214
$ hg log --style compact --graph
Sean Farley
histedit: move autoverb rule to the commit it matches...
r29470 @ 2[tip] 4f34d0f8b5fa 1970-01-01 00:00 +0000 test
| roll! one
Sean Farley
histedit: add experimental config for using the first word of the commit...
r29214 |
o 1 579e40513370 1970-01-01 00:00 +0000 test
| two
|
o 0 6058cbb6cfd7 1970-01-01 00:00 +0000 test
one
Check that 'roll' is selected by default
Sean Farley
histedit: move autoverb rule to the commit it matches...
r29470 $ HGEDITOR=cat hg histedit 0 --config experimental.histedit.autoverb=True
pick 6058cbb6cfd7 0 one
roll 4f34d0f8b5fa 2 roll! one
Sean Farley
histedit: add experimental config for using the first word of the commit...
r29214 pick 579e40513370 1 two
Sean Farley
histedit: move autoverb rule to the commit it matches...
r29470 # Edit history between 6058cbb6cfd7 and 4f34d0f8b5fa
Sean Farley
histedit: add experimental config for using the first word of the commit...
r29214 #
# Commits are listed from least to most recent
#
# You can reorder changesets by reordering the lines
#
# Commands:
#
# e, edit = use commit, but stop for amending
# m, mess = edit commit message without changing commit content
# p, pick = use commit
Saurabh Singh
histedit: removing the experimental config 'histeditng'...
r34490 # b, base = checkout changeset and apply further changesets from there
Sean Farley
histedit: add experimental config for using the first word of the commit...
r29214 # d, drop = remove commit from history
# f, fold = use commit, but combine it with the one above
Ben Schmidt
histedit: modify rollup to discard date from the rollup commit (issue4820)...
r31056 # r, roll = like fold, but discard this commit's description and date
Sean Farley
histedit: add experimental config for using the first word of the commit...
r29214 #
$ cd ..