test-histedit-fold.t
588 lines
| 12.1 KiB
| text/troff
|
Tads3Lexer
/ tests / test-histedit-fold.t
|
r21024 | Test histedit extension: Fold commands | ||
|
r19015 | ====================================== | ||
This test file is dedicated to testing the fold command in non conflicting | ||||
case. | ||||
Initialization | ||||
--------------- | ||||
|
r17085 | $ . "$TESTDIR/histedit-helpers.sh" | ||
$ cat >> $HGRCPATH <<EOF | ||||
|
r19014 | > [alias] | ||
> logt = log --template '{rev}:{node|short} {desc|firstline}\n' | ||||
|
r17085 | > [extensions] | ||
> histedit= | ||||
> EOF | ||||
|
r19015 | |||
Simple folding | ||||
-------------------- | ||||
|
r31055 | $ addwithdate () | ||
> { | ||||
> echo $1 > $1 | ||||
> hg add $1 | ||||
> hg ci -m $1 -d "$2 0" | ||||
> } | ||||
|
r17085 | $ initrepo () | ||
> { | ||||
> hg init r | ||||
> cd r | ||||
|
r31055 | > addwithdate a 1 | ||
> addwithdate b 2 | ||||
> addwithdate c 3 | ||||
> addwithdate d 4 | ||||
> addwithdate e 5 | ||||
> addwithdate f 6 | ||||
|
r17085 | > } | ||
$ initrepo | ||||
log before edit | ||||
|
r19014 | $ hg logt --graph | ||
|
r31055 | @ 5:178e35e0ce73 f | ||
|
r17085 | | | ||
|
r31055 | o 4:1ddb6c90f2ee e | ||
|
r17085 | | | ||
|
r31055 | o 3:532247a8969b d | ||
|
r17085 | | | ||
|
r31055 | o 2:ff2c9fa2018b c | ||
|
r17085 | | | ||
|
r31055 | o 1:97d72e5f12c7 b | ||
|
r17085 | | | ||
|
r31055 | o 0:8580ff50825a a | ||
|
r17085 | |||
|
r31055 | $ hg histedit ff2c9fa2018b --commands - 2>&1 <<EOF | fixbundle | ||
> pick 1ddb6c90f2ee e | ||||
> pick 178e35e0ce73 f | ||||
> fold ff2c9fa2018b c | ||||
> pick 532247a8969b d | ||||
|
r19015 | > EOF | ||
|
r17085 | |||
log after edit | ||||
|
r19014 | $ hg logt --graph | ||
|
r31055 | @ 4:c4d7f3def76d d | ||
|
r17085 | | | ||
|
r31055 | o 3:575228819b7e f | ||
|
r17085 | | | ||
|
r31055 | o 2:505a591af19e e | ||
|
r17085 | | | ||
|
r31055 | o 1:97d72e5f12c7 b | ||
|
r17085 | | | ||
|
r31055 | o 0:8580ff50825a a | ||
|
r17085 | |||
post-fold manifest | ||||
$ hg manifest | ||||
a | ||||
b | ||||
c | ||||
d | ||||
e | ||||
f | ||||
|
r18437 | |||
|
r31055 | check histedit_source, including that it uses the later date, from the first changeset | ||
|
r18437 | |||
$ hg log --debug --rev 3 | ||||
|
r31055 | changeset: 3:575228819b7e6ed69e8c0a6a383ee59a80db7358 | ||
|
r18437 | phase: draft | ||
|
r31055 | parent: 2:505a591af19eed18f560af827b9e03d2076773dc | ||
|
r18437 | parent: -1:0000000000000000000000000000000000000000 | ||
manifest: 3:81eede616954057198ead0b2c73b41d1f392829a | ||||
user: test | ||||
|
r31055 | date: Thu Jan 01 00:00:06 1970 +0000 | ||
|
r18437 | files+: c f | ||
extra: branch=default | ||||
|
r31055 | extra: histedit_source=7cad1d7030207872dfd1c3a7cb430f24f2884086,ff2c9fa2018b15fa74b33363bda9527323e2a99f | ||
|
r18437 | description: | ||
|
r19019 | f | ||
*** | ||||
c | ||||
|
r18437 | |||
|
r31056 | rollup will fold without preserving the folded commit's message or date | ||
|
r22152 | |||
|
r24828 | $ OLDHGEDITOR=$HGEDITOR | ||
$ HGEDITOR=false | ||||
|
r31055 | $ hg histedit 97d72e5f12c7 --commands - 2>&1 <<EOF | fixbundle | ||
> pick 97d72e5f12c7 b | ||||
> roll 505a591af19e e | ||||
> pick 575228819b7e f | ||||
> pick c4d7f3def76d d | ||||
|
r22152 | > EOF | ||
|
r24828 | $ HGEDITOR=$OLDHGEDITOR | ||
|
r22152 | log after edit | ||
$ hg logt --graph | ||||
|
r31056 | @ 3:bab801520cec d | ||
|
r22152 | | | ||
|
r31056 | o 2:58c8f2bfc151 f | ||
|
r22152 | | | ||
|
r31056 | o 1:5d939c56c72e b | ||
|
r22152 | | | ||
|
r31055 | o 0:8580ff50825a a | ||
|
r22152 | |||
description is taken from rollup target commit | ||||
$ hg log --debug --rev 1 | ||||
|
r31056 | changeset: 1:5d939c56c72e77e29f5167696218e2131a40f5cf | ||
|
r22152 | phase: draft | ||
|
r31055 | parent: 0:8580ff50825a50c8f716709acdf8de0deddcd6ab | ||
|
r22152 | parent: -1:0000000000000000000000000000000000000000 | ||
manifest: 1:b5e112a3a8354e269b1524729f0918662d847c38 | ||||
user: test | ||||
|
r31056 | date: Thu Jan 01 00:00:02 1970 +0000 | ||
|
r22152 | files+: b e | ||
extra: branch=default | ||||
|
r31055 | extra: histedit_source=97d72e5f12c7e84f85064aa72e5a297142c36ed9,505a591af19eed18f560af827b9e03d2076773dc | ||
|
r22152 | description: | ||
b | ||||
|
r20770 | check saving last-message.txt | ||
|
r20859 | $ cat > $TESTTMP/abortfolding.py <<EOF | ||
|
r20770 | > from mercurial import util | ||
> def abortfolding(ui, repo, hooktype, **kwargs): | ||||
> ctx = repo[kwargs.get('node')] | ||||
|
r36189 | > if set(ctx.files()) == {b'c', b'd', b'f'}: | ||
|
r20770 | > return True # abort folding commit only | ||
|
r36189 | > ui.warn(b'allow non-folding commit\\n') | ||
|
r20770 | > EOF | ||
$ cat > .hg/hgrc <<EOF | ||||
> [hooks] | ||||
|
r20859 | > pretxncommit.abortfolding = python:$TESTTMP/abortfolding.py:abortfolding | ||
|
r20770 | > EOF | ||
|
r20859 | $ cat > $TESTTMP/editor.sh << EOF | ||
|
r20770 | > echo "==== before editing" | ||
> cat \$1 | ||||
> echo "====" | ||||
> echo "check saving last-message.txt" >> \$1 | ||||
> EOF | ||||
$ rm -f .hg/last-message.txt | ||||
|
r31056 | $ hg status --rev '58c8f2bfc151^1::bab801520cec' | ||
|
r23587 | A c | ||
A d | ||||
A f | ||||
|
r31056 | $ HGEDITOR="sh $TESTTMP/editor.sh" hg histedit 58c8f2bfc151 --commands - 2>&1 <<EOF | ||
> pick 58c8f2bfc151 f | ||||
> fold bab801520cec d | ||||
|
r20770 | > EOF | ||
allow non-folding commit | ||||
==== before editing | ||||
f | ||||
*** | ||||
c | ||||
*** | ||||
d | ||||
HG: Enter commit message. Lines beginning with 'HG:' are removed. | ||||
HG: Leave message empty to abort commit. | ||||
HG: -- | ||||
HG: user: test | ||||
HG: branch 'default' | ||||
|
r23587 | HG: added c | ||
HG: added d | ||||
HG: added f | ||||
|
r20770 | ==== | ||
transaction abort! | ||||
rollback completed | ||||
abort: pretxncommit.abortfolding hook failed | ||||
|
r23587 | [255] | ||
|
r20770 | |||
$ cat .hg/last-message.txt | ||||
f | ||||
*** | ||||
c | ||||
*** | ||||
d | ||||
check saving last-message.txt | ||||
|
r17085 | $ cd .. | ||
|
r22147 | $ rm -r r | ||
|
r31055 | folding preserves initial author but uses later date | ||
---------------------------------------------------- | ||||
|
r22147 | |||
$ initrepo | ||||
|
r31055 | $ hg ci -d '7 0' --user "someone else" --amend --quiet | ||
|
r22147 | |||
tip before edit | ||||
$ hg log --rev . | ||||
|
r31055 | changeset: 5:10c36dd37515 | ||
|
r22147 | tag: tip | ||
user: someone else | ||||
|
r31055 | date: Thu Jan 01 00:00:07 1970 +0000 | ||
|
r22147 | summary: f | ||
|
r27451 | $ hg --config progress.debug=1 --debug \ | ||
|
r31055 | > histedit 1ddb6c90f2ee --commands - 2>&1 <<EOF | \ | ||
|
r27451 | > egrep 'editing|unresolved' | ||
|
r31055 | > pick 1ddb6c90f2ee e | ||
> fold 10c36dd37515 f | ||||
|
r22147 | > EOF | ||
|
r31055 | editing: pick 1ddb6c90f2ee 4 e 1/2 changes (50.00%) | ||
editing: fold 10c36dd37515 5 f 2/2 changes (100.00%) | ||||
|
r22147 | |||
|
r31055 | tip after edit, which should use the later date, from the second changeset | ||
|
r22147 | $ hg log --rev . | ||
|
r31055 | changeset: 4:e4f3ec5d0b40 | ||
|
r22147 | tag: tip | ||
user: test | ||||
|
r31055 | date: Thu Jan 01 00:00:07 1970 +0000 | ||
|
r22147 | summary: e | ||
$ cd .. | ||||
$ rm -r r | ||||
|
r17130 | |||
folding and creating no new change doesn't break: | ||||
|
r19015 | ------------------------------------------------- | ||
|
r21024 | folded content is dropped during a merge. The folded commit should properly disappear. | ||
|
r19015 | |||
|
r17130 | $ mkdir fold-to-empty-test | ||
$ cd fold-to-empty-test | ||||
$ hg init | ||||
$ printf "1\n2\n3\n" > file | ||||
$ hg add file | ||||
$ hg commit -m '1+2+3' | ||||
$ echo 4 >> file | ||||
$ hg commit -m '+4' | ||||
$ echo 5 >> file | ||||
$ hg commit -m '+5' | ||||
$ echo 6 >> file | ||||
$ hg commit -m '+6' | ||||
|
r19014 | $ hg logt --graph | ||
@ 3:251d831eeec5 +6 | ||||
|
r17130 | | | ||
|
r19014 | o 2:888f9082bf99 +5 | ||
|
r17130 | | | ||
|
r19014 | o 1:617f94f13c0f +4 | ||
|
r17130 | | | ||
|
r19014 | o 0:0189ba417d34 1+2+3 | ||
|
r17130 | |||
|
r19019 | $ hg histedit 1 --commands - << EOF | ||
|
r19016 | > pick 617f94f13c0f 1 +4 | ||
> drop 888f9082bf99 2 +5 | ||||
|
r19017 | > fold 251d831eeec5 3 +6 | ||
|
r17130 | > EOF | ||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
|
r17647 | merging file | ||
|
r26614 | warning: conflicts while merging file! (edit, then use 'hg resolve --mark') | ||
|
r27629 | Fix up the change (fold 251d831eeec5) | ||
(hg histedit --continue to resume) | ||||
|
r18935 | [1] | ||
|
r17647 | There were conflicts, we keep P1 content. This | ||
|
r17130 | should effectively drop the changes from +6. | ||
|
r33766 | |||
$ hg status -v | ||||
|
r17647 | M file | ||
? file.orig | ||||
|
r33766 | # The repository is in an unfinished *histedit* state. | ||
# Unresolved merge conflicts: | ||||
# | ||||
# file | ||||
# | ||||
# To mark files as resolved: hg resolve --mark FILE | ||||
|
r38360 | # To continue: hg histedit --continue | ||
# To abort: hg histedit --abort | ||||
|
r33766 | |||
|
r17647 | $ hg resolve -l | ||
U file | ||||
$ hg revert -r 'p1()' file | ||||
$ hg resolve --mark file | ||||
|
r21947 | (no more unresolved files) | ||
|
r27627 | continue: hg histedit --continue | ||
|
r17130 | $ hg histedit --continue | ||
|
r24771 | 251d831eeec5: empty changeset | ||
|
r35394 | saved backup bundle to $TESTTMP/fold-to-empty-test/.hg/strip-backup/888f9082bf99-daa0b8b3-histedit.hg | ||
|
r19014 | $ hg logt --graph | ||
@ 1:617f94f13c0f +4 | ||||
|
r17130 | | | ||
|
r19014 | o 0:0189ba417d34 1+2+3 | ||
|
r17130 | |||
$ cd .. | ||||
|
r17242 | |||
|
r19015 | |||
Test fold through dropped | ||||
------------------------- | ||||
|
r17242 | Test corner case where folded revision is separated from its parent by a | ||
dropped revision. | ||||
$ hg init fold-with-dropped | ||||
$ cd fold-with-dropped | ||||
$ printf "1\n2\n3\n" > file | ||||
$ hg commit -Am '1+2+3' | ||||
adding file | ||||
$ echo 4 >> file | ||||
$ hg commit -m '+4' | ||||
$ echo 5 >> file | ||||
$ hg commit -m '+5' | ||||
$ echo 6 >> file | ||||
$ hg commit -m '+6' | ||||
|
r19391 | $ hg logt -G | ||
|
r17242 | @ 3:251d831eeec5 +6 | ||
| | ||||
o 2:888f9082bf99 +5 | ||||
| | ||||
o 1:617f94f13c0f +4 | ||||
| | ||||
o 0:0189ba417d34 1+2+3 | ||||
|
r19019 | $ hg histedit 1 --commands - << EOF | ||
|
r17242 | > pick 617f94f13c0f 1 +4 | ||
> drop 888f9082bf99 2 +5 | ||||
> fold 251d831eeec5 3 +6 | ||||
> EOF | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
|
r17647 | merging file | ||
|
r26614 | warning: conflicts while merging file! (edit, then use 'hg resolve --mark') | ||
|
r27629 | Fix up the change (fold 251d831eeec5) | ||
(hg histedit --continue to resume) | ||||
|
r18935 | [1] | ||
|
r17647 | $ cat > file << EOF | ||
> 1 | ||||
> 2 | ||||
> 3 | ||||
> 4 | ||||
> 5 | ||||
> EOF | ||||
$ hg resolve --mark file | ||||
|
r21947 | (no more unresolved files) | ||
|
r27627 | continue: hg histedit --continue | ||
|
r19496 | $ hg commit -m '+5.2' | ||
|
r17242 | created new head | ||
$ echo 6 >> file | ||||
$ HGEDITOR=cat hg histedit --continue | ||||
+4 | ||||
*** | ||||
+5.2 | ||||
*** | ||||
+6 | ||||
|
r17644 | |||
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 file | ||||
|
r35394 | saved backup bundle to $TESTTMP/fold-with-dropped/.hg/strip-backup/617f94f13c0f-3d69522c-histedit.hg | ||
|
r19014 | $ hg logt -G | ||
@ 1:10c647b2cdd5 +4 | ||||
|
r17687 | | | ||
|
r19014 | o 0:0189ba417d34 1+2+3 | ||
|
r17687 | |||
$ hg export tip | ||||
# HG changeset patch | ||||
# User test | ||||
# Date 0 0 | ||||
|
r18648 | # Thu Jan 01 00:00:00 1970 +0000 | ||
|
r18437 | # Node ID 10c647b2cdd54db0603ecb99b2ff5ce66d5a5323 | ||
|
r17687 | # Parent 0189ba417d34df9dda55f88b637dcae9917b5964 | ||
+4 | ||||
*** | ||||
+5.2 | ||||
*** | ||||
+6 | ||||
|
r18437 | diff -r 0189ba417d34 -r 10c647b2cdd5 file | ||
|
r17687 | --- a/file Thu Jan 01 00:00:00 1970 +0000 | ||
+++ b/file Thu Jan 01 00:00:00 1970 +0000 | ||||
@@ -1,3 +1,6 @@ | ||||
1 | ||||
2 | ||||
3 | ||||
+4 | ||||
+5 | ||||
+6 | ||||
|
r17242 | $ cd .. | ||
|
r19392 | |||
Folding with initial rename (issue3729) | ||||
--------------------------------------- | ||||
$ hg init fold-rename | ||||
$ cd fold-rename | ||||
$ echo a > a.txt | ||||
$ hg add a.txt | ||||
$ hg commit -m a | ||||
$ hg rename a.txt b.txt | ||||
$ hg commit -m rename | ||||
$ echo b >> b.txt | ||||
$ hg commit -m b | ||||
$ hg logt --follow b.txt | ||||
2:e0371e0426bc b | ||||
1:1c4f440a8085 rename | ||||
0:6c795aa153cb a | ||||
$ hg histedit 1c4f440a8085 --commands - 2>&1 << EOF | fixbundle | ||||
> pick 1c4f440a8085 rename | ||||
> fold e0371e0426bc b | ||||
> EOF | ||||
$ hg logt --follow b.txt | ||||
1:cf858d235c76 rename | ||||
0:6c795aa153cb a | ||||
$ cd .. | ||||
|
r23129 | |||
Folding with swapping | ||||
--------------------- | ||||
This is an excuse to test hook with histedit temporary commit (issue4422) | ||||
$ hg init issue4422 | ||||
$ cd issue4422 | ||||
$ echo a > a.txt | ||||
$ hg add a.txt | ||||
$ hg commit -m a | ||||
$ echo b > b.txt | ||||
$ hg add b.txt | ||||
$ hg commit -m b | ||||
$ echo c > c.txt | ||||
$ hg add c.txt | ||||
$ hg commit -m c | ||||
$ hg logt | ||||
2:a1a953ffb4b0 c | ||||
1:199b6bb90248 b | ||||
0:6c795aa153cb a | ||||
|
r23390 | Setup the proper environment variable symbol for the platform, to be subbed | ||
into the hook command. | ||||
#if windows | ||||
$ NODE="%HG_NODE%" | ||||
#else | ||||
$ NODE="\$HG_NODE" | ||||
#endif | ||||
$ hg histedit 6c795aa153cb --config hooks.commit="echo commit $NODE" --commands - 2>&1 << EOF | fixbundle | ||||
|
r23129 | > pick 199b6bb90248 b | ||
> fold a1a953ffb4b0 c | ||||
> pick 6c795aa153cb a | ||||
> EOF | ||||
commit 9599899f62c05f4377548c32bf1c9f1a39634b0c | ||||
$ hg logt | ||||
1:9599899f62c0 a | ||||
0:79b99e9c8e49 b | ||||
|
r26025 | $ echo "foo" > amended.txt | ||
$ hg add amended.txt | ||||
$ hg ci -q --config extensions.largefiles= --amend -I amended.txt | ||||
|
r33209 | The fsmonitor extension is incompatible with the largefiles extension and has been disabled. (fsmonitor !) | ||
|
r26025 | |||
|
r26246 | Test that folding multiple changes in a row doesn't show multiple | ||
editors. | ||||
$ echo foo >> foo | ||||
$ hg add foo | ||||
$ hg ci -m foo1 | ||||
$ echo foo >> foo | ||||
$ hg ci -m foo2 | ||||
$ echo foo >> foo | ||||
$ hg ci -m foo3 | ||||
$ hg logt | ||||
4:21679ff7675c foo3 | ||||
3:b7389cc4d66e foo2 | ||||
2:0e01aeef5fa8 foo1 | ||||
1:578c7455730c a | ||||
0:79b99e9c8e49 b | ||||
|
r27062 | $ cat > "$TESTTMP/editor.sh" <<EOF | ||
> echo ran editor >> "$TESTTMP/editorlog.txt" | ||||
> cat \$1 >> "$TESTTMP/editorlog.txt" | ||||
> echo END >> "$TESTTMP/editorlog.txt" | ||||
|
r26246 | > echo merged foos > \$1 | ||
> EOF | ||||
|
r27062 | $ HGEDITOR="sh \"$TESTTMP/editor.sh\"" hg histedit 1 --commands - 2>&1 <<EOF | fixbundle | ||
|
r26246 | > pick 578c7455730c 1 a | ||
> pick 0e01aeef5fa8 2 foo1 | ||||
> fold b7389cc4d66e 3 foo2 | ||||
> fold 21679ff7675c 4 foo3 | ||||
> EOF | ||||
$ hg logt | ||||
2:e8bedbda72c1 merged foos | ||||
1:578c7455730c a | ||||
0:79b99e9c8e49 b | ||||
Editor should have run only once | ||||
$ cat $TESTTMP/editorlog.txt | ||||
ran editor | ||||
foo1 | ||||
*** | ||||
foo2 | ||||
*** | ||||
foo3 | ||||
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 foo | ||||
END | ||||
|
r23129 | $ cd .. | ||
|
r33757 | |||
Test rolling into a commit with multiple children (issue5498) | ||||
$ hg init roll | ||||
$ cd roll | ||||
$ echo a > a | ||||
$ hg commit -qAm aa | ||||
$ echo b > b | ||||
$ hg commit -qAm bb | ||||
$ hg up -q ".^" | ||||
$ echo c > c | ||||
$ hg commit -qAm cc | ||||
$ hg log -G -T '{node|short} {desc}' | ||||
@ 5db65b93a12b cc | ||||
| | ||||
| o 301d76bdc3ae bb | ||||
|/ | ||||
o 8f0162e483d0 aa | ||||
$ hg histedit . --commands - << EOF | ||||
> r 5db65b93a12b | ||||
> EOF | ||||
hg: parse error: first changeset cannot use verb "roll" | ||||
[255] | ||||
$ hg log -G -T '{node|short} {desc}' | ||||
@ 5db65b93a12b cc | ||||
| | ||||
| o 301d76bdc3ae bb | ||||
|/ | ||||
o 8f0162e483d0 aa | ||||