diff options
Diffstat (limited to 'tests/test-histedit-fold.t')
-rw-r--r-- | tests/test-histedit-fold.t | 238 |
1 files changed, 238 insertions, 0 deletions
diff --git a/tests/test-histedit-fold.t b/tests/test-histedit-fold.t new file mode 100644 index 0000000..645cbc2 --- /dev/null +++ b/tests/test-histedit-fold.t @@ -0,0 +1,238 @@ + $ . "$TESTDIR/histedit-helpers.sh" + + $ cat >> $HGRCPATH <<EOF + > [extensions] + > graphlog= + > histedit= + > EOF + + $ EDITED="$TESTTMP/editedhistory" + $ cat > $EDITED <<EOF + > pick e860deea161a e + > pick 652413bf663e f + > fold 177f92b77385 c + > pick 055a42cdd887 d + > EOF + $ 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 + $ hg log --graph + @ changeset: 5:652413bf663e + | tag: tip + | user: test + | date: Thu Jan 01 00:00:00 1970 +0000 + | 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 + $ HGEDITOR="cat \"$EDITED\" > " hg histedit 177f92b77385 2>&1 | fixbundle + 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 + 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 + $ hg log --graph + @ changeset: 4:82b0c1ff1777 + | tag: tip + | user: test + | date: Thu Jan 01 00:00:00 1970 +0000 + | summary: d + | + o changeset: 3:150aafb44a91 + | user: test + | date: Thu Jan 01 00:00:00 1970 +0000 + | summary: pick e860deea161a e + | + o changeset: 2:493dc0964412 + | user: test + | date: Thu Jan 01 00:00:00 1970 +0000 + | summary: e + | + 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 + + +post-fold manifest + $ hg manifest + a + b + c + d + e + f + + $ cd .. + +folding and creating no new change doesn't break: + $ 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' + $ hg log --graph + @ changeset: 3:251d831eeec5 + | tag: tip + | user: test + | date: Thu Jan 01 00:00:00 1970 +0000 + | summary: +6 + | + o changeset: 2:888f9082bf99 + | user: test + | date: Thu Jan 01 00:00:00 1970 +0000 + | summary: +5 + | + o changeset: 1:617f94f13c0f + | user: test + | date: Thu Jan 01 00:00:00 1970 +0000 + | summary: +4 + | + o changeset: 0:0189ba417d34 + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + summary: 1+2+3 + + + $ cat > editor.py <<EOF + > import re, sys + > rules = sys.argv[1] + > data = open(rules).read() + > data = re.sub(r'pick ([0-9a-f]{12} 2 \+5)', r'drop \1', data) + > data = re.sub(r'pick ([0-9a-f]{12} 2 \+6)', r'fold \1', data) + > open(rules, 'w').write(data) + > EOF + + $ HGEDITOR='python editor.py' hg histedit 1 + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + patching file file + Hunk #1 FAILED at 2 + 1 out of 1 hunks FAILED -- saving rejects to file file.rej + abort: Fix up the change and run hg histedit --continue + [255] +There were conflicts, but we'll continue without resolving. This +should effectively drop the changes from +6. + $ hg status + ? editor.py + ? file.rej + $ hg histedit --continue + 0 files updated, 0 files merged, 0 files removed, 0 files unresolved + saved backup bundle to $TESTTMP/*-backup.hg (glob) + $ hg log --graph + @ changeset: 1:617f94f13c0f + | tag: tip + | user: test + | date: Thu Jan 01 00:00:00 1970 +0000 + | summary: +4 + | + o changeset: 0:0189ba417d34 + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + summary: 1+2+3 + + + $ cd .. + +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' + $ hg log -G --template '{rev}:{node|short} {desc|firstline}\n' + @ 3:251d831eeec5 +6 + | + o 2:888f9082bf99 +5 + | + o 1:617f94f13c0f +4 + | + o 0:0189ba417d34 1+2+3 + + $ EDITED="$TESTTMP/editcommands" + $ cat > $EDITED <<EOF + > pick 617f94f13c0f 1 +4 + > drop 888f9082bf99 2 +5 + > fold 251d831eeec5 3 +6 + > EOF + $ HGEDITOR="cat $EDITED >" hg histedit 1 + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + patching file file + Hunk #1 FAILED at 2 + 1 out of 1 hunks FAILED -- saving rejects to file file.rej + abort: Fix up the change and run hg histedit --continue + [255] + $ echo 5 >> file + $ hg commit -m '+5.2' + 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 + 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) + $ cd .. + |