Mercurial > public > mercurial-scm > hg-stable
comparison mercurial/revlog.py @ 35639:30f5f33250c8
revlog: separate diff computation from the collection of other info
author | Paul Morelle <paul.morelle@octobus.net> |
---|---|
date | Sun, 14 Jan 2018 12:59:46 -0800 |
parents | edc9330acac1 |
children | fa4278171add |
comparison
equal
deleted
inserted
replaced
35638:edc9330acac1 | 35639:30f5f33250c8 |
---|---|
1933 # must pass the censored index flag to add censored revisions | 1933 # must pass the censored index flag to add censored revisions |
1934 if not flags & REVIDX_ISCENSORED: | 1934 if not flags & REVIDX_ISCENSORED: |
1935 raise | 1935 raise |
1936 return btext[0] | 1936 return btext[0] |
1937 | 1937 |
1938 def _builddeltadiff(self, base, node, p1, p2, btext, cachedelta, fh, flags): | |
1939 t = self._buildtext(node, p1, p2, btext, cachedelta, fh, flags) | |
1940 if self.iscensored(base): | |
1941 # deltas based on a censored revision must replace the | |
1942 # full content in one patch, so delta works everywhere | |
1943 header = mdiff.replacediffheader(self.rawsize(base), len(t)) | |
1944 delta = header + t | |
1945 else: | |
1946 ptext = self.revision(base, _df=fh, raw=True) | |
1947 delta = mdiff.textdiff(ptext, t) | |
1948 | |
1949 return delta | |
1950 | |
1938 def _builddeltainfo(self, node, rev, p1, p2, btext, cachedelta, fh, flags): | 1951 def _builddeltainfo(self, node, rev, p1, p2, btext, cachedelta, fh, flags): |
1939 # can we use the cached delta? | 1952 # can we use the cached delta? |
1940 if cachedelta and cachedelta[0] == rev: | 1953 if cachedelta and cachedelta[0] == rev: |
1941 delta = cachedelta[1] | 1954 delta = cachedelta[1] |
1942 else: | 1955 else: |
1943 t = self._buildtext(node, p1, p2, btext, cachedelta, fh, flags) | 1956 delta = self._builddeltadiff(rev, node, p1, p2, btext, cachedelta, |
1944 if self.iscensored(rev): | 1957 fh, flags) |
1945 # deltas based on a censored revision must replace the | |
1946 # full content in one patch, so delta works everywhere | |
1947 header = mdiff.replacediffheader(self.rawsize(rev), len(t)) | |
1948 delta = header + t | |
1949 else: | |
1950 ptext = self.revision(rev, _df=fh, raw=True) | |
1951 delta = mdiff.textdiff(ptext, t) | |
1952 header, data = self.compress(delta) | 1958 header, data = self.compress(delta) |
1953 deltalen = len(header) + len(data) | 1959 deltalen = len(header) + len(data) |
1954 chainbase = self.chainbase(rev) | 1960 chainbase = self.chainbase(rev) |
1955 offset = self.end(len(self) - 1) | 1961 offset = self.end(len(self) - 1) |
1956 dist = deltalen + offset - self.start(chainbase) | 1962 dist = deltalen + offset - self.start(chainbase) |