Mercurial > public > mercurial-scm > hg
comparison mercurial/commands.py @ 3578:3b4e00cba57a
Define and use nullrev (revision of nullid) instead of -1.
author | Thomas Arendsen Hein <thomas@intevation.de> |
---|---|
date | Sun, 29 Oct 2006 10:53:51 +0100 |
parents | 00427c4b533b |
children | 8ee579885d23 |
comparison
equal
deleted
inserted
replaced
3577:7f7425306925 | 3578:3b4e00cba57a |
---|---|
114 cl_count = repo.changelog.count() | 114 cl_count = repo.changelog.count() |
115 if node is None: | 115 if node is None: |
116 last = filelog.count() - 1 | 116 last = filelog.count() - 1 |
117 else: | 117 else: |
118 last = filelog.rev(node) | 118 last = filelog.rev(node) |
119 for i, window in increasing_windows(last, -1): | 119 for i, window in increasing_windows(last, nullrev): |
120 revs = [] | 120 revs = [] |
121 for j in xrange(i - window, i + 1): | 121 for j in xrange(i - window, i + 1): |
122 n = filelog.node(j) | 122 n = filelog.node(j) |
123 revs.append((filelog.linkrev(n), | 123 revs.append((filelog.linkrev(n), |
124 follow and filelog.renamed(n))) | 124 follow and filelog.renamed(n))) |
155 raise util.Abort(_('can only follow copies/renames for explicit ' | 155 raise util.Abort(_('can only follow copies/renames for explicit ' |
156 'file names')) | 156 'file names')) |
157 | 157 |
158 # The slow path checks files modified in every changeset. | 158 # The slow path checks files modified in every changeset. |
159 def changerevgen(): | 159 def changerevgen(): |
160 for i, window in increasing_windows(repo.changelog.count()-1, -1): | 160 for i, window in increasing_windows(repo.changelog.count()-1, |
161 nullrev): | |
161 for j in xrange(i - window, i + 1): | 162 for j in xrange(i - window, i + 1): |
162 yield j, change(j)[3] | 163 yield j, change(j)[3] |
163 | 164 |
164 for rev, changefiles in changerevgen(): | 165 for rev, changefiles in changerevgen(): |
165 matches = filter(matchfn, changefiles) | 166 matches = filter(matchfn, changefiles) |
167 fncache[rev] = matches | 168 fncache[rev] = matches |
168 wanted[rev] = 1 | 169 wanted[rev] = 1 |
169 | 170 |
170 class followfilter: | 171 class followfilter: |
171 def __init__(self, onlyfirst=False): | 172 def __init__(self, onlyfirst=False): |
172 self.startrev = -1 | 173 self.startrev = nullrev |
173 self.roots = [] | 174 self.roots = [] |
174 self.onlyfirst = onlyfirst | 175 self.onlyfirst = onlyfirst |
175 | 176 |
176 def match(self, rev): | 177 def match(self, rev): |
177 def realparents(rev): | 178 def realparents(rev): |
178 if self.onlyfirst: | 179 if self.onlyfirst: |
179 return repo.changelog.parentrevs(rev)[0:1] | 180 return repo.changelog.parentrevs(rev)[0:1] |
180 else: | 181 else: |
181 return filter(lambda x: x != -1, repo.changelog.parentrevs(rev)) | 182 return filter(lambda x: x != nullrev, |
182 | 183 repo.changelog.parentrevs(rev)) |
183 if self.startrev == -1: | 184 |
185 if self.startrev == nullrev: | |
184 self.startrev = rev | 186 self.startrev = rev |
185 return True | 187 return True |
186 | 188 |
187 if rev > self.startrev: | 189 if rev > self.startrev: |
188 # forward: all descendants | 190 # forward: all descendants |
320 | 322 |
321 hexfunc = self.ui.debugflag and hex or short | 323 hexfunc = self.ui.debugflag and hex or short |
322 | 324 |
323 parents = log.parentrevs(rev) | 325 parents = log.parentrevs(rev) |
324 if not self.ui.debugflag: | 326 if not self.ui.debugflag: |
325 parents = [p for p in parents if p != -1] | 327 parents = [p for p in parents if p != nullrev] |
326 if len(parents) == 1 and parents[0] == rev-1: | 328 if len(parents) == 1 and parents[0] == rev-1: |
327 parents = [] | 329 parents = [] |
328 parents = [(p, hexfunc(log.node(p))) for p in parents] | 330 parents = [(p, hexfunc(log.node(p))) for p in parents] |
329 | 331 |
330 | 332 |
1870 if lr >= endrev: | 1872 if lr >= endrev: |
1871 break | 1873 break |
1872 if rev in rcache[fn]: | 1874 if rev in rcache[fn]: |
1873 return rcache[fn][rev] | 1875 return rcache[fn][rev] |
1874 mr = repo.manifest.rev(man) | 1876 mr = repo.manifest.rev(man) |
1875 if repo.manifest.parentrevs(mr) != (mr - 1, -1): | 1877 if repo.manifest.parentrevs(mr) != (mr - 1, nullrev): |
1876 return ncache[fn].get(repo.manifest.find(man, fn)[0]) | 1878 return ncache[fn].get(repo.manifest.find(man, fn)[0]) |
1877 if not dcache or dcache[0] != man: | 1879 if not dcache or dcache[0] != man: |
1878 dcache[:] = [man, repo.manifest.readdelta(man)] | 1880 dcache[:] = [man, repo.manifest.readdelta(man)] |
1879 if fn in dcache[1]: | 1881 if fn in dcache[1]: |
1880 return ncache[fn].get(dcache[1][fn]) | 1882 return ncache[fn].get(dcache[1][fn]) |
1886 du = dui(ui) | 1888 du = dui(ui) |
1887 displayer.ui = du | 1889 displayer.ui = du |
1888 elif st == 'add': | 1890 elif st == 'add': |
1889 du.bump(rev) | 1891 du.bump(rev) |
1890 changenode = repo.changelog.node(rev) | 1892 changenode = repo.changelog.node(rev) |
1891 parents = [p for p in repo.changelog.parentrevs(rev) if p != -1] | 1893 parents = [p for p in repo.changelog.parentrevs(rev) |
1894 if p != nullrev] | |
1892 if opts['no_merges'] and len(parents) == 2: | 1895 if opts['no_merges'] and len(parents) == 2: |
1893 continue | 1896 continue |
1894 if opts['only_merges'] and len(parents) != 2: | 1897 if opts['only_merges'] and len(parents) != 2: |
1895 continue | 1898 continue |
1896 | 1899 |
1920 displayer.show(rev, changenode, brinfo=br, copies=copies) | 1923 displayer.show(rev, changenode, brinfo=br, copies=copies) |
1921 if opts['patch']: | 1924 if opts['patch']: |
1922 if parents: | 1925 if parents: |
1923 prev = parents[0] | 1926 prev = parents[0] |
1924 else: | 1927 else: |
1925 prev = -1 | 1928 prev = nullrev |
1926 prev = repo.changelog.node(prev) | 1929 prev = repo.changelog.node(prev) |
1927 patch.diff(repo, prev, changenode, match=matchfn, fp=du) | 1930 patch.diff(repo, prev, changenode, match=matchfn, fp=du) |
1928 du.write("\n\n") | 1931 du.write("\n\n") |
1929 elif st == 'iter': | 1932 elif st == 'iter': |
1930 if count == limit: break | 1933 if count == limit: break |