mirror of
https://github.com/facebook/sapling.git
synced 2024-10-07 15:27:13 +03:00
05537e0c0f
Before this patch, when editing a hunk, if the editor was exiting with a non- zero status the crecord session would be aborted. This patch makes crecord handle the failure and goes back to the state before the failed edition. We use the new error reporting mechanism introduced in the previous patch to notify the user of the issue.
169 lines
2.7 KiB
Perl
169 lines
2.7 KiB
Perl
Set up a repo
|
|
|
|
$ cat <<EOF >> $HGRCPATH
|
|
> [ui]
|
|
> interactive = true
|
|
> [experimental]
|
|
> crecord = true
|
|
> crecordtest = testModeCommands
|
|
> EOF
|
|
|
|
$ hg init a
|
|
$ cd a
|
|
|
|
Committing some changes but stopping on the way
|
|
|
|
$ echo "a" > a
|
|
$ hg add a
|
|
$ cat <<EOF >testModeCommands
|
|
> TOGGLE
|
|
> X
|
|
> EOF
|
|
$ hg commit -i -m "a" -d "0 0"
|
|
no changes to record
|
|
$ hg tip
|
|
changeset: -1:000000000000
|
|
tag: tip
|
|
user:
|
|
date: Thu Jan 01 00:00:00 1970 +0000
|
|
|
|
|
|
Committing some changes
|
|
|
|
$ cat <<EOF >testModeCommands
|
|
> X
|
|
> EOF
|
|
$ hg commit -i -m "a" -d "0 0"
|
|
$ hg tip
|
|
changeset: 0:cb9a9f314b8b
|
|
tag: tip
|
|
user: test
|
|
date: Thu Jan 01 00:00:00 1970 +0000
|
|
summary: a
|
|
|
|
Committing only one file
|
|
|
|
$ echo "a" >> a
|
|
>>> open('b', 'wb').write("1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n")
|
|
$ hg add b
|
|
$ cat <<EOF >testModeCommands
|
|
> TOGGLE
|
|
> KEY_DOWN
|
|
> X
|
|
> EOF
|
|
$ hg commit -i -m "one file" -d "0 0"
|
|
$ hg tip
|
|
changeset: 1:fb2705a663ea
|
|
tag: tip
|
|
user: test
|
|
date: Thu Jan 01 00:00:00 1970 +0000
|
|
summary: one file
|
|
|
|
$ hg cat -r tip a
|
|
a
|
|
$ cat a
|
|
a
|
|
a
|
|
|
|
Committing only one hunk while aborting edition of hunk
|
|
|
|
- Untoggle all the hunks, go down to the second file
|
|
- unfold it
|
|
- go down to second hunk (1 for the first hunk, 1 for the first hunkline, 1 for the second hunk, 1 for the second hunklike)
|
|
- toggle the second hunk
|
|
- edit the hunk and quit the editor imediately with non-zero status
|
|
- commit
|
|
|
|
$ printf "printf 'editor ran\n'; exit 1" > editor.sh
|
|
$ echo "x" > c
|
|
$ cat b >> c
|
|
$ echo "y" >> c
|
|
$ mv c b
|
|
$ cat <<EOF >testModeCommands
|
|
> A
|
|
> KEY_DOWN
|
|
> f
|
|
> KEY_DOWN
|
|
> KEY_DOWN
|
|
> KEY_DOWN
|
|
> KEY_DOWN
|
|
> TOGGLE
|
|
> e
|
|
> X
|
|
> EOF
|
|
$ HGEDITOR="\"sh\" \"`pwd`/editor.sh\"" hg commit -i -m "one hunk" -d "0 0"
|
|
editor ran
|
|
$ rm editor.sh
|
|
$ hg tip
|
|
changeset: 2:7d10dfe755a8
|
|
tag: tip
|
|
user: test
|
|
date: Thu Jan 01 00:00:00 1970 +0000
|
|
summary: one hunk
|
|
|
|
$ hg cat -r tip b
|
|
1
|
|
2
|
|
3
|
|
4
|
|
5
|
|
6
|
|
7
|
|
8
|
|
9
|
|
10
|
|
y
|
|
$ cat b
|
|
x
|
|
1
|
|
2
|
|
3
|
|
4
|
|
5
|
|
6
|
|
7
|
|
8
|
|
9
|
|
10
|
|
y
|
|
$ hg commit -m "other hunks"
|
|
$ hg tip
|
|
changeset: 3:a6735021574d
|
|
tag: tip
|
|
user: test
|
|
date: Thu Jan 01 00:00:00 1970 +0000
|
|
summary: other hunks
|
|
|
|
$ hg cat -r tip b
|
|
x
|
|
1
|
|
2
|
|
3
|
|
4
|
|
5
|
|
6
|
|
7
|
|
8
|
|
9
|
|
10
|
|
y
|
|
|
|
Newly added files can be selected with the curses interface
|
|
|
|
$ hg update -C .
|
|
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
$ echo "hello" > x
|
|
$ hg add x
|
|
$ cat <<EOF >testModeCommands
|
|
> TOGGLE
|
|
> TOGGLE
|
|
> X
|
|
> EOF
|
|
$ hg st
|
|
A x
|
|
? testModeCommands
|
|
$ hg commit -i -m "newly added file" -d "0 0"
|
|
$ hg st
|
|
? testModeCommands
|
|
|