diff --git a/edenscm/hgext/remotefilelog/basepack.py b/edenscm/hgext/remotefilelog/basepack.py index c9b8218250..968b75c43d 100644 --- a/edenscm/hgext/remotefilelog/basepack.py +++ b/edenscm/hgext/remotefilelog/basepack.py @@ -524,6 +524,7 @@ class mutablebasepack(versionmixin): self._ui = ui self._packdir = packdir + self._datalen = 0 self.entries = {} @@ -573,7 +574,10 @@ class mutablebasepack(versionmixin): self._cleantemppacks() def writeraw(self, data): + self.packfp.seek(self._datalen, os.SEEK_SET) + assert self.packfp.tell() == self._datalen self.packfp.write(data) + self._datalen += len(data) self.sha.update(data) def close(self): diff --git a/edenscm/hgext/remotefilelog/datapack.py b/edenscm/hgext/remotefilelog/datapack.py index e230379357..9a8cfe7ed7 100644 --- a/edenscm/hgext/remotefilelog/datapack.py +++ b/edenscm/hgext/remotefilelog/datapack.py @@ -542,7 +542,7 @@ class mutabledatapack(basepack.mutablebasepack): if metadata and metadata.get(constants.METAKEYFLAG, 0) != 0: raise error.ProgrammingError("v0 pack cannot store flags") - offset = self.packfp.tell() + offset = self._datalen size = len(rawdata) diff --git a/edenscm/hgext/remotefilelog/historypack.py b/edenscm/hgext/remotefilelog/historypack.py index e877c13698..89084d463b 100644 --- a/edenscm/hgext/remotefilelog/historypack.py +++ b/edenscm/hgext/remotefilelog/historypack.py @@ -463,7 +463,7 @@ class mutablehistorypack(basepack.mutablebasepack): def _write(self): for filename in sorted(self.fileentries): entrymap = self.fileentries[filename] - sectionstart = self.packfp.tell() + sectionstart = self._datalen # Write the file section content def parentfunc(node):