##// END OF EJS Templates
histedit: save manually edited commit message into ".hg/last-message.txt"...
histedit: save manually edited commit message into ".hg/last-message.txt" Before this patch, manually edited commit message for "fold" command in histedit-ing is never saved into ".hg/last-message.txt", because it uses "localrepository.commitctx()" instead of "localrepository.commit()": saving into ".hg/last-message.txt" is executed only in the latter. This patch saves manually edited commit message for "fold" command in histedit-ing into ".hg/last-message.txt" just after user editing. This is the simplest implementation to fix on stable. Editing and saving commit message for memctx should be centralized into the framework like "localrepository.commit()" with "editor" argument or so in the future.

File last commit:

r20770:5d22cadd stable
r20770:5d22cadd stable
Show More
test-histedit-fold.t
364 lines | 7.9 KiB | text/troff | Tads3Lexer
/ tests / test-histedit-fold.t
Pierre-Yves David
test: improve documentation of some histedit tests...
r19015 Test histedit extention: Fold commands
======================================
This test file is dedicated to testing the fold command in non conflicting
case.
Initialization
---------------
Mads Kiilerich
tests: convert histedit tests to .t...
r17085 $ . "$TESTDIR/histedit-helpers.sh"
$ cat >> $HGRCPATH <<EOF
Pierre-Yves David
test: use a lighter log style in histedit test...
r19014 > [alias]
> logt = log --template '{rev}:{node|short} {desc|firstline}\n'
Mads Kiilerich
tests: convert histedit tests to .t...
r17085 > [extensions]
> histedit=
> EOF
Pierre-Yves David
test: improve documentation of some histedit tests...
r19015
Simple folding
--------------------
Mads Kiilerich
tests: convert histedit tests to .t...
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
Pierre-Yves David
test: use a lighter log style in histedit test...
r19014 $ hg logt --graph
@ 5:652413bf663e f
Mads Kiilerich
tests: convert histedit tests to .t...
r17085 |
Pierre-Yves David
test: use a lighter log style in histedit test...
r19014 o 4:e860deea161a e
Mads Kiilerich
tests: convert histedit tests to .t...
r17085 |
Pierre-Yves David
test: use a lighter log style in histedit test...
r19014 o 3:055a42cdd887 d
Mads Kiilerich
tests: convert histedit tests to .t...
r17085 |
Pierre-Yves David
test: use a lighter log style in histedit test...
r19014 o 2:177f92b77385 c
Mads Kiilerich
tests: convert histedit tests to .t...
r17085 |
Pierre-Yves David
test: use a lighter log style in histedit test...
r19014 o 1:d2ae7f538514 b
Mads Kiilerich
tests: convert histedit tests to .t...
r17085 |
Pierre-Yves David
test: use a lighter log style in histedit test...
r19014 o 0:cb9a9f314b8b a
Mads Kiilerich
tests: convert histedit tests to .t...
r17085
Pierre-Yves David
histedit: allow "-" as a command file...
r19018 $ hg histedit 177f92b77385 --commands - 2>&1 <<EOF | fixbundle
Pierre-Yves David
test: improve documentation of some histedit tests...
r19015 > pick e860deea161a e
> pick 652413bf663e f
> fold 177f92b77385 c
> pick 055a42cdd887 d
> EOF
Mads Kiilerich
tests: convert histedit tests to .t...
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
Pierre-Yves David
histedit: fold in memory...
r17644 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
Mads Kiilerich
tests: convert histedit tests to .t...
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
Pierre-Yves David
test: use a lighter log style in histedit test...
r19014 $ hg logt --graph
Pierre-Yves David
histedit: allow "-" as a command file...
r19018 @ 4:9c277da72c9b d
Mads Kiilerich
tests: convert histedit tests to .t...
r17085 |
Pierre-Yves David
histedit: allow "-" as a command file...
r19018 o 3:6de59d13424a f
Mads Kiilerich
tests: convert histedit tests to .t...
r17085 |
Pierre-Yves David
test: use a lighter log style in histedit test...
r19014 o 2:ee283cb5f2d5 e
Mads Kiilerich
tests: convert histedit tests to .t...
r17085 |
Pierre-Yves David
test: use a lighter log style in histedit test...
r19014 o 1:d2ae7f538514 b
Mads Kiilerich
tests: convert histedit tests to .t...
r17085 |
Pierre-Yves David
test: use a lighter log style in histedit test...
r19014 o 0:cb9a9f314b8b a
Mads Kiilerich
tests: convert histedit tests to .t...
r17085
post-fold manifest
$ hg manifest
a
b
c
d
e
f
Pierre-Yves David
histedit: record histedit source (issue3681)...
r18437
check histedit_source
$ hg log --debug --rev 3
Pierre-Yves David
histedit-test: generalise --commands "-" usage...
r19019 changeset: 3:6de59d13424a8a13acd3e975514aed29dd0d9b2d
Pierre-Yves David
histedit: record histedit source (issue3681)...
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:
Pierre-Yves David
histedit-test: generalise --commands "-" usage...
r19019 f
***
c
Pierre-Yves David
histedit: record histedit source (issue3681)...
r18437
FUJIWARA Katsunori
histedit: save manually edited commit message into ".hg/last-message.txt"...
r20770 check saving last-message.txt
$ cat > $TESTDIR/abortfolding.py <<EOF
> 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]
> pretxncommit.abortfolding = python:$TESTDIR/abortfolding.py:abortfolding
> EOF
$ cat > $TESTDIR/editor.sh << EOF
> echo "==== before editing"
> cat \$1
> echo "===="
> echo "check saving last-message.txt" >> \$1
> EOF
$ rm -f .hg/last-message.txt
$ HGEDITOR="sh $TESTDIR/editor.sh" hg histedit 6de59d13424a --commands - 2>&1 <<EOF | fixbundle
> 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
Mads Kiilerich
tests: convert histedit tests to .t...
r17085 $ cd ..
Augie Fackler
histedit: don't crash if the result of fixing up a fold is empty
r17130
folding and creating no new change doesn't break:
Pierre-Yves David
test: improve documentation of some histedit tests...
r19015 -------------------------------------------------
Pierre-Yves David
histedit-test: replace obscure python script by a plain file...
r19016 folded content is dropped during a merge. The folded commit should properly disapear.
Pierre-Yves David
test: improve documentation of some histedit tests...
r19015
Augie Fackler
histedit: don't crash if the result of fixing up a fold is empty
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'
Pierre-Yves David
test: use a lighter log style in histedit test...
r19014 $ hg logt --graph
@ 3:251d831eeec5 +6
Augie Fackler
histedit: don't crash if the result of fixing up a fold is empty
r17130 |
Pierre-Yves David
test: use a lighter log style in histedit test...
r19014 o 2:888f9082bf99 +5
Augie Fackler
histedit: don't crash if the result of fixing up a fold is empty
r17130 |
Pierre-Yves David
test: use a lighter log style in histedit test...
r19014 o 1:617f94f13c0f +4
Augie Fackler
histedit: don't crash if the result of fixing up a fold is empty
r17130 |
Pierre-Yves David
test: use a lighter log style in histedit test...
r19014 o 0:0189ba417d34 1+2+3
Augie Fackler
histedit: don't crash if the result of fixing up a fold is empty
r17130
Pierre-Yves David
histedit-test: generalise --commands "-" usage...
r19019 $ hg histedit 1 --commands - << EOF
Pierre-Yves David
histedit-test: replace obscure python script by a plain file...
r19016 > pick 617f94f13c0f 1 +4
> drop 888f9082bf99 2 +5
Pierre-Yves David
histedit: properly handle --continue on empty fold...
r19017 > fold 251d831eeec5 3 +6
Augie Fackler
histedit: don't crash if the result of fixing up a fold is empty
r17130 > EOF
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
Pierre-Yves David
histedit: replaces patching logic by merges...
r17647 merging file
warning: conflicts during merge.
merging file incomplete! (edit conflicts, then use 'hg resolve --mark')
Augie Fackler
histedit: switch from util.Abort to util.InterventionRequired where appropriate (bc)
r18934 Fix up the change and run hg histedit --continue
Augie Fackler
dispatch: exit with status 1 for an InterventionRequired exception (bc)
r18935 [1]
Pierre-Yves David
histedit: replaces patching logic by merges...
r17647 There were conflicts, we keep P1 content. This
Augie Fackler
histedit: don't crash if the result of fixing up a fold is empty
r17130 should effectively drop the changes from +6.
$ hg status
Pierre-Yves David
histedit: replaces patching logic by merges...
r17647 M file
? file.orig
$ hg resolve -l
U file
$ hg revert -r 'p1()' file
$ hg resolve --mark file
Augie Fackler
histedit: don't crash if the result of fixing up a fold is empty
r17130 $ hg histedit --continue
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
saved backup bundle to $TESTTMP/*-backup.hg (glob)
Pierre-Yves David
test: use a lighter log style in histedit test...
r19014 $ hg logt --graph
@ 1:617f94f13c0f +4
Augie Fackler
histedit: don't crash if the result of fixing up a fold is empty
r17130 |
Pierre-Yves David
test: use a lighter log style in histedit test...
r19014 o 0:0189ba417d34 1+2+3
Augie Fackler
histedit: don't crash if the result of fixing up a fold is empty
r17130
$ cd ..
Patrick Mezard
histedit: fix new nodes computation with --continue (issue3534)...
r17242
Pierre-Yves David
test: improve documentation of some histedit tests...
r19015
Test fold through dropped
-------------------------
Patrick Mezard
histedit: fix new nodes computation with --continue (issue3534)...
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'
Martin Geisler
test-histedit-fold: remove unnecessary --template...
r19391 $ hg logt -G
Patrick Mezard
histedit: fix new nodes computation with --continue (issue3534)...
r17242 @ 3:251d831eeec5 +6
|
o 2:888f9082bf99 +5
|
o 1:617f94f13c0f +4
|
o 0:0189ba417d34 1+2+3
Pierre-Yves David
histedit-test: generalise --commands "-" usage...
r19019 $ hg histedit 1 --commands - << EOF
Patrick Mezard
histedit: fix new nodes computation with --continue (issue3534)...
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
Pierre-Yves David
histedit: replaces patching logic by merges...
r17647 merging file
warning: conflicts during merge.
merging file incomplete! (edit conflicts, then use 'hg resolve --mark')
Augie Fackler
histedit: switch from util.Abort to util.InterventionRequired where appropriate (bc)
r18934 Fix up the change and run hg histedit --continue
Augie Fackler
dispatch: exit with status 1 for an InterventionRequired exception (bc)
r18935 [1]
Pierre-Yves David
histedit: replaces patching logic by merges...
r17647 $ cat > file << EOF
> 1
> 2
> 3
> 4
> 5
> EOF
$ hg resolve --mark file
Matt Mackall
checkunfinished: accommodate histedit quirk...
r19496 $ hg commit -m '+5.2'
Patrick Mezard
histedit: fix new nodes computation with --continue (issue3534)...
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
Pierre-Yves David
histedit: fold in memory...
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
Patrick Mezard
histedit: fix new nodes computation with --continue (issue3534)...
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)
Pierre-Yves David
test: use a lighter log style in histedit test...
r19014 $ hg logt -G
@ 1:10c647b2cdd5 +4
Pierre-Yves David
histedit-test: make test-fold more verbose...
r17687 |
Pierre-Yves David
test: use a lighter log style in histedit test...
r19014 o 0:0189ba417d34 1+2+3
Pierre-Yves David
histedit-test: make test-fold more verbose...
r17687
$ hg export tip
# HG changeset patch
# User test
# Date 0 0
Mads Kiilerich
export: show 'Date' header in a format that also is readable for humans...
r18648 # Thu Jan 01 00:00:00 1970 +0000
Pierre-Yves David
histedit: record histedit source (issue3681)...
r18437 # Node ID 10c647b2cdd54db0603ecb99b2ff5ce66d5a5323
Pierre-Yves David
histedit-test: make test-fold more verbose...
r17687 # Parent 0189ba417d34df9dda55f88b637dcae9917b5964
+4
***
+5.2
***
+6
Pierre-Yves David
histedit: record histedit source (issue3681)...
r18437 diff -r 0189ba417d34 -r 10c647b2cdd5 file
Pierre-Yves David
histedit-test: make test-fold more verbose...
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
Patrick Mezard
histedit: fix new nodes computation with --continue (issue3534)...
r17242 $ cd ..
Martin Geisler
histedit: use base for computing renames when folding (issue3729)...
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 ..