merge with crew

This commit is contained in:
Benoit Boissinot 2009-01-04 21:49:37 +01:00
commit 722aaa1329
7 changed files with 116 additions and 23 deletions

View File

@ -191,7 +191,13 @@ def createlog(ui, directory=None, root="", rlog=True, cache=None):
ui.note(_("running %s\n") % (' '.join(cmd)))
ui.debug(_("prefix=%r directory=%r root=%r\n") % (prefix, directory, root))
for line in util.popen(' '.join(cmd)):
pfp = util.popen(' '.join(cmd))
peek = pfp.readline()
while True:
line = peek
if line == '':
break
peek = pfp.readline()
if line.endswith('\n'):
line = line[:-1]
#ui.debug('state=%d line=%r\n' % (state, line))
@ -312,7 +318,7 @@ def createlog(ui, directory=None, root="", rlog=True, cache=None):
e.branches = [tuple([int(y) for y in x.strip().split('.')])
for x in m.group(1).split(';')]
state = 8
elif re_31.match(line):
elif re_31.match(line) and re_50.match(peek):
state = 5
store = True
elif re_32.match(line):

View File

@ -1190,17 +1190,16 @@ class queue:
patchf.write(chunk)
try:
copies = {}
for dst in a:
src = repo.dirstate.copied(dst)
# during qfold, the source file for copies may
# be removed. Treat this as a simple add.
if src is not None and src in repo.dirstate:
copies.setdefault(src, []).append(dst)
repo.dirstate.add(dst)
# remember the copies between patchparent and tip
# this may be slow, so don't do it if we're not tracking copies
if self.diffopts().git:
copies = {}
for dst in a:
src = repo.dirstate.copied(dst)
# during qfold, the source file for copies may
# be removed. Treat this as a simple add.
if src is not None and src in repo.dirstate:
copies.setdefault(src, []).append(dst)
repo.dirstate.add(dst)
# remember the copies between patchparent and tip
for dst in aaa:
f = repo.file(dst)
src = f.renamed(man[dst])
@ -1211,9 +1210,15 @@ class queue:
# we can't copy a file created by the patch itself
if dst in copies:
del copies[dst]
for src, dsts in copies.iteritems():
for dst in dsts:
repo.dirstate.copy(src, dst)
for src, dsts in copies.iteritems():
for dst in dsts:
repo.dirstate.copy(src, dst)
else:
for dst in a:
repo.dirstate.add(dst)
# Drop useless copy information
for f in list(repo.dirstate.copies()):
repo.dirstate.copy(None, f)
for f in r:
repo.dirstate.remove(f)
# if the patch excludes a modified file, mark that

View File

@ -216,10 +216,15 @@ class dirstate(object):
self._dirty = False
def copy(self, source, dest):
"""Mark dest as a copy of source. Unmark dest if source is None.
"""
if source == dest:
return
self._dirty = True
self._copymap[dest] = source
if source is not None:
self._copymap[dest] = source
elif dest in self._copymap:
del self._copymap[dest]
def copied(self, file):
return self._copymap.get(file, None)

View File

@ -100,6 +100,19 @@ hg convert --filemap filemap src src-filemap | sed -e 's/connecting to.*cvsrepo/
hgcat b/c
hg -R src-filemap log --template '#rev# #desc# files: #files#\n'
echo % commit a new revision with funny log message
cd src
sleep 1
echo e >> a
cvscall -q commit -m'funny
----------------------------
log message' . | grep '<--' |\
sed -e 's:.*src/\(.*\),v.*:checking in src/\1,v:g'
cd ..
echo % convert again
hg convert src src-hg | sed -e 's/connecting to.*cvsrepo/connecting to cvsrepo/g'
echo "graphlog = " >> $HGRCPATH
hg -R src-hg glog --template '#rev# (#branches#) #desc# files: #files#\n'

View File

@ -124,6 +124,22 @@ d
2 update tags files: .hgtags
1 ci0 files: b/c
0 Initial revision files: b/c
% commit a new revision with funny log message
checking in src/a,v
% convert again
using builtin cvsps
collecting CVS rlog
9 log entries
creating changesets
6 changeset entries
connecting to cvsrepo
scanning source...
sorting...
converting...
0 funny
o 6 (branch) funny
| ----------------------------
| log message files: a
o 5 (branch) ci2 files: b/c
|
| o 4 () ci1 files: a b/c
@ -138,9 +154,9 @@ o 0 () Initial revision files: a b/c
% testing debugcvsps
collecting CVS rlog
8 log entries
9 log entries
creating changesets
5 changeset entries
6 changeset entries
---------------------
PatchSet 1
Date:
@ -204,3 +220,17 @@ ci2
Members:
b/c:1.1->1.1.2.1
---------------------
PatchSet 6
Date:
Author:
Branch: branch
Tag: (none)
Log:
funny
----------------------------
log message
Members:
a:1.2->1.2.2.1

View File

@ -123,15 +123,12 @@ sed -n '/^diff/s/diff -r [^ ]* //p' .hg/patches/mqbase
echo
cd ..
echo "[diff]" >> $HGRCPATH
echo "git=True" >> $HGRCPATH
# Test qrefresh --git losing copy metadata
echo % create test repo
hg init repo
cd repo
echo "[diff]" >> .hg/hgrc
echo "git=True" >> .hg/hgrc
echo a > a
hg ci -Am adda
hg copy a ab
@ -146,3 +143,27 @@ hg qref
hg qdiff
cd ..
# Test issue 1441: qrefresh confused after hg rename
echo % issue1441 without git patches
hg init repo-1441
cd repo-1441
echo a > a
hg add a
hg qnew -f p
hg mv a b
hg qrefresh
hg qdiff --nodates
cd ..
echo % issue1441 with git patches
hg init repo-1441-git
cd repo-1441-git
echo "[diff]" >> .hg/hgrc
echo "git=True" >> .hg/hgrc
echo a > a
hg add a
hg qnew -f p
hg mv a b
hg qrefresh
hg qdiff --nodates
cd ..

View File

@ -253,3 +253,16 @@ copy to ac
@@ -1,1 +1,2 @@
a
+c
% issue1441 without git patches
diff -r 000000000000 b
--- /dev/null
+++ b/b
@@ -0,0 +1,1 @@
+a
% issue1441 with git patches
diff --git a/b b/b
new file mode 100644
--- /dev/null
+++ b/b
@@ -0,0 +1,1 @@
+a