--- a/mercurial/subrepo.py Mon Sep 20 15:44:30 2010 +0200
+++ b/mercurial/subrepo.py Mon Sep 20 15:46:17 2010 +0200
@@ -282,6 +282,15 @@
"""return file flags"""
return ''
+ def archive(self, archiver, prefix):
+ for name in self.files():
+ flags = self.fileflags(name)
+ mode = 'x' in flags and 0755 or 0644
+ symlink = 'l' in flags
+ archiver.addfile(os.path.join(prefix, self._path, name),
+ mode, symlink, self.filedata(name))
+
+
class hgsubrepo(abstractsubrepo):
def __init__(self, ctx, path, state):
self._path = path
@@ -341,6 +350,15 @@
self._repo.ui.warn(_("warning: %s in %s\n")
% (inst, relpath(self)))
+ def archive(self, archiver, prefix):
+ abstractsubrepo.archive(self, archiver, prefix)
+
+ rev = self._state[1]
+ ctx = self._repo[rev]
+ for subpath in ctx.substate:
+ s = subrepo(ctx, subpath)
+ s.archive(archiver, os.path.join(prefix, self._path))
+
def dirty(self):
r = self._state[1]
if r == '':