##// END OF EJS Templates
merge with crew
Matt Mackall -
r14274:01472f8f merge default
parent child Browse files
Show More
@@ -7,10 +7,10 b''
7 7
8 8 from node import hex, nullid, nullrev, short
9 9 from i18n import _
10 import os, sys, errno, re, glob, tempfile
10 import os, sys, errno, re, tempfile
11 11 import util, scmutil, templater, patch, error, templatekw, wdutil
12 12 import match as matchmod
13 import similar, revset, subrepo
13 import revset, subrepo
14 14
15 15 expandpats = wdutil.expandpats
16 16 match = wdutil.match
@@ -21,7 +21,7 b' propertycache = util.propertycache'
21 21 class localrepository(repo.repository):
22 22 capabilities = set(('lookup', 'changegroupsubset', 'branchmap', 'pushkey',
23 23 'known', 'getbundle'))
24 supportedformats = set(('revlogv1',))
24 supportedformats = set(('revlogv1', 'generaldelta'))
25 25 supported = supportedformats | set(('store', 'fncache', 'shared',
26 26 'dotencode'))
27 27
@@ -61,6 +61,8 b' class localrepository(repo.repository):'
61 61 '\0\0\0\2' # represents revlogv2
62 62 ' dummy changelog to prevent using the old repo layout'
63 63 )
64 if self.ui.configbool('format', 'generaldelta', False):
65 requirements.append("generaldelta")
64 66 else:
65 67 raise error.RepoError(_("repository %s not found") % path)
66 68 elif create:
@@ -115,6 +117,8 b' class localrepository(repo.repository):'
115 117 def _applyrequirements(self, requirements):
116 118 self.requirements = requirements
117 119 self.sopener.options = {}
120 if 'generaldelta' in requirements:
121 self.sopener.options['generaldelta'] = 1
118 122
119 123 def _writerequirements(self):
120 124 reqfile = self.opener("requires", "w")
@@ -700,7 +704,7 b' class localrepository(repo.repository):'
700 704 if os.path.exists(bkname):
701 705 util.copyfile(bkname, self.join('journal.bookmarks'))
702 706 else:
703 self.opener('journal.bookmarks', 'w').write('')
707 self.opener.write('journal.bookmarks', '')
704 708
705 709 return (self.sjoin('journal'), self.join('journal.dirstate'),
706 710 self.join('journal.branch'), self.join('journal.desc'),
@@ -226,10 +226,13 b' class revlog(object):'
226 226 self._nodepos = None
227 227
228 228 v = REVLOG_DEFAULT_VERSION
229 if hasattr(opener, 'options') and 'defversion' in opener.options:
230 v = opener.options['defversion']
231 if v & REVLOGNG:
232 v |= REVLOGNGINLINEDATA
229 if hasattr(opener, 'options'):
230 if 'defversion' in opener.options:
231 v = opener.options['defversion']
232 if v & REVLOGNG:
233 v |= REVLOGNGINLINEDATA
234 if v & REVLOGNG and 'generaldelta' in opener.options:
235 v |= REVLOGGENERALDELTA
233 236
234 237 i = ''
235 238 try:
@@ -1003,10 +1006,14 b' class revlog(object):'
1003 1006 l = len(data[1]) + len(data[0])
1004 1007 basecache = self._basecache
1005 1008 if basecache and basecache[0] == rev:
1006 base = basecache[1]
1009 chainbase = basecache[1]
1007 1010 else:
1008 base = self.chainbase(rev)
1009 dist = l + offset - self.start(base)
1011 chainbase = self.chainbase(rev)
1012 dist = l + offset - self.start(chainbase)
1013 if self._generaldelta:
1014 base = rev
1015 else:
1016 base = chainbase
1010 1017 return dist, l, data, base
1011 1018
1012 1019 curr = len(self)
@@ -1019,7 +1026,10 b' class revlog(object):'
1019 1026
1020 1027 # should we try to build a delta?
1021 1028 if prev != nullrev:
1022 d = builddelta(prev)
1029 if self._generaldelta:
1030 d = builddelta(p1r)
1031 else:
1032 d = builddelta(prev)
1023 1033 dist, l, data, base = d
1024 1034
1025 1035 # full versions are inserted when the needed deltas
General Comments 0
You need to be logged in to leave comments. Login now