comparison mercurial/revlog.py @ 35635:0b52c0ecbc23

revlog: choose between ifh and dfh once for all
author Paul Morelle <paul.morelle@octobus.net>
date Sun, 14 Jan 2018 12:49:24 -0800
parents b43578ec483a
children 8108bb51309d
comparison
equal deleted inserted replaced
35634:b43578ec483a 35635:0b52c0ecbc23
1899 (self.indexfile)) 1899 (self.indexfile))
1900 if node == wdirid: 1900 if node == wdirid:
1901 raise RevlogError(_("%s: attempt to add wdir revision") % 1901 raise RevlogError(_("%s: attempt to add wdir revision") %
1902 (self.indexfile)) 1902 (self.indexfile))
1903 1903
1904 if self._inline:
1905 fh = ifh
1906 else:
1907 fh = dfh
1908
1904 btext = [rawtext] 1909 btext = [rawtext]
1905 def buildtext(): 1910 def buildtext():
1906 if btext[0] is not None: 1911 if btext[0] is not None:
1907 return btext[0] 1912 return btext[0]
1908 baserev = cachedelta[0] 1913 baserev = cachedelta[0]
1913 hlen = struct.calcsize(">lll") 1918 hlen = struct.calcsize(">lll")
1914 if delta[:hlen] == mdiff.replacediffheader(self.rawsize(baserev), 1919 if delta[:hlen] == mdiff.replacediffheader(self.rawsize(baserev),
1915 len(delta) - hlen): 1920 len(delta) - hlen):
1916 btext[0] = delta[hlen:] 1921 btext[0] = delta[hlen:]
1917 else: 1922 else:
1918 if self._inline:
1919 fh = ifh
1920 else:
1921 fh = dfh
1922 basetext = self.revision(baserev, _df=fh, raw=True) 1923 basetext = self.revision(baserev, _df=fh, raw=True)
1923 btext[0] = mdiff.patch(basetext, delta) 1924 btext[0] = mdiff.patch(basetext, delta)
1924 1925
1925 try: 1926 try:
1926 res = self._processflags(btext[0], flags, 'read', raw=True) 1927 res = self._processflags(btext[0], flags, 'read', raw=True)
1945 # deltas based on a censored revision must replace the 1946 # deltas based on a censored revision must replace the
1946 # full content in one patch, so delta works everywhere 1947 # full content in one patch, so delta works everywhere
1947 header = mdiff.replacediffheader(self.rawsize(rev), len(t)) 1948 header = mdiff.replacediffheader(self.rawsize(rev), len(t))
1948 delta = header + t 1949 delta = header + t
1949 else: 1950 else:
1950 if self._inline:
1951 fh = ifh
1952 else:
1953 fh = dfh
1954 ptext = self.revision(rev, _df=fh, raw=True) 1951 ptext = self.revision(rev, _df=fh, raw=True)
1955 delta = mdiff.textdiff(ptext, t) 1952 delta = mdiff.textdiff(ptext, t)
1956 header, data = self.compress(delta) 1953 header, data = self.compress(delta)
1957 deltalen = len(header) + len(data) 1954 deltalen = len(header) + len(data)
1958 chainbase = self.chainbase(rev) 1955 chainbase = self.chainbase(rev)