crecord: fix issue when backgrounding editor would leave artefact
Before this patch:
- if a user was entering a commit message after having ran the curses
interface
- and then uses ctrl-z, followed by fg to put the editor in the
background/foreground
- then the curses interface would leave artefact on the screen of
the editor, making entering the commit message a difficult task
This happened because ncurses registers a signal handler for SIGTSTP and
does not restore the original signal handler after running.
More info at:
http://stackoverflow.com/questions/31440392/
curses-wrapper-messing-up-terminal-after-background-foreground-sequence/
31441709#31441709
This patch restores the original value of the signal handler after
running the curses interface and therefore fixes this issue.
It don't know how to add a test for this issue, I tested the scenario
above manually and it works correctly with the patch.
$ cat >> $HGRCPATH <<EOF
> [extensions]
> rebase=
>
> [phases]
> publish=False
>
> [alias]
> tglog = log -G --template "{rev}: '{desc}' {branches}\n"
> EOF
$ hg init a
$ cd a
$ echo c1 > c1
$ hg ci -Am c1
adding c1
$ echo c2 > c2
$ hg ci -Am c2
adding c2
$ echo l1 > l1
$ hg ci -Am l1
adding l1
$ hg up -q -C 1
$ echo r1 > r1
$ hg ci -Am r1
adding r1
created new head
$ echo r2 > r2
$ hg ci -Am r2
adding r2
$ hg tglog
@ 4: 'r2'
|
o 3: 'r1'
|
| o 2: 'l1'
|/
o 1: 'c2'
|
o 0: 'c1'
Rebase with no arguments - single revision in source branch:
$ hg up -q -C 2
$ hg rebase
rebasing 2:87c180a611f2 "l1"
saved backup bundle to $TESTTMP/a/.hg/strip-backup/87c180a611f2-a5be192d-backup.hg (glob)
$ hg tglog
@ 4: 'l1'
|
o 3: 'r2'
|
o 2: 'r1'
|
o 1: 'c2'
|
o 0: 'c1'
$ cd ..
$ hg init b
$ cd b
$ echo c1 > c1
$ hg ci -Am c1
adding c1
$ echo c2 > c2
$ hg ci -Am c2
adding c2
$ echo l1 > l1
$ hg ci -Am l1
adding l1
$ echo l2 > l2
$ hg ci -Am l2
adding l2
$ hg up -q -C 1
$ echo r1 > r1
$ hg ci -Am r1
adding r1
created new head
$ hg tglog
@ 4: 'r1'
|
| o 3: 'l2'
| |
| o 2: 'l1'
|/
o 1: 'c2'
|
o 0: 'c1'
Rebase with no arguments - single revision in target branch:
$ hg up -q -C 3
$ hg rebase
rebasing 2:87c180a611f2 "l1"
rebasing 3:1ac923b736ef "l2"
saved backup bundle to $TESTTMP/b/.hg/strip-backup/87c180a611f2-b980535c-backup.hg (glob)
$ hg tglog
@ 4: 'l2'
|
o 3: 'l1'
|
o 2: 'r1'
|
o 1: 'c2'
|
o 0: 'c1'
$ cd ..