--- a/mercurial/subrepo.py Sat Feb 25 21:44:34 2017 -0500
+++ b/mercurial/subrepo.py Sat Feb 25 21:13:59 2017 -0500
@@ -542,8 +542,8 @@
"""return filename iterator"""
raise NotImplementedError
- def filedata(self, name):
- """return file data"""
+ def filedata(self, name, decode):
+ """return file data, optionally passed through repo decoders"""
raise NotImplementedError
def fileflags(self, name):
@@ -558,7 +558,7 @@
"""handle the files command for this subrepo"""
return 1
- def archive(self, archiver, prefix, match=None):
+ def archive(self, archiver, prefix, match=None, decode=True):
if match is not None:
files = [f for f in self.files() if match(f)]
else:
@@ -572,7 +572,7 @@
mode = 'x' in flags and 0o755 or 0o644
symlink = 'l' in flags
archiver.addfile(prefix + self._path + '/' + name,
- mode, symlink, self.filedata(name))
+ mode, symlink, self.filedata(name, decode))
self.ui.progress(_('archiving (%s)') % relpath, i + 1,
unit=_('files'), total=total)
self.ui.progress(_('archiving (%s)') % relpath, None)
@@ -782,7 +782,7 @@
% (inst, subrelpath(self)))
@annotatesubrepoerror
- def archive(self, archiver, prefix, match=None):
+ def archive(self, archiver, prefix, match=None, decode=True):
self._get(self._state + ('hg',))
total = abstractsubrepo.archive(self, archiver, prefix, match)
rev = self._state[1]
@@ -790,7 +790,8 @@
for subpath in ctx.substate:
s = subrepo(ctx, subpath, True)
submatch = matchmod.subdirmatcher(subpath, match)
- total += s.archive(archiver, prefix + self._path + '/', submatch)
+ total += s.archive(archiver, prefix + self._path + '/', submatch,
+ decode)
return total
@annotatesubrepoerror
@@ -956,9 +957,12 @@
ctx = self._repo[rev]
return ctx.manifest().keys()
- def filedata(self, name):
+ def filedata(self, name, decode):
rev = self._state[1]
- return self._repo[rev][name].data()
+ data = self._repo[rev][name].data()
+ if decode:
+ data = self._repo.wwritedata(name, data)
+ return data
def fileflags(self, name):
rev = self._state[1]
@@ -1292,7 +1296,7 @@
paths.append(name.encode('utf-8'))
return paths
- def filedata(self, name):
+ def filedata(self, name, decode):
return self._svncommand(['cat'], name)[0]
@@ -1772,7 +1776,7 @@
else:
self.wvfs.unlink(f)
- def archive(self, archiver, prefix, match=None):
+ def archive(self, archiver, prefix, match=None, decode=True):
total = 0
source, revision = self._state
if not revision: