mirror of
https://github.com/facebook/sapling.git
synced 2024-10-07 23:38:50 +03:00
merge with crew-stable
This commit is contained in:
commit
d02cbcaa88
@ -412,14 +412,15 @@ class ui(object):
|
||||
|
||||
def prompt(self, msg, pat=None, default="y", matchflags=0):
|
||||
if not self.interactive: return default
|
||||
try:
|
||||
r = self._readline(msg + ' ')
|
||||
if not pat or re.match(pat, r, matchflags):
|
||||
return r
|
||||
else:
|
||||
self.write(_("unrecognized response\n"))
|
||||
except EOFError:
|
||||
raise util.Abort(_('response expected'))
|
||||
while True:
|
||||
try:
|
||||
r = self._readline(msg + ' ')
|
||||
if not pat or re.match(pat, r, matchflags):
|
||||
return r
|
||||
else:
|
||||
self.write(_("unrecognized response\n"))
|
||||
except EOFError:
|
||||
raise util.Abort(_('response expected'))
|
||||
|
||||
def getpass(self, prompt=None, default=None):
|
||||
if not self.interactive: return default
|
||||
|
69
tests/test-merge-prompt
Executable file
69
tests/test-merge-prompt
Executable file
@ -0,0 +1,69 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Test for b5605d88dc27
|
||||
# Make ui.prompt repeat on "unrecognized response" again (issue897)
|
||||
# and for 840e2b315c1f
|
||||
# Fix misleading error and prompts during update/merge (issue556)
|
||||
|
||||
status() {
|
||||
[ $? -ne 0 ] && echo "failed."
|
||||
echo "status:"
|
||||
hg st -A file1 file2
|
||||
for file in file1 file2; do
|
||||
if [ -f $file ]; then
|
||||
echo "$file:"
|
||||
cat $file
|
||||
else
|
||||
echo "$file does not exist"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
hg init repo
|
||||
cd repo
|
||||
echo 1 > file1
|
||||
echo 2 > file2
|
||||
hg ci -Am 'added file1 and file2' # rev 0
|
||||
|
||||
hg rm file1
|
||||
echo changed >> file2
|
||||
hg ci -m 'removed file1, changed file2' # rev 1
|
||||
|
||||
hg co 0
|
||||
echo changed >> file1
|
||||
hg rm file2
|
||||
hg ci -m 'changed file1, removed file2' # rev 2
|
||||
|
||||
echo
|
||||
echo "# non-interactive merge"
|
||||
hg merge -y || echo "failed"
|
||||
status
|
||||
|
||||
echo
|
||||
echo "# interactive merge"
|
||||
hg co -C
|
||||
hg merge --config ui.interactive=true <<EOF || echo "failed"
|
||||
c
|
||||
d
|
||||
EOF
|
||||
status
|
||||
|
||||
echo
|
||||
echo "# interactive merge with bad input"
|
||||
hg co -C
|
||||
hg merge --config ui.interactive=true <<EOF || echo "failed"
|
||||
foo
|
||||
bar
|
||||
d
|
||||
baz
|
||||
c
|
||||
EOF
|
||||
status
|
||||
|
||||
echo
|
||||
echo "# interactive merge with not enough input"
|
||||
hg co -C
|
||||
hg merge --config ui.interactive=true <<EOF || echo "failed"
|
||||
d
|
||||
EOF
|
||||
status
|
64
tests/test-merge-prompt.out
Normal file
64
tests/test-merge-prompt.out
Normal file
@ -0,0 +1,64 @@
|
||||
adding file1
|
||||
adding file2
|
||||
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
||||
|
||||
# non-interactive merge
|
||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
||||
(branch merge, don't forget to commit)
|
||||
status:
|
||||
M file2
|
||||
C file1
|
||||
file1:
|
||||
1
|
||||
changed
|
||||
file2:
|
||||
2
|
||||
changed
|
||||
|
||||
# interactive merge
|
||||
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
|
||||
local changed file1 which remote deleted
|
||||
use (c)hanged version or (d)elete? remote changed file2 which local deleted
|
||||
use (c)hanged version or leave (d)eleted? 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
||||
(branch merge, don't forget to commit)
|
||||
status:
|
||||
file2: No such file or directory
|
||||
C file1
|
||||
file1:
|
||||
1
|
||||
changed
|
||||
file2 does not exist
|
||||
|
||||
# interactive merge with bad input
|
||||
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
||||
local changed file1 which remote deleted
|
||||
use (c)hanged version or (d)elete? unrecognized response
|
||||
local changed file1 which remote deleted
|
||||
use (c)hanged version or (d)elete? unrecognized response
|
||||
local changed file1 which remote deleted
|
||||
use (c)hanged version or (d)elete? remote changed file2 which local deleted
|
||||
use (c)hanged version or leave (d)eleted? unrecognized response
|
||||
remote changed file2 which local deleted
|
||||
use (c)hanged version or leave (d)eleted? 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
|
||||
(branch merge, don't forget to commit)
|
||||
status:
|
||||
M file2
|
||||
R file1
|
||||
file1 does not exist
|
||||
file2:
|
||||
2
|
||||
changed
|
||||
|
||||
# interactive merge with not enough input
|
||||
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
|
||||
local changed file1 which remote deleted
|
||||
use (c)hanged version or (d)elete? remote changed file2 which local deleted
|
||||
use (c)hanged version or leave (d)eleted? abort: response expected
|
||||
failed
|
||||
status:
|
||||
file2: No such file or directory
|
||||
C file1
|
||||
file1:
|
||||
1
|
||||
changed
|
||||
file2 does not exist
|
Loading…
Reference in New Issue
Block a user