test-histedit-fold.t
366 lines
| 8.0 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 | ||||
-------------------- | ||||
|
r17085 | $ initrepo () | ||
> { | ||||
> hg init r | ||||
> cd r | ||||
> for x in a b c d e f ; do | ||||
> echo $x > $x | ||||
> hg add $x | ||||
> hg ci -m $x | ||||
> done | ||||
> } | ||||
$ initrepo | ||||
log before edit | ||||
|
r19014 | $ hg logt --graph | ||
@ 5:652413bf663e f | ||||
|
r17085 | | | ||
|
r19014 | o 4:e860deea161a e | ||
|
r17085 | | | ||
|
r19014 | o 3:055a42cdd887 d | ||
|
r17085 | | | ||
|
r19014 | o 2:177f92b77385 c | ||
|
r17085 | | | ||
|
r19014 | o 1:d2ae7f538514 b | ||
|
r17085 | | | ||
|
r19014 | o 0:cb9a9f314b8b a | ||
|
r17085 | |||
|
r19018 | $ hg histedit 177f92b77385 --commands - 2>&1 <<EOF | fixbundle | ||
|
r19015 | > pick e860deea161a e | ||
> pick 652413bf663e f | ||||
> fold 177f92b77385 c | ||||
> pick 055a42cdd887 d | ||||
> EOF | ||||
|
r17085 | 0 files updated, 0 files merged, 4 files removed, 0 files unresolved | ||
0 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
0 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
0 files updated, 0 files merged, 2 files removed, 0 files unresolved | ||||
|
r17644 | 2 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||
|
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 | ||||
log after edit | ||||
|
r19014 | $ hg logt --graph | ||
|
r19018 | @ 4:9c277da72c9b d | ||
|
r17085 | | | ||
|
r19018 | o 3:6de59d13424a f | ||
|
r17085 | | | ||
|
r19014 | o 2:ee283cb5f2d5 e | ||
|
r17085 | | | ||
|
r19014 | o 1:d2ae7f538514 b | ||
|
r17085 | | | ||
|
r19014 | o 0:cb9a9f314b8b a | ||
|
r17085 | |||
post-fold manifest | ||||
$ hg manifest | ||||
a | ||||
b | ||||
c | ||||
d | ||||
e | ||||
f | ||||
|
r18437 | |||
check histedit_source | ||||
$ hg log --debug --rev 3 | ||||
|
r19019 | changeset: 3:6de59d13424a8a13acd3e975514aed29dd0d9b2d | ||
|
r18437 | phase: draft | ||
parent: 2:ee283cb5f2d5955443f23a27b697a04339e9a39a | ||||
parent: -1:0000000000000000000000000000000000000000 | ||||
manifest: 3:81eede616954057198ead0b2c73b41d1f392829a | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
files+: c f | ||||
extra: branch=default | ||||
extra: histedit_source=a4f7421b80f79fcc59fff01bcbf4a53d127dd6d3,177f92b773850b59254aa5e923436f921b55483b | ||||
description: | ||||
|
r19019 | f | ||
*** | ||||
c | ||||
|
r18437 | |||
|
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')] | ||||
> if set(ctx.files()) == set(['c', 'd', 'f']): | ||||
> return True # abort folding commit only | ||||
> ui.warn('allow non-folding commit\\n') | ||||
> 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 | ||||
|
r20859 | $ HGEDITOR="sh $TESTTMP/editor.sh" hg histedit 6de59d13424a --commands - 2>&1 <<EOF | fixbundle | ||
|
r20770 | > pick 6de59d13424a f | ||
> fold 9c277da72c9b d | ||||
> EOF | ||||
0 files updated, 0 files merged, 1 files removed, 0 files unresolved | ||||
allow non-folding commit | ||||
0 files updated, 0 files merged, 3 files removed, 0 files unresolved | ||||
==== 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' | ||||
HG: changed c | ||||
HG: changed d | ||||
HG: changed f | ||||
==== | ||||
transaction abort! | ||||
rollback completed | ||||
abort: pretxncommit.abortfolding hook failed | ||||
$ cat .hg/last-message.txt | ||||
f | ||||
*** | ||||
c | ||||
*** | ||||
d | ||||
check saving last-message.txt | ||||
|
r17085 | $ cd .. | ||
|
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 | ||
warning: conflicts during merge. | ||||
merging file incomplete! (edit conflicts, then use 'hg resolve --mark') | ||||
|
r18934 | Fix up the change and run hg histedit --continue | ||
|
r18935 | [1] | ||
|
r17647 | There were conflicts, we keep P1 content. This | ||
|
r17130 | should effectively drop the changes from +6. | ||
$ hg status | ||||
|
r17647 | M file | ||
? file.orig | ||||
$ hg resolve -l | ||||
U file | ||||
$ hg revert -r 'p1()' file | ||||
$ hg resolve --mark file | ||||
|
r21947 | (no more unresolved files) | ||
|
r17130 | $ hg histedit --continue | ||
0 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
saved backup bundle to $TESTTMP/*-backup.hg (glob) | ||||
|
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 | ||
warning: conflicts during merge. | ||||
merging file incomplete! (edit conflicts, then use 'hg resolve --mark') | ||||
|
r18934 | Fix up the change and run hg histedit --continue | ||
|
r18935 | [1] | ||
|
r17647 | $ cat > file << EOF | ||
> 1 | ||||
> 2 | ||||
> 3 | ||||
> 4 | ||||
> 5 | ||||
> EOF | ||||
$ hg resolve --mark file | ||||
|
r21947 | (no more unresolved files) | ||
|
r19496 | $ hg commit -m '+5.2' | ||
|
r17242 | created new head | ||
$ echo 6 >> file | ||||
$ HGEDITOR=cat hg histedit --continue | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
+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 | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
|
r17242 | 0 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||
saved backup bundle to $TESTTMP/fold-with-dropped/.hg/strip-backup/617f94f13c0f-backup.hg (glob) | ||||
|
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 | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
reverting b.txt | ||||
1 files updated, 0 files merged, 1 files removed, 0 files unresolved | ||||
1 files updated, 0 files merged, 1 files removed, 0 files unresolved | ||||
0 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ hg logt --follow b.txt | ||||
1:cf858d235c76 rename | ||||
0:6c795aa153cb a | ||||
$ cd .. | ||||