test-histedit-no-change.t
187 lines
| 5.6 KiB
| text/troff
|
Tads3Lexer
/ tests / test-histedit-no-change.t
Mads Kiilerich
|
r17085 | test for old histedit issue #6: | ||
editing a changeset without any actual change would corrupt the repository | ||||
$ . "$TESTDIR/histedit-helpers.sh" | ||||
$ cat >> $HGRCPATH <<EOF | ||||
> [extensions] | ||||
> graphlog= | ||||
> histedit= | ||||
> EOF | ||||
$ initrepo () | ||||
> { | ||||
> dir="$1" | ||||
> comment="$2" | ||||
> if [ -n "${comment}" ]; then | ||||
> echo % ${comment} | ||||
> echo % ${comment} | sed 's:.:-:g' | ||||
> fi | ||||
> hg init ${dir} | ||||
> cd ${dir} | ||||
> for x in a b c d e f ; do | ||||
> echo $x > $x | ||||
> hg add $x | ||||
> hg ci -m $x | ||||
> done | ||||
> cd .. | ||||
> } | ||||
$ geneditor () | ||||
> { | ||||
> # generate an editor script for selecting changesets to be edited | ||||
> choice=$1 # changesets that should be edited (using sed line ranges) | ||||
> cat <<EOF | sed 's:^....::' | ||||
> # editing the rules, replacing 'pick' with 'edit' for the chosen lines | ||||
Mads Kiilerich
|
r17086 | > sed '${choice}s:^pick:edit:' "\$1" > "\${1}.tmp" | ||
> mv "\${1}.tmp" "\$1" | ||||
Mads Kiilerich
|
r17085 | > # displaying the resulting rules, minus comments and empty lines | ||
Mads Kiilerich
|
r17086 | > sed '/^#/d;/^$/d;s:^:| :' "\$1" >&2 | ||
Mads Kiilerich
|
r17085 | > EOF | ||
> } | ||||
$ startediting () | ||||
> { | ||||
> # begin an editing session | ||||
> choice="$1" # changesets that should be edited | ||||
> number="$2" # number of changesets considered (from tip) | ||||
> comment="$3" | ||||
> geneditor "${choice}" > edit.sh | ||||
> echo % start editing the history ${comment} | ||||
Mads Kiilerich
|
r17086 | > HGEDITOR="sh ./edit.sh" hg histedit -- -${number} 2>&1 | fixbundle | ||
Mads Kiilerich
|
r17085 | > } | ||
$ continueediting () | ||||
> { | ||||
> # continue an edit already in progress | ||||
> editor="$1" # message editor when finalizing editing | ||||
> comment="$2" | ||||
> echo % finalize changeset editing ${comment} | ||||
> HGEDITOR=${editor} hg histedit --continue 2>&1 | fixbundle | ||||
> } | ||||
$ graphlog () | ||||
> { | ||||
> comment="${1:-log}" | ||||
> echo % "${comment}" | ||||
> hg glog --template '{rev} {node} \"{desc|firstline}\"\n' | ||||
> } | ||||
$ initrepo r1 "test editing with no change" | ||||
% test editing with no change | ||||
----------------------------- | ||||
$ cd r1 | ||||
$ graphlog "log before editing" | ||||
% log before editing | ||||
@ 5 652413bf663ef2a641cab26574e46d5f5a64a55a "f" | ||||
| | ||||
o 4 e860deea161a2f77de56603b340ebbb4536308ae "e" | ||||
| | ||||
o 3 055a42cdd88768532f9cf79daa407fc8d138de9b "d" | ||||
| | ||||
o 2 177f92b773850b59254aa5e923436f921b55483b "c" | ||||
| | ||||
o 1 d2ae7f538514cd87c17547b0de4cea71fe1af9fb "b" | ||||
| | ||||
o 0 cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b "a" | ||||
$ startediting 2 3 "(not changing anything)" # edit the 2nd of 3 changesets | ||||
% start editing the history (not changing anything) | ||||
| pick 055a42cdd887 3 d | ||||
| edit e860deea161a 4 e | ||||
| pick 652413bf663e 5 f | ||||
0 files updated, 0 files merged, 2 files removed, 0 files unresolved | ||||
abort: Make changes as needed, you may commit or record as needed now. | ||||
When you are finished, run hg histedit --continue to resume. | ||||
$ continueediting true "(leaving commit message unaltered)" | ||||
% finalize changeset editing (leaving commit message unaltered) | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
check state of working copy | ||||
$ hg id | ||||
652413bf663e tip | ||||
$ graphlog "log after history editing" | ||||
% log after history editing | ||||
@ 5 652413bf663ef2a641cab26574e46d5f5a64a55a "f" | ||||
| | ||||
o 4 e860deea161a2f77de56603b340ebbb4536308ae "e" | ||||
| | ||||
o 3 055a42cdd88768532f9cf79daa407fc8d138de9b "d" | ||||
| | ||||
o 2 177f92b773850b59254aa5e923436f921b55483b "c" | ||||
| | ||||
o 1 d2ae7f538514cd87c17547b0de4cea71fe1af9fb "b" | ||||
| | ||||
o 0 cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b "a" | ||||
$ cd .. | ||||
$ initrepo r2 "test editing with no change, then abort" | ||||
% test editing with no change, then abort | ||||
----------------------------------------- | ||||
$ cd r2 | ||||
$ graphlog "log before editing" | ||||
% log before editing | ||||
@ 5 652413bf663ef2a641cab26574e46d5f5a64a55a "f" | ||||
| | ||||
o 4 e860deea161a2f77de56603b340ebbb4536308ae "e" | ||||
| | ||||
o 3 055a42cdd88768532f9cf79daa407fc8d138de9b "d" | ||||
| | ||||
o 2 177f92b773850b59254aa5e923436f921b55483b "c" | ||||
| | ||||
o 1 d2ae7f538514cd87c17547b0de4cea71fe1af9fb "b" | ||||
| | ||||
o 0 cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b "a" | ||||
$ startediting 1,2 3 "(not changing anything)" # edit the 1st two of 3 changesets | ||||
% start editing the history (not changing anything) | ||||
| edit 055a42cdd887 3 d | ||||
| edit e860deea161a 4 e | ||||
| pick 652413bf663e 5 f | ||||
0 files updated, 0 files merged, 3 files removed, 0 files unresolved | ||||
abort: Make changes as needed, you may commit or record as needed now. | ||||
When you are finished, run hg histedit --continue to resume. | ||||
$ continueediting true "(leaving commit message unaltered)" | ||||
% finalize changeset editing (leaving commit message unaltered) | ||||
0 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
abort: Make changes as needed, you may commit or record as needed now. | ||||
When you are finished, run hg histedit --continue to resume. | ||||
$ graphlog "log after first edit" | ||||
% log after first edit | ||||
o 5 652413bf663ef2a641cab26574e46d5f5a64a55a "f" | ||||
| | ||||
o 4 e860deea161a2f77de56603b340ebbb4536308ae "e" | ||||
| | ||||
@ 3 055a42cdd88768532f9cf79daa407fc8d138de9b "d" | ||||
| | ||||
o 2 177f92b773850b59254aa5e923436f921b55483b "c" | ||||
| | ||||
o 1 d2ae7f538514cd87c17547b0de4cea71fe1af9fb "b" | ||||
| | ||||
o 0 cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b "a" | ||||
abort editing session | ||||
$ hg histedit --abort 2>&1 | fixbundle | ||||
2 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ graphlog "log after abort" | ||||
% log after abort | ||||
@ 5 652413bf663ef2a641cab26574e46d5f5a64a55a "f" | ||||
| | ||||
o 4 e860deea161a2f77de56603b340ebbb4536308ae "e" | ||||
| | ||||
o 3 055a42cdd88768532f9cf79daa407fc8d138de9b "d" | ||||
| | ||||
o 2 177f92b773850b59254aa5e923436f921b55483b "c" | ||||
| | ||||
o 1 d2ae7f538514cd87c17547b0de4cea71fe1af9fb "b" | ||||
| | ||||
o 0 cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b "a" | ||||
$ cd .. | ||||