mirror of
https://github.com/facebook/sapling.git
synced 2024-10-09 00:14:35 +03:00
remotefilelog: do not delta lfs revisions
Summary: This is similar to the previous patch, but applies to remotefilelog. Reviewed By: DurhamG Differential Revision: D6906212 fbshipit-source-id: 30383632046f57b169dcb8a2ba1c0dd73113154a
This commit is contained in:
parent
07042a2157
commit
1be09a10bc
@ -169,6 +169,13 @@ class remotefilelog(object):
|
||||
|
||||
rawsize = size
|
||||
|
||||
def candelta(self, basenode, node):
|
||||
# Do not use delta if either node is LFS. Avoids issues if clients have
|
||||
# the delta base stored in different forms: one LFS, one non-LFS.
|
||||
if self.flags(basenode) or self.flags(node):
|
||||
return False
|
||||
return True
|
||||
|
||||
def cmp(self, node, text):
|
||||
"""compare text with a given file revision
|
||||
|
||||
@ -201,6 +208,8 @@ class remotefilelog(object):
|
||||
if isinstance(node, int):
|
||||
raise error.ProgrammingError(
|
||||
'remotefilelog does not accept integer rev for flags')
|
||||
if node == nullid:
|
||||
return revlog.REVIDX_DEFAULT_FLAGS
|
||||
store = self.repo.contentstore
|
||||
return store.getmeta(self.filename, node).get(constants.METAKEYFLAG, 0)
|
||||
|
||||
|
@ -224,15 +224,19 @@ class shallowcg1packer(changegroup.cg1packer):
|
||||
|
||||
def nodechunk(self, revlog, node, prevnode, linknode):
|
||||
prefix = ''
|
||||
if prevnode == nullid:
|
||||
if prevnode is not nullid and not revlog.candelta(prevnode, node):
|
||||
basenode = nullid
|
||||
else:
|
||||
basenode = prevnode
|
||||
if basenode == nullid:
|
||||
delta = revlog.revision(node, raw=True)
|
||||
prefix = mdiff.trivialdiffheader(len(delta))
|
||||
else:
|
||||
# Actually uses remotefilelog.revdiff which works on nodes, not revs
|
||||
delta = revlog.revdiff(prevnode, node)
|
||||
delta = revlog.revdiff(basenode, node)
|
||||
p1, p2 = revlog.parents(node)
|
||||
flags = revlog.flags(node)
|
||||
meta = self.builddeltaheader(node, p1, p2, prevnode, linknode, flags)
|
||||
meta = self.builddeltaheader(node, p1, p2, basenode, linknode, flags)
|
||||
meta += prefix
|
||||
l = len(meta) + len(delta)
|
||||
yield changegroup.chunkheader(l)
|
||||
|
Loading…
Reference in New Issue
Block a user