convert/bzr: fix symlinks target (issue1626/2)

This commit is contained in:
Patrick Mezard 2009-05-15 16:12:09 +02:00
parent aed75cf65f
commit d3d9100f4a
3 changed files with 21 additions and 4 deletions

View File

@ -73,12 +73,22 @@ class bzr_source(converter_source):
def getfile(self, name, rev):
revtree = self.sourcerepo.revision_tree(rev)
fileid = revtree.path2id(name)
if fileid is None or revtree.kind(fileid) not in supportedkinds:
kind = None
if fileid is not None:
kind = revtree.kind(fileid)
if kind not in supportedkinds:
# the file is not available anymore - was deleted
raise IOError(_('%s is not available in %s anymore') %
(name, rev))
sio = revtree.get_file(fileid)
return sio.read()
if kind == 'symlink':
target = revtree.get_symlink_target(fileid)
if target is None:
raise util.Abort(_('%s.%s symlink has no target')
% (name, rev))
return target
else:
sio = revtree.get_file(fileid)
return sio.read()
def getmode(self, name, rev):
return self._modecache[(name, rev)]

View File

@ -94,4 +94,8 @@ cd ..
hg convert source source-hg
manifest source-hg 0
manifest source-hg tip
cd ..
cd source-hg
echo % test the symlinks can be recreated
hg up
hg cat syma
cd ../..

View File

@ -70,3 +70,6 @@ converting...
755 * newprog
644 program
644 @ syma
% test the symlinks can be recreated
5 files updated, 0 files merged, 0 files removed, 0 files unresolved
a