test-histedit-edit.t
399 lines
| 10.2 KiB
| text/troff
|
Tads3Lexer
/ tests / test-histedit-edit.t
Mads Kiilerich
|
r17085 | $ . "$TESTDIR/histedit-helpers.sh" | ||
$ cat >> $HGRCPATH <<EOF | ||||
> [extensions] | ||||
> histedit= | ||||
Mateusz Kwapich
|
r24111 | > strip= | ||
Mads Kiilerich
|
r17085 | > EOF | ||
$ initrepo () | ||||
> { | ||||
> hg init r | ||||
> cd r | ||||
Mateusz Kwapich
|
r24142 | > for x in a b c d e f g; do | ||
Mads Kiilerich
|
r17085 | > echo $x > $x | ||
> hg add $x | ||||
> hg ci -m $x | ||||
> done | ||||
> } | ||||
$ initrepo | ||||
log before edit | ||||
$ hg log --graph | ||||
Mateusz Kwapich
|
r24142 | @ changeset: 6:3c6a8ed2ebe8 | ||
Mads Kiilerich
|
r17085 | | tag: tip | ||
| user: test | ||||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
Mateusz Kwapich
|
r24142 | | summary: g | ||
| | ||||
o changeset: 5:652413bf663e | ||||
| user: test | ||||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
Mads Kiilerich
|
r17085 | | summary: f | ||
| | ||||
o changeset: 4:e860deea161a | ||||
| user: test | ||||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: e | ||||
| | ||||
o changeset: 3:055a42cdd887 | ||||
| user: test | ||||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: d | ||||
| | ||||
o changeset: 2:177f92b77385 | ||||
| user: test | ||||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: c | ||||
| | ||||
o changeset: 1:d2ae7f538514 | ||||
| user: test | ||||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: b | ||||
| | ||||
o changeset: 0:cb9a9f314b8b | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: a | ||||
edit the history | ||||
Pierre-Yves David
|
r19019 | $ hg histedit 177f92b77385 --commands - 2>&1 << EOF| fixbundle | ||
> pick 177f92b77385 c | ||||
> pick 055a42cdd887 d | ||||
> edit e860deea161a e | ||||
> pick 652413bf663e f | ||||
Mateusz Kwapich
|
r24142 | > pick 3c6a8ed2ebe8 g | ||
Pierre-Yves David
|
r19019 | > EOF | ||
Mateusz Kwapich
|
r24142 | 0 files updated, 0 files merged, 3 files removed, 0 files unresolved | ||
Augie Fackler
|
r18934 | Make changes as needed, you may commit or record as needed now. | ||
Mads Kiilerich
|
r17085 | When you are finished, run hg histedit --continue to resume. | ||
Mateusz Kwapich
|
r24142 | edit the plan | ||
$ hg histedit --edit-plan --commands - 2>&1 << EOF | ||||
> edit e860deea161a e | ||||
> pick 652413bf663e f | ||||
> drop 3c6a8ed2ebe8 g | ||||
> EOF | ||||
Pierre-Yves David
|
r17749 | Go at a random point and try to continue | ||
$ hg id -n | ||||
3+ | ||||
$ hg up 0 | ||||
Matt Mackall
|
r19479 | abort: histedit in progress | ||
(use 'hg histedit --continue' or 'hg histedit --abort') | ||||
Pierre-Yves David
|
r17749 | [255] | ||
Mateusz Kwapich
|
r24111 | Try to delete necessary commit | ||
Durham Goode
|
r24626 | $ hg strip -r 652413b | ||
abort: histedit in progress, can't strip 652413bf663e | ||||
Mateusz Kwapich
|
r24111 | [255] | ||
Matt Mackall
|
r19496 | commit, then edit the revision | ||
$ hg ci -m 'wat' | ||||
Mads Kiilerich
|
r17085 | created new head | ||
$ echo a > e | ||||
Augie Fackler
|
r24299 | |||
qnew should fail while we're in the middle of the edit step | ||||
$ hg --config extensions.mq= qnew please-fail | ||||
abort: histedit in progress | ||||
(use 'hg histedit --continue' or 'hg histedit --abort') | ||||
[255] | ||||
Mads Kiilerich
|
r17087 | $ HGEDITOR='echo foobaz > ' hg histedit --continue 2>&1 | fixbundle | ||
Mads Kiilerich
|
r17085 | 0 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||
0 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ hg log --graph | ||||
Pierre-Yves David
|
r18437 | @ changeset: 6:b5f70786f9b0 | ||
Mads Kiilerich
|
r17085 | | tag: tip | ||
| user: test | ||||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: f | ||||
| | ||||
Pierre-Yves David
|
r18437 | o changeset: 5:a5e1ba2f7afb | ||
Mads Kiilerich
|
r17085 | | user: test | ||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: foobaz | ||||
| | ||||
o changeset: 4:1a60820cd1f6 | ||||
| user: test | ||||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: wat | ||||
| | ||||
o changeset: 3:055a42cdd887 | ||||
| user: test | ||||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: d | ||||
| | ||||
o changeset: 2:177f92b77385 | ||||
| user: test | ||||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: c | ||||
| | ||||
o changeset: 1:d2ae7f538514 | ||||
| user: test | ||||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: b | ||||
| | ||||
o changeset: 0:cb9a9f314b8b | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: a | ||||
$ hg cat e | ||||
a | ||||
Durham Goode
|
r24757 | Stripping necessary commits should not break --abort | ||
$ hg histedit 1a60820cd1f6 --commands - 2>&1 << EOF| fixbundle | ||||
> edit 1a60820cd1f6 wat | ||||
> pick a5e1ba2f7afb foobaz | ||||
> pick b5f70786f9b0 g | ||||
> EOF | ||||
0 files updated, 0 files merged, 2 files removed, 0 files unresolved | ||||
Make changes as needed, you may commit or record as needed now. | ||||
When you are finished, run hg histedit --continue to resume. | ||||
$ mv .hg/histedit-state .hg/histedit-state.bak | ||||
$ hg strip -q -r b5f70786f9b0 | ||||
$ mv .hg/histedit-state.bak .hg/histedit-state | ||||
$ hg histedit --abort | ||||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
added 1 changesets with 1 changes to 3 files | ||||
2 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ hg log -r . | ||||
changeset: 6:b5f70786f9b0 | ||||
tag: tip | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: f | ||||
Pierre-Yves David
|
r18437 | check histedit_source | ||
$ hg log --debug --rev 5 | ||||
changeset: 5:a5e1ba2f7afb899ef1581cea528fd885d2fca70d | ||||
phase: draft | ||||
parent: 4:1a60820cd1f6004a362aa622ebc47d59bc48eb34 | ||||
parent: -1:0000000000000000000000000000000000000000 | ||||
manifest: 5:5ad3be8791f39117565557781f5464363b918a45 | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
files: e | ||||
extra: branch=default | ||||
extra: histedit_source=e860deea161a2f77de56603b340ebbb4536308ae | ||||
description: | ||||
foobaz | ||||
Pierre-Yves David
|
r19019 | $ hg histedit tip --commands - 2>&1 <<EOF| fixbundle | ||
Pierre-Yves David
|
r18437 | > edit b5f70786f9b0 f | ||
Mads Kiilerich
|
r17085 | > EOF | ||
0 files updated, 0 files merged, 1 files removed, 0 files unresolved | ||||
Augie Fackler
|
r18934 | Make changes as needed, you may commit or record as needed now. | ||
Mads Kiilerich
|
r17085 | When you are finished, run hg histedit --continue to resume. | ||
$ hg status | ||||
A f | ||||
Bryan O'Sullivan
|
r19213 | |||
$ hg summary | ||||
parent: 5:a5e1ba2f7afb | ||||
foobaz | ||||
branch: default | ||||
commit: 1 added (new branch head) | ||||
update: 1 new changesets (update) | ||||
Bryan O'Sullivan
|
r19215 | hist: 1 remaining (histedit --continue) | ||
Bryan O'Sullivan
|
r19213 | |||
FUJIWARA Katsunori
|
r21409 | (test also that editor is invoked if histedit is continued for | ||
"edit" action) | ||||
$ HGEDITOR='cat' hg histedit --continue | ||||
f | ||||
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: added f | ||||
Mads Kiilerich
|
r17085 | 0 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||
Durham Goode
|
r23835 | saved backup bundle to $TESTTMP/r/.hg/strip-backup/b5f70786f9b0-c28d9c86-backup.hg (glob) | ||
Pierre-Yves David
|
r18437 | |||
Mads Kiilerich
|
r17085 | $ hg status | ||
log after edit | ||||
$ hg log --limit 1 | ||||
Pierre-Yves David
|
r18437 | changeset: 6:a107ee126658 | ||
Mads Kiilerich
|
r17085 | tag: tip | ||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: f | ||||
say we'll change the message, but don't. | ||||
$ cat > ../edit.sh <<EOF | ||||
Mads Kiilerich
|
r17086 | > cat "\$1" | sed s/pick/mess/ > tmp | ||
> mv tmp "\$1" | ||||
Mads Kiilerich
|
r17085 | > EOF | ||
Mads Kiilerich
|
r17086 | $ HGEDITOR="sh ../edit.sh" hg histedit tip 2>&1 | fixbundle | ||
Mads Kiilerich
|
r17085 | 0 files updated, 0 files merged, 1 files removed, 0 files unresolved | ||
0 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ hg status | ||||
$ hg log --limit 1 | ||||
Pierre-Yves David
|
r18437 | changeset: 6:1fd3b2fe7754 | ||
Mads Kiilerich
|
r17085 | tag: tip | ||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: f | ||||
modify the message | ||||
FUJIWARA Katsunori
|
r21028 | |||
check saving last-message.txt, at first | ||||
$ cat > $TESTTMP/commitfailure.py <<EOF | ||||
> from mercurial import util | ||||
> def reposetup(ui, repo): | ||||
> class commitfailure(repo.__class__): | ||||
> def commit(self, *args, **kwargs): | ||||
> raise util.Abort('emulating unexpected abort') | ||||
> repo.__class__ = commitfailure | ||||
> EOF | ||||
FUJIWARA Katsunori
|
r21233 | $ cat >> .hg/hgrc <<EOF | ||
FUJIWARA Katsunori
|
r21028 | > [extensions] | ||
FUJIWARA Katsunori
|
r21233 | > # this failure occurs before editor invocation | ||
FUJIWARA Katsunori
|
r21028 | > commitfailure = $TESTTMP/commitfailure.py | ||
> EOF | ||||
$ cat > $TESTTMP/editor.sh <<EOF | ||||
> echo "==== before editing" | ||||
> cat \$1 | ||||
> echo "====" | ||||
> echo "check saving last-message.txt" >> \$1 | ||||
> EOF | ||||
FUJIWARA Katsunori
|
r21233 | |||
(test that editor is not invoked before transaction starting) | ||||
$ rm -f .hg/last-message.txt | ||||
$ HGEDITOR="sh $TESTTMP/editor.sh" hg histedit tip --commands - 2>&1 << EOF | fixbundle | ||||
> mess 1fd3b2fe7754 f | ||||
> EOF | ||||
0 files updated, 0 files merged, 1 files removed, 0 files unresolved | ||||
abort: emulating unexpected abort | ||||
Danek Duvall
|
r21930 | $ test -f .hg/last-message.txt | ||
FUJIWARA Katsunori
|
r21233 | [1] | ||
$ cat >> .hg/hgrc <<EOF | ||||
> [extensions] | ||||
> commitfailure = ! | ||||
> EOF | ||||
$ hg histedit --abort -q | ||||
(test that editor is invoked and commit message is saved into | ||||
"last-message.txt") | ||||
$ cat >> .hg/hgrc <<EOF | ||||
> [hooks] | ||||
> # this failure occurs after editor invocation | ||||
> pretxncommit.unexpectedabort = false | ||||
> EOF | ||||
FUJIWARA Katsunori
|
r21407 | $ hg status --rev '1fd3b2fe7754^1' --rev 1fd3b2fe7754 | ||
A f | ||||
FUJIWARA Katsunori
|
r21028 | $ rm -f .hg/last-message.txt | ||
FUJIWARA Katsunori
|
r21407 | $ HGEDITOR="sh $TESTTMP/editor.sh" hg histedit tip --commands - 2>&1 << EOF | ||
FUJIWARA Katsunori
|
r21028 | > mess 1fd3b2fe7754 f | ||
> EOF | ||||
0 files updated, 0 files merged, 1 files removed, 0 files unresolved | ||||
FUJIWARA Katsunori
|
r21407 | adding f | ||
FUJIWARA Katsunori
|
r21028 | ==== before editing | ||
f | ||||
FUJIWARA Katsunori
|
r21407 | |||
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: added f | ||||
FUJIWARA Katsunori
|
r21028 | ==== | ||
FUJIWARA Katsunori
|
r21233 | transaction abort! | ||
rollback completed | ||||
note: commit message saved in .hg/last-message.txt | ||||
abort: pretxncommit.unexpectedabort hook exited with status 1 | ||||
FUJIWARA Katsunori
|
r21407 | [255] | ||
FUJIWARA Katsunori
|
r21028 | $ cat .hg/last-message.txt | ||
f | ||||
FUJIWARA Katsunori
|
r21407 | |||
FUJIWARA Katsunori
|
r21028 | check saving last-message.txt | ||
FUJIWARA Katsunori
|
r21409 | (test also that editor is invoked if histedit is continued for "message" | ||
action) | ||||
$ HGEDITOR=cat hg histedit --continue | ||||
f | ||||
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: added f | ||||
transaction abort! | ||||
rollback completed | ||||
note: commit message saved in .hg/last-message.txt | ||||
abort: pretxncommit.unexpectedabort hook exited with status 1 | ||||
[255] | ||||
FUJIWARA Katsunori
|
r21233 | $ cat >> .hg/hgrc <<EOF | ||
> [hooks] | ||||
> pretxncommit.unexpectedabort = | ||||
FUJIWARA Katsunori
|
r21028 | > EOF | ||
$ hg histedit --abort -q | ||||
then, check "modify the message" itself | ||||
Pierre-Yves David
|
r19019 | $ hg histedit tip --commands - 2>&1 << EOF | fixbundle | ||
Pierre-Yves David
|
r18437 | > mess 1fd3b2fe7754 f | ||
Mads Kiilerich
|
r17085 | > EOF | ||
0 files updated, 0 files merged, 1 files removed, 0 files unresolved | ||||
0 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ hg status | ||||
$ hg log --limit 1 | ||||
Pierre-Yves David
|
r19019 | changeset: 6:62feedb1200e | ||
Mads Kiilerich
|
r17085 | tag: tip | ||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
Pierre-Yves David
|
r19019 | summary: f | ||
Mads Kiilerich
|
r17085 | |||
rollback should not work after a histedit | ||||
$ hg rollback | ||||
no rollback information available | ||||
[1] | ||||
$ cd .. | ||||
Bryan O'Sullivan
|
r18913 | $ hg clone -qr0 r r0 | ||
$ cd r0 | ||||
$ hg phase -fdr0 | ||||
Pierre-Yves David
|
r19019 | $ hg histedit --commands - 0 2>&1 << EOF | ||
> edit cb9a9f314b8b a > $EDITED | ||||
> EOF | ||||
Bryan O'Sullivan
|
r18913 | 0 files updated, 0 files merged, 1 files removed, 0 files unresolved | ||
adding a | ||||
Matt Mackall
|
r18942 | Make changes as needed, you may commit or record as needed now. | ||
Bryan O'Sullivan
|
r18913 | When you are finished, run hg histedit --continue to resume. | ||
Matt Mackall
|
r18942 | [1] | ||
Bryan O'Sullivan
|
r18913 | $ HGEDITOR=true hg histedit --continue | ||
0 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
Durham Goode
|
r23835 | saved backup bundle to $TESTTMP/r0/.hg/strip-backup/cb9a9f314b8b-cc5ccb0b-backup.hg (glob) | ||