Mercurial > public > mercurial-scm > hg-stable
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) |