Mercurial > public > mercurial-scm > hg-stable
diff mercurial/bundlerepo.py @ 27753:d4071cc73f46
changegroup3: add empty chunk separating directories and files
Remotefilelog overrides changegroup._addchangegroupfiles(), assuming
it is about files, which seems like a natural assumption. However, in
changegroup3, directory manifests are sent in the files section of the
changegroup. These naturally make remotefilelog unhappy.
The fact that the directories are not separated from the files
(although they do come before the files) also makes server.validate
harder to implement. Since we read one chunk at a time from the steam,
once we have found a file (non-directory) entry in the stream, we
would have to push the read data back into the stream, or otherwise
refactor the code. It will be easier if we add an empty chunk after
all directory manifests.
This change adds that empty chunk, although we don't yet take
advantage of it on the reading side. We will soon move the tree
manifest stuff out of _addchangegroupfiles() and into
_unpackmanifests().
author | Martin von Zweigbergk <martinvonz@google.com> |
---|---|
date | Mon, 11 Jan 2016 15:10:31 -0800 |
parents | a40e2f7fe49d |
children | 6fe2da48a6dd |
line wrap: on
line diff
--- a/mercurial/bundlerepo.py Tue Jan 12 21:23:45 2016 -0800 +++ b/mercurial/bundlerepo.py Mon Jan 11 15:10:31 2016 -0800 @@ -329,6 +329,10 @@ # consume the header if it exists self.bundle.manifestheader() m = bundlemanifest(self.svfs, self.bundle, self.changelog.rev) + # XXX: hack to work with changegroup3, but we still don't handle + # tree manifests correctly + if self.bundle.version == "03": + self.bundle.filelogheader() self.filestart = self.bundle.tell() return m