test-histedit-edit.t
556 lines
| 13.5 KiB
| text/troff
|
Tads3Lexer
/ tests / test-histedit-edit.t
|
r17085 | $ . "$TESTDIR/histedit-helpers.sh" | ||
$ cat >> $HGRCPATH <<EOF | ||||
> [extensions] | ||||
> histedit= | ||||
|
r24111 | > strip= | ||
|
r41249 | > mockmakedate = $TESTDIR/mockmakedate.py | ||
|
r17085 | > EOF | ||
$ initrepo () | ||||
> { | ||||
> hg init r | ||||
> cd r | ||||
|
r24142 | > for x in a b c d e f g; do | ||
|
r17085 | > echo $x > $x | ||
> hg add $x | ||||
> hg ci -m $x | ||||
> done | ||||
> } | ||||
$ initrepo | ||||
log before edit | ||||
$ hg log --graph | ||||
|
r24142 | @ changeset: 6:3c6a8ed2ebe8 | ||
|
r17085 | | tag: tip | ||
| user: test | ||||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
|
r24142 | | summary: g | ||
| | ||||
o changeset: 5:652413bf663e | ||||
| user: test | ||||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
|
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 | ||||
|
r27544 | dirty a file | ||
$ echo a > g | ||||
$ hg histedit 177f92b77385 --commands - 2>&1 << EOF | ||||
> EOF | ||||
abort: uncommitted changes | ||||
|
r46444 | [20] | ||
|
r27544 | $ echo g > g | ||
|
r17085 | |||
edit the history | ||||
|
r19019 | $ hg histedit 177f92b77385 --commands - 2>&1 << EOF| fixbundle | ||
> pick 177f92b77385 c | ||||
> pick 055a42cdd887 d | ||||
> edit e860deea161a e | ||||
> pick 652413bf663e f | ||||
|
r24142 | > pick 3c6a8ed2ebe8 g | ||
|
r19019 | > EOF | ||
|
r24142 | 0 files updated, 0 files merged, 3 files removed, 0 files unresolved | ||
|
r46719 | Editing (e860deea161a), commit as needed now to split the change | ||
(to edit e860deea161a, `hg histedit --continue` after making changes) | ||||
|
r17085 | |||
|
r28890 | try to update and get an error | ||
$ hg update tip | ||||
abort: histedit in progress | ||||
(use 'hg histedit --continue' or 'hg histedit --abort') | ||||
|
r46444 | [20] | ||
|
r28890 | |||
|
r24920 | edit the plan via the editor | ||
|
r24933 | $ cat >> $TESTTMP/editplan.sh <<EOF | ||
|
r24920 | > cat > \$1 <<EOF2 | ||
> drop e860deea161a e | ||||
> drop 652413bf663e f | ||||
> drop 3c6a8ed2ebe8 g | ||||
> EOF2 | ||||
> EOF | ||||
|
r24933 | $ HGEDITOR="sh $TESTTMP/editplan.sh" hg histedit --edit-plan | ||
|
r24920 | $ cat .hg/histedit-state | ||
v1 | ||||
055a42cdd88768532f9cf79daa407fc8d138de9b | ||||
3c6a8ed2ebe862cc949d2caa30775dd6f16fb799 | ||||
False | ||||
3 | ||||
drop | ||||
e860deea161a2f77de56603b340ebbb4536308ae | ||||
drop | ||||
652413bf663ef2a641cab26574e46d5f5a64a55a | ||||
drop | ||||
3c6a8ed2ebe862cc949d2caa30775dd6f16fb799 | ||||
0 | ||||
strip-backup/177f92b77385-0ebe6a8f-histedit.hg | ||||
edit the plan via --commands | ||||
|
r24142 | $ hg histedit --edit-plan --commands - 2>&1 << EOF | ||
> edit e860deea161a e | ||||
> pick 652413bf663e f | ||||
> drop 3c6a8ed2ebe8 g | ||||
> EOF | ||||
|
r24920 | $ cat .hg/histedit-state | ||
v1 | ||||
055a42cdd88768532f9cf79daa407fc8d138de9b | ||||
3c6a8ed2ebe862cc949d2caa30775dd6f16fb799 | ||||
False | ||||
3 | ||||
edit | ||||
e860deea161a2f77de56603b340ebbb4536308ae | ||||
pick | ||||
652413bf663ef2a641cab26574e46d5f5a64a55a | ||||
drop | ||||
3c6a8ed2ebe862cc949d2caa30775dd6f16fb799 | ||||
0 | ||||
strip-backup/177f92b77385-0ebe6a8f-histedit.hg | ||||
|
r24142 | |||
|
r17749 | Go at a random point and try to continue | ||
$ hg id -n | ||||
3+ | ||||
$ hg up 0 | ||||
|
r19479 | abort: histedit in progress | ||
(use 'hg histedit --continue' or 'hg histedit --abort') | ||||
|
r46444 | [20] | ||
|
r17749 | |||
|
r24111 | Try to delete necessary commit | ||
|
r24626 | $ hg strip -r 652413b | ||
abort: histedit in progress, can't strip 652413bf663e | ||||
|
r24111 | [255] | ||
|
r19496 | commit, then edit the revision | ||
$ hg ci -m 'wat' | ||||
|
r17085 | created new head | ||
$ echo a > e | ||||
|
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') | ||||
|
r46444 | [20] | ||
|
r17087 | $ HGEDITOR='echo foobaz > ' hg histedit --continue 2>&1 | fixbundle | ||
|
r17085 | |||
$ hg log --graph | ||||
|
r18437 | @ changeset: 6:b5f70786f9b0 | ||
|
r17085 | | tag: tip | ||
| user: test | ||||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: f | ||||
| | ||||
|
r18437 | o changeset: 5:a5e1ba2f7afb | ||
|
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 | ||||
|
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 | ||||
|
r46719 | Editing (1a60820cd1f6), commit as needed now to split the change | ||
(to edit 1a60820cd1f6, `hg histedit --continue` after making changes) | ||||
|
r24757 | |||
$ 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 | ||||
|
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 | ||||
|
r19019 | $ hg histedit tip --commands - 2>&1 <<EOF| fixbundle | ||
|
r18437 | > edit b5f70786f9b0 f | ||
|
r17085 | > EOF | ||
0 files updated, 0 files merged, 1 files removed, 0 files unresolved | ||||
|
r46719 | Editing (b5f70786f9b0), commit as needed now to split the change | ||
(to edit b5f70786f9b0, `hg histedit --continue` after making changes) | ||||
|
r17085 | $ hg status | ||
A f | ||||
|
r19213 | |||
$ hg summary | ||||
parent: 5:a5e1ba2f7afb | ||||
foobaz | ||||
branch: default | ||||
commit: 1 added (new branch head) | ||||
update: 1 new changesets (update) | ||||
|
r25382 | phases: 7 draft | ||
|
r19215 | hist: 1 remaining (histedit --continue) | ||
|
r19213 | |||
|
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 | ||||
|
r35394 | saved backup bundle to $TESTTMP/r/.hg/strip-backup/b5f70786f9b0-c28d9c86-histedit.hg | ||
|
r18437 | |||
|
r17085 | $ hg status | ||
log after edit | ||||
$ hg log --limit 1 | ||||
|
r18437 | changeset: 6:a107ee126658 | ||
|
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 | ||||
|
r17086 | > cat "\$1" | sed s/pick/mess/ > tmp | ||
> mv tmp "\$1" | ||||
|
r17085 | > EOF | ||
|
r17086 | $ HGEDITOR="sh ../edit.sh" hg histedit tip 2>&1 | fixbundle | ||
|
r17085 | $ hg status | ||
$ hg log --limit 1 | ||||
|
r18437 | changeset: 6:1fd3b2fe7754 | ||
|
r17085 | tag: tip | ||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: f | ||||
modify the message | ||||
|
r21028 | |||
check saving last-message.txt, at first | ||||
$ cat > $TESTTMP/commitfailure.py <<EOF | ||||
|
r26587 | > from mercurial import error | ||
|
r21028 | > def reposetup(ui, repo): | ||
> class commitfailure(repo.__class__): | ||||
> def commit(self, *args, **kwargs): | ||||
|
r46273 | > raise error.Abort(b'emulating unexpected abort') | ||
|
r21028 | > repo.__class__ = commitfailure | ||
> EOF | ||||
|
r21233 | $ cat >> .hg/hgrc <<EOF | ||
|
r21028 | > [extensions] | ||
|
r21233 | > # this failure occurs before editor invocation | ||
|
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 | ||||
|
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 | ||||
abort: emulating unexpected abort | ||||
|
r21930 | $ test -f .hg/last-message.txt | ||
|
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 | ||||
|
r21407 | $ hg status --rev '1fd3b2fe7754^1' --rev 1fd3b2fe7754 | ||
A f | ||||
|
r21028 | $ rm -f .hg/last-message.txt | ||
|
r21407 | $ HGEDITOR="sh $TESTTMP/editor.sh" hg histedit tip --commands - 2>&1 << EOF | ||
|
r21028 | > mess 1fd3b2fe7754 f | ||
> EOF | ||||
==== before editing | ||||
f | ||||
|
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 | ||||
|
r21028 | ==== | ||
|
r21233 | transaction abort! | ||
rollback completed | ||||
|
r41398 | note: commit message saved in .hg/last-message.txt | ||
|
r45227 | note: use 'hg commit --logfile .hg/last-message.txt --edit' to reuse it | ||
|
r21233 | abort: pretxncommit.unexpectedabort hook exited with status 1 | ||
|
r21407 | [255] | ||
|
r21028 | $ cat .hg/last-message.txt | ||
f | ||||
|
r21407 | |||
|
r21028 | check saving last-message.txt | ||
|
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 | ||||
|
r41398 | note: commit message saved in .hg/last-message.txt | ||
|
r45227 | note: use 'hg commit --logfile .hg/last-message.txt --edit' to reuse it | ||
|
r21409 | abort: pretxncommit.unexpectedabort hook exited with status 1 | ||
[255] | ||||
|
r21233 | $ cat >> .hg/hgrc <<EOF | ||
> [hooks] | ||||
> pretxncommit.unexpectedabort = | ||||
|
r21028 | > EOF | ||
$ hg histedit --abort -q | ||||
then, check "modify the message" itself | ||||
|
r19019 | $ hg histedit tip --commands - 2>&1 << EOF | fixbundle | ||
|
r18437 | > mess 1fd3b2fe7754 f | ||
|
r17085 | > EOF | ||
$ hg status | ||||
$ hg log --limit 1 | ||||
|
r19019 | changeset: 6:62feedb1200e | ||
|
r17085 | tag: tip | ||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
|
r19019 | summary: f | ||
|
r17085 | |||
rollback should not work after a histedit | ||||
$ hg rollback | ||||
no rollback information available | ||||
[1] | ||||
$ cd .. | ||||
|
r18913 | $ hg clone -qr0 r r0 | ||
$ cd r0 | ||||
$ hg phase -fdr0 | ||||
|
r19019 | $ hg histedit --commands - 0 2>&1 << EOF | ||
> edit cb9a9f314b8b a > $EDITED | ||||
> EOF | ||||
|
r18913 | 0 files updated, 0 files merged, 1 files removed, 0 files unresolved | ||
|
r46719 | Editing (cb9a9f314b8b), commit as needed now to split the change | ||
(to edit cb9a9f314b8b, `hg histedit --continue` after making changes) | ||||
|
r46430 | [240] | ||
|
r18913 | $ HGEDITOR=true hg histedit --continue | ||
|
r35394 | saved backup bundle to $TESTTMP/r0/.hg/strip-backup/cb9a9f314b8b-cc5ccb0b-histedit.hg | ||
|
r25451 | |||
$ hg log -G | ||||
@ changeset: 0:0efcea34f18a | ||||
tag: tip | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: a | ||||
$ echo foo >> b | ||||
$ hg addr | ||||
adding b | ||||
$ hg ci -m 'add b' | ||||
$ echo foo >> a | ||||
$ hg ci -m 'extend a' | ||||
$ hg phase --public 1 | ||||
Attempting to fold a change into a public change should not work: | ||||
$ cat > ../edit.sh <<EOF | ||||
> cat "\$1" | sed s/pick/fold/ > tmp | ||||
> mv tmp "\$1" | ||||
> EOF | ||||
$ HGEDITOR="sh ../edit.sh" hg histedit 2 | ||||
|
r27171 | warning: histedit rules saved to: .hg/histedit-last-edit.txt | ||
|
r33757 | hg: parse error: first changeset cannot use verb "fold" | ||
|
r46507 | [10] | ||
|
r27171 | $ cat .hg/histedit-last-edit.txt | ||
fold 0012be4a27ea 2 extend a | ||||
# Edit history between 0012be4a27ea and 0012be4a27ea | ||||
# | ||||
# Commits are listed from least to most recent | ||||
# | ||||
|
r28396 | # You can reorder changesets by reordering the lines | ||
# | ||||
|
r27171 | # Commands: | ||
|
r27674 | # | ||
|
r46720 | # e, edit = use commit, but allow edits before making new commit | ||
|
r27674 | # m, mess = edit commit message without changing commit content | ||
|
r27171 | # p, fold = use commit | ||
|
r34490 | # b, base = checkout changeset and apply further changesets from there | ||
|
r27674 | # d, drop = remove commit from history | ||
|
r27171 | # f, fold = use commit, but combine it with the one above | ||
|
r31056 | # r, roll = like fold, but discard this commit's description and date | ||
|
r27171 | # | ||
|
r41233 | |||
$ cd .. | ||||
|
r41249 | ============================================ | ||
Test update-timestamp config option in mess| | ||||
============================================ | ||||
$ addwithdate () | ||||
> { | ||||
> echo $1 > $1 | ||||
> hg add $1 | ||||
> hg ci -m $1 -d "$2 0" | ||||
> } | ||||
$ initrepo () | ||||
> { | ||||
> hg init r2 | ||||
> cd r2 | ||||
> addwithdate a 1 | ||||
> addwithdate b 2 | ||||
> addwithdate c 3 | ||||
> addwithdate d 4 | ||||
> addwithdate e 5 | ||||
> addwithdate f 6 | ||||
> } | ||||
$ initrepo | ||||
log before edit | ||||
$ hg log --limit 1 | ||||
changeset: 5:178e35e0ce73 | ||||
tag: tip | ||||
user: test | ||||
date: Thu Jan 01 00:00:06 1970 +0000 | ||||
summary: f | ||||
$ hg histedit tip --commands - 2>&1 --config rewrite.update-timestamp=True << EOF | fixbundle | ||||
> mess 178e35e0ce73 f | ||||
> EOF | ||||
log after edit | ||||
$ hg log --limit 1 | ||||
changeset: 5:98bf456d476b | ||||
tag: tip | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: f | ||||
$ cd .. | ||||
|
r41233 | warn the user on editing tagged commits | ||
$ hg init issue4017 | ||||
$ cd issue4017 | ||||
$ echo > a | ||||
$ hg ci -Am 'add a' | ||||
adding a | ||||
$ hg tag a | ||||
$ hg tags | ||||
tip 1:bd7ee4f3939b | ||||
a 0:a8a82d372bb3 | ||||
$ hg histedit | ||||
|
r41248 | warning: tags associated with the given changeset will be lost after histedit. | ||
|
r41233 | do you want to continue (yN)? n | ||
abort: histedit cancelled | ||||
[255] | ||||
$ cd .. | ||||