merge with crew-stable

This commit is contained in:
Thomas Arendsen Hein 2007-12-27 13:39:59 +01:00
commit d02cbcaa88
3 changed files with 142 additions and 8 deletions

View File

@ -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
View 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

View 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