test-histedit-commute.t
489 lines
| 12.6 KiB
| text/troff
|
Tads3Lexer
/ tests / test-histedit-commute.t
|
r17085 | $ . "$TESTDIR/histedit-helpers.sh" | ||
$ cat >> $HGRCPATH <<EOF | ||||
> [extensions] | ||||
> histedit= | ||||
> 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 | ||||
show the edit commands offered | ||||
$ HGEDITOR=cat hg histedit 177f92b77385 | ||||
pick 177f92b77385 2 c | ||||
pick 055a42cdd887 3 d | ||||
pick e860deea161a 4 e | ||||
pick 652413bf663e 5 f | ||||
# Edit history between 177f92b77385 and 652413bf663e | ||||
# | ||||
|
r20503 | # Commits are listed from least to most recent | ||
# | ||||
|
r28396 | # You can reorder changesets by reordering the lines | ||
# | ||||
|
r17085 | # Commands: | ||
|
r27674 | # | ||
# e, edit = use commit, but stop for amending | ||||
# m, mess = edit commit message without changing commit content | ||||
|
r17085 | # p, pick = use commit | ||
|
r34490 | # b, base = checkout changeset and apply further changesets from there | ||
|
r27674 | # d, drop = remove commit from history | ||
|
r20511 | # f, fold = use commit, but combine it with the one above | ||
|
r31056 | # r, roll = like fold, but discard this commit's description and date | ||
|
r17085 | # | ||
edit the history | ||||
|
r19019 | (use a hacky editor to check histedit-last-edit.txt backup) | ||
$ EDITED="$TESTTMP/editedhistory" | ||||
$ cat > $EDITED <<EOF | ||||
|
r27546 | > edit 177f92b77385 c | ||
> pick e860deea161a e | ||||
> pick 652413bf663e f | ||||
> pick 055a42cdd887 d | ||||
> EOF | ||||
$ HGEDITOR="cat \"$EDITED\" > " hg histedit 177f92b77385 2>&1 | fixbundle | ||||
0 files updated, 0 files merged, 4 files removed, 0 files unresolved | ||||
|
r27629 | Editing (177f92b77385), you may commit or record as needed now. | ||
(hg histedit --continue to resume) | ||||
|
r27546 | |||
rules should end up in .hg/histedit-last-edit.txt: | ||||
$ cat .hg/histedit-last-edit.txt | ||||
edit 177f92b77385 c | ||||
pick e860deea161a e | ||||
pick 652413bf663e f | ||||
pick 055a42cdd887 d | ||||
$ hg histedit --abort | ||||
4 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ cat > $EDITED <<EOF | ||||
|
r19019 | > pick 177f92b77385 c | ||
> pick e860deea161a e | ||||
> pick 652413bf663e f | ||||
> pick 055a42cdd887 d | ||||
> EOF | ||||
|
r17086 | $ HGEDITOR="cat \"$EDITED\" > " hg histedit 177f92b77385 2>&1 | fixbundle | ||
|
r17085 | |||
log after edit | ||||
$ hg log --graph | ||||
|
r18437 | @ changeset: 5:07114f51870f | ||
|
r17085 | | tag: tip | ||
| user: test | ||||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: d | ||||
| | ||||
|
r18437 | o changeset: 4:8ade9693061e | ||
|
r17085 | | user: test | ||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: f | ||||
| | ||||
|
r18437 | o changeset: 3:d8249471110a | ||
|
r17085 | | user: test | ||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: e | ||||
| | ||||
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 | ||||
put things back | ||||
|
r19019 | $ hg histedit 177f92b77385 --commands - 2>&1 << EOF | fixbundle | ||
|
r17085 | > pick 177f92b77385 c | ||
|
r18437 | > pick 07114f51870f d | ||
> pick d8249471110a e | ||||
> pick 8ade9693061e f | ||||
|
r17085 | > EOF | ||
$ hg log --graph | ||||
|
r18437 | @ changeset: 5:7eca9b5b1148 | ||
|
r17085 | | tag: tip | ||
| user: test | ||||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: f | ||||
| | ||||
|
r18437 | o changeset: 4:915da888f2de | ||
|
r17085 | | user: test | ||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: e | ||||
| | ||||
|
r18437 | o changeset: 3:10517e47bbbb | ||
|
r17085 | | 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 | ||||
slightly different this time | ||||
|
r19019 | $ hg histedit 177f92b77385 --commands - << EOF 2>&1 | fixbundle | ||
|
r18437 | > pick 10517e47bbbb d | ||
> pick 7eca9b5b1148 f | ||||
> pick 915da888f2de e | ||||
|
r17085 | > pick 177f92b77385 c | ||
> EOF | ||||
$ hg log --graph | ||||
|
r18437 | @ changeset: 5:38b92f448761 | ||
|
r17085 | | tag: tip | ||
| user: test | ||||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: c | ||||
| | ||||
|
r18437 | o changeset: 4:de71b079d9ce | ||
|
r17085 | | user: test | ||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: e | ||||
| | ||||
|
r18437 | o changeset: 3:be9ae3a309c6 | ||
|
r17085 | | user: test | ||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: f | ||||
| | ||||
|
r18437 | o changeset: 2:799205341b6b | ||
|
r17085 | | user: test | ||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: d | ||||
| | ||||
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 | ||||
keep prevents stripping dead revs | ||||
|
r19019 | $ hg histedit 799205341b6b --keep --commands - 2>&1 << EOF | fixbundle | ||
|
r18437 | > pick 799205341b6b d | ||
> pick be9ae3a309c6 f | ||||
> pick 38b92f448761 c | ||||
> pick de71b079d9ce e | ||||
|
r17085 | > EOF | ||
$ hg log --graph | ||||
|
r18437 | @ changeset: 7:803ef1c6fcfd | ||
|
r17085 | | tag: tip | ||
| user: test | ||||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: e | ||||
| | ||||
|
r18437 | o changeset: 6:ece0b8d93dda | ||
| parent: 3:be9ae3a309c6 | ||||
|
r17085 | | user: test | ||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: c | ||||
| | ||||
|
r18437 | | o changeset: 5:38b92f448761 | ||
|
r17085 | | | user: test | ||
| | date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| | summary: c | ||||
| | | ||||
|
r18437 | | o changeset: 4:de71b079d9ce | ||
|
r17085 | |/ user: test | ||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: e | ||||
| | ||||
|
r18437 | o changeset: 3:be9ae3a309c6 | ||
|
r17085 | | user: test | ||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: f | ||||
| | ||||
|
r18437 | o changeset: 2:799205341b6b | ||
|
r17085 | | user: test | ||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: d | ||||
| | ||||
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 | ||||
try with --rev | ||||
|
r19019 | $ hg histedit --commands - --rev -2 2>&1 <<EOF | fixbundle | ||
> pick de71b079d9ce e | ||||
> pick 38b92f448761 c | ||||
> EOF | ||||
|
r27955 | hg: parse error: pick "de71b079d9ce" changeset was not a candidate | ||
|
r27712 | (only use listed changesets) | ||
|
r17085 | $ hg log --graph | ||
|
r18437 | @ changeset: 7:803ef1c6fcfd | ||
|
r17085 | | tag: tip | ||
| user: test | ||||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: e | ||||
| | ||||
|
r18437 | o changeset: 6:ece0b8d93dda | ||
| parent: 3:be9ae3a309c6 | ||||
|
r17085 | | user: test | ||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: c | ||||
| | ||||
|
r18437 | | o changeset: 5:38b92f448761 | ||
|
r17085 | | | user: test | ||
| | date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| | summary: c | ||||
| | | ||||
|
r18437 | | o changeset: 4:de71b079d9ce | ||
|
r17085 | |/ user: test | ||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: e | ||||
| | ||||
|
r18437 | o changeset: 3:be9ae3a309c6 | ||
|
r17085 | | user: test | ||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: f | ||||
| | ||||
|
r18437 | o changeset: 2:799205341b6b | ||
|
r17085 | | user: test | ||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: d | ||||
| | ||||
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 | ||||
|
r21950 | Verify that revsetalias entries work with histedit: | ||
$ cat >> $HGRCPATH <<EOF | ||||
> [revsetalias] | ||||
> grandparent(ARG) = p1(p1(ARG)) | ||||
> EOF | ||||
$ echo extra commit >> c | ||||
$ hg ci -m 'extra commit to c' | ||||
$ HGEDITOR=cat hg histedit 'grandparent(.)' | ||||
pick ece0b8d93dda 6 c | ||||
pick 803ef1c6fcfd 7 e | ||||
pick 9c863c565126 8 extra commit to c | ||||
# Edit history between ece0b8d93dda and 9c863c565126 | ||||
# | ||||
# Commits are listed from least to most recent | ||||
# | ||||
|
r28396 | # You can reorder changesets by reordering the lines | ||
# | ||||
|
r21950 | # Commands: | ||
|
r27674 | # | ||
# e, edit = use commit, but stop for amending | ||||
# m, mess = edit commit message without changing commit content | ||||
|
r21950 | # p, pick = use commit | ||
|
r34490 | # b, base = checkout changeset and apply further changesets from there | ||
|
r27674 | # d, drop = remove commit from history | ||
|
r21950 | # f, fold = use commit, but combine it with the one above | ||
|
r31056 | # r, roll = like fold, but discard this commit's description and date | ||
|
r21950 | # | ||
|
r17085 | |||
should also work if a commit message is missing | ||||
$ BUNDLE="$TESTDIR/missing-comment.hg" | ||||
$ hg init missing | ||||
$ cd missing | ||||
$ hg unbundle $BUNDLE | ||||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
added 3 changesets with 3 changes to 1 files | ||||
|
r34662 | new changesets 141947992243:bd22688093b3 | ||
|
r17085 | (run 'hg update' to get a working copy) | ||
$ hg co tip | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ hg log --graph | ||||
@ changeset: 2:bd22688093b3 | ||||
| tag: tip | ||||
| user: Robert Altman <robert.altman@telventDTN.com> | ||||
| date: Mon Nov 28 16:40:04 2011 +0000 | ||||
| summary: Update file. | ||||
| | ||||
o changeset: 1:3b3e956f9171 | ||||
| user: Robert Altman <robert.altman@telventDTN.com> | ||||
| date: Mon Nov 28 16:37:57 2011 +0000 | ||||
| | ||||
o changeset: 0:141947992243 | ||||
user: Robert Altman <robert.altman@telventDTN.com> | ||||
date: Mon Nov 28 16:35:28 2011 +0000 | ||||
summary: Checked in text file | ||||
$ hg histedit 0 | ||||
$ cd .. | ||||
|
r23889 | |||
$ cd .. | ||||
Test to make sure folding renames doesn't cause bogus conflicts (issue4251): | ||||
$ hg init issue4251 | ||||
$ cd issue4251 | ||||
$ mkdir initial-dir | ||||
$ echo foo > initial-dir/initial-file | ||||
$ hg add initial-dir/initial-file | ||||
$ hg commit -m "initial commit" | ||||
Move the file to a new directory, and in the same commit, change its content: | ||||
$ mkdir another-dir | ||||
$ hg mv initial-dir/initial-file another-dir/ | ||||
$ echo changed > another-dir/initial-file | ||||
$ hg commit -m "moved and changed" | ||||
Rename the file: | ||||
$ hg mv another-dir/initial-file another-dir/renamed-file | ||||
$ hg commit -m "renamed" | ||||
Now, let's try to fold the second commit into the first: | ||||
$ cat > editor.sh <<EOF | ||||
> #!/bin/sh | ||||
> cat > \$1 <<ENDOF | ||||
> pick b0f4233702ca 0 initial commit | ||||
> fold 5e8704a8f2d2 1 moved and changed | ||||
> pick 40e7299e8fa7 2 renamed | ||||
> ENDOF | ||||
> EOF | ||||
|
r23910 | $ HGEDITOR="sh ./editor.sh" hg histedit 0 | ||
|
r35394 | saved backup bundle to $TESTTMP/issue4251/.hg/strip-backup/b0f4233702ca-4cf5af69-histedit.hg | ||
|
r23889 | |||
$ hg --config diff.git=yes export 0 | ||||
# HG changeset patch | ||||
# User test | ||||
# Date 0 0 | ||||
# Thu Jan 01 00:00:00 1970 +0000 | ||||
# Node ID fffadc26f8f85623ce60b028a3f1ccc3730f8530 | ||||
# Parent 0000000000000000000000000000000000000000 | ||||
pick b0f4233702ca 0 initial commit | ||||
fold 5e8704a8f2d2 1 moved and changed | ||||
pick 40e7299e8fa7 2 renamed | ||||
diff --git a/another-dir/initial-file b/another-dir/initial-file | ||||
new file mode 100644 | ||||
--- /dev/null | ||||
+++ b/another-dir/initial-file | ||||
@@ -0,0 +1,1 @@ | ||||
+changed | ||||
$ hg --config diff.git=yes export 1 | ||||
# HG changeset patch | ||||
# User test | ||||
# Date 0 0 | ||||
# Thu Jan 01 00:00:00 1970 +0000 | ||||
# Node ID 9b730d82b00af8a2766facebfa47cc124405a118 | ||||
# Parent fffadc26f8f85623ce60b028a3f1ccc3730f8530 | ||||
renamed | ||||
diff --git a/another-dir/initial-file b/another-dir/renamed-file | ||||
rename from another-dir/initial-file | ||||
rename to another-dir/renamed-file | ||||
$ cd .. | ||||
|
r35391 | |||
Test that branches are preserved and stays active | ||||
------------------------------------------------- | ||||
$ hg init repo-with-branch | ||||
$ cd repo-with-branch | ||||
$ echo a > a | ||||
$ hg add a | ||||
$ hg commit -m A | ||||
$ hg branch foo | ||||
marked working directory as branch foo | ||||
(branches are permanent and global, did you want a bookmark?) | ||||
$ echo a > b | ||||
$ hg add b | ||||
$ hg commit -m foo-B | ||||
$ echo a > c | ||||
$ hg add c | ||||
$ hg commit -m foo-C | ||||
$ hg branch | ||||
foo | ||||
$ echo "pick efefa76d6dc3 2 foo-C" >> cmd | ||||
$ echo "pick 7336e7550422 1 foo-B" >> cmd | ||||
$ HGEDITOR=cat hg histedit -r ".^" --commands cmd --quiet | ||||
$ hg log --template '{rev} {branch}\n' | ||||
2 foo | ||||
1 foo | ||||
0 default | ||||
$ hg branch | ||||
foo | ||||
$ cd .. | ||||