##// END OF EJS Templates
linkrev: take a revision number rather than a hash
Matt Mackall -
r7361:9fe97eea default
parent child Browse files
Show More
@@ -17,7 +17,7 b' for f in sys.argv[1:]:'
17 p = r.parents(n)
17 p = r.parents(n)
18 d = r.revision(n)
18 d = r.revision(n)
19 print "node:", node.hex(n)
19 print "node:", node.hex(n)
20 print "linkrev:", r.linkrev(n)
20 print "linkrev:", r.linkrev(i)
21 print "parents:", node.hex(p[0]), node.hex(p[1])
21 print "parents:", node.hex(p[0]), node.hex(p[1])
22 print "length:", len(d)
22 print "length:", len(d)
23 print "-start-"
23 print "-start-"
@@ -1017,7 +1017,7 b' def walkchangerevs(ui, repo, pats, chang'
1017 revs = []
1017 revs = []
1018 for j in xrange(i - window, i + 1):
1018 for j in xrange(i - window, i + 1):
1019 n = filelog.node(j)
1019 n = filelog.node(j)
1020 revs.append((filelog.linkrev(n),
1020 revs.append((filelog.linkrev(j),
1021 follow and filelog.renamed(n)))
1021 follow and filelog.renamed(n)))
1022 revs.reverse()
1022 revs.reverse()
1023 for rev in revs:
1023 for rev in revs:
@@ -829,7 +829,7 b' def debugindex(ui, file_):'
829 except:
829 except:
830 pp = [nullid, nullid]
830 pp = [nullid, nullid]
831 ui.write("% 6d % 9d % 7d % 6d % 7d %s %s %s\n" % (
831 ui.write("% 6d % 9d % 7d % 6d % 7d %s %s %s\n" % (
832 i, r.start(i), r.length(i), r.base(i), r.linkrev(node),
832 i, r.start(i), r.length(i), r.base(i), r.linkrev(i),
833 short(node), short(pp[0]), short(pp[1])))
833 short(node), short(pp[0]), short(pp[1])))
834
834
835 def debugindexdot(ui, file_):
835 def debugindexdot(ui, file_):
@@ -1833,7 +1833,7 b' def log(ui, repo, *pats, **opts):'
1833 fl = repo.file(fn)
1833 fl = repo.file(fn)
1834 for i in fl:
1834 for i in fl:
1835 node = fl.node(i)
1835 node = fl.node(i)
1836 lr = fl.linkrev(node)
1836 lr = fl.linkrev(i)
1837 renamed = fl.renamed(node)
1837 renamed = fl.renamed(node)
1838 rcache[fn][lr] = renamed
1838 rcache[fn][lr] = renamed
1839 if renamed:
1839 if renamed:
@@ -2053,7 +2053,7 b' def parents(ui, repo, file_=None, **opts'
2053 if not filenodes:
2053 if not filenodes:
2054 raise util.Abort(_("'%s' not found in manifest!") % file_)
2054 raise util.Abort(_("'%s' not found in manifest!") % file_)
2055 fl = repo.file(file_)
2055 fl = repo.file(file_)
2056 p = [repo.lookup(fl.linkrev(fn)) for fn in filenodes]
2056 p = [repo.lookup(fl.linkrev(fl.rev(fn))) for fn in filenodes]
2057 else:
2057 else:
2058 p = [cp.node() for cp in ctx.parents()]
2058 p = [cp.node() for cp in ctx.parents()]
2059
2059
@@ -200,7 +200,7 b' class filectx(object):'
200 if '_changectx' in self.__dict__:
200 if '_changectx' in self.__dict__:
201 self._changeid = self._changectx.rev()
201 self._changeid = self._changectx.rev()
202 else:
202 else:
203 self._changeid = self._filelog.linkrev(self._filenode)
203 self._changeid = self._filelog.linkrev(self._filerev)
204 return self._changeid
204 return self._changeid
205 elif name == '_filenode':
205 elif name == '_filenode':
206 if '_fileid' in self.__dict__:
206 if '_fileid' in self.__dict__:
@@ -263,9 +263,9 b' class filectx(object):'
263 return self._changectx.rev()
263 return self._changectx.rev()
264 if '_changeid' in self.__dict__:
264 if '_changeid' in self.__dict__:
265 return self._changectx.rev()
265 return self._changectx.rev()
266 return self._filelog.linkrev(self._filenode)
266 return self._filelog.linkrev(self._filerev)
267
267
268 def linkrev(self): return self._filelog.linkrev(self._filenode)
268 def linkrev(self): return self._filelog.linkrev(self._filerev)
269 def node(self): return self._changectx.node()
269 def node(self): return self._changectx.node()
270 def user(self): return self._changectx.user()
270 def user(self): return self._changectx.user()
271 def date(self): return self._changectx.date()
271 def date(self): return self._changectx.date()
@@ -647,7 +647,7 b' class workingfilectx(filectx):'
647 def rev(self):
647 def rev(self):
648 if '_changectx' in self.__dict__:
648 if '_changectx' in self.__dict__:
649 return self._changectx.rev()
649 return self._changectx.rev()
650 return self._filelog.linkrev(self._filenode)
650 return self._filelog.linkrev(self._filerev)
651
651
652 def data(self): return self._repo.wread(self._path)
652 def data(self): return self._repo.wread(self._path)
653 def renamed(self):
653 def renamed(self):
@@ -526,13 +526,13 b' def filelog(web, req, tmpl):'
526 if not numrevs: # file doesn't exist at all
526 if not numrevs: # file doesn't exist at all
527 raise
527 raise
528 rev = webutil.changectx(web.repo, req).rev()
528 rev = webutil.changectx(web.repo, req).rev()
529 first = fl.linkrev(fl.node(0))
529 first = fl.linkrev(0)
530 if rev < first: # current rev is from before file existed
530 if rev < first: # current rev is from before file existed
531 raise
531 raise
532 frev = numrevs - 1
532 frev = numrevs - 1
533 while fl.linkrev(fl.node(frev)) > rev:
533 while fl.linkrev(frev) > rev:
534 frev -= 1
534 frev -= 1
535 fctx = web.repo.filectx(f, fl.linkrev(fl.node(frev)))
535 fctx = web.repo.filectx(f, fl.linkrev(frev))
536
536
537 count = fctx.filerev() + 1
537 count = fctx.filerev() + 1
538 pagelen = web.maxshortchanges
538 pagelen = web.maxshortchanges
@@ -126,7 +126,7 b' def changectx(repo, req):'
126 ctx = repo[changeid]
126 ctx = repo[changeid]
127 except RepoError:
127 except RepoError:
128 man = repo.manifest
128 man = repo.manifest
129 ctx = repo[man.linkrev(man.lookup(changeid))]
129 ctx = repo[man.linkrev(man.rev(man.lookup(changeid)))]
130
130
131 return ctx
131 return ctx
132
132
@@ -1703,7 +1703,7 b' class localrepository(repo.repository):'
1703 # If a 'missing' manifest thinks it belongs to a changenode
1703 # If a 'missing' manifest thinks it belongs to a changenode
1704 # the recipient is assumed to have, obviously the recipient
1704 # the recipient is assumed to have, obviously the recipient
1705 # must have that manifest.
1705 # must have that manifest.
1706 linknode = cl.node(mnfst.linkrev(n))
1706 linknode = cl.node(mnfst.linkrev(mnfst.rev(n)))
1707 if linknode in has_cl_set:
1707 if linknode in has_cl_set:
1708 has_mnfst_set[n] = 1
1708 has_mnfst_set[n] = 1
1709 prune_parents(mnfst, has_mnfst_set, msng_mnfst_set)
1709 prune_parents(mnfst, has_mnfst_set, msng_mnfst_set)
@@ -1769,7 +1769,7 b' class localrepository(repo.repository):'
1769 # assume the recipient must have, then the recipient must have
1769 # assume the recipient must have, then the recipient must have
1770 # that filenode.
1770 # that filenode.
1771 for n in msngset:
1771 for n in msngset:
1772 clnode = cl.node(filerevlog.linkrev(n))
1772 clnode = cl.node(filerevlog.linkrev(filerevlog.rev(n)))
1773 if clnode in has_cl_set:
1773 if clnode in has_cl_set:
1774 hasset[n] = 1
1774 hasset[n] = 1
1775 prune_parents(filerevlog, hasset, msngset)
1775 prune_parents(filerevlog, hasset, msngset)
@@ -1892,9 +1892,8 b' class localrepository(repo.repository):'
1892
1892
1893 def gennodelst(log):
1893 def gennodelst(log):
1894 for r in log:
1894 for r in log:
1895 n = log.node(r)
1895 if log.linkrev(r) in revset:
1896 if log.linkrev(n) in revset:
1896 yield log.node(r)
1897 yield n
1898
1897
1899 def changed_file_collector(changedfileset):
1898 def changed_file_collector(changedfileset):
1900 def collect_changed_files(clnode):
1899 def collect_changed_files(clnode):
@@ -1905,7 +1904,7 b' class localrepository(repo.repository):'
1905
1904
1906 def lookuprevlink_func(revlog):
1905 def lookuprevlink_func(revlog):
1907 def lookuprevlink(n):
1906 def lookuprevlink(n):
1908 return cl.node(revlog.linkrev(n))
1907 return cl.node(revlog.linkrev(revlog.rev(n)))
1909 return lookuprevlink
1908 return lookuprevlink
1910
1909
1911 def gengroup():
1910 def gengroup():
@@ -41,8 +41,7 b' def _collectextranodes(repo, files, link'
41 startrev = count = len(revlog)
41 startrev = count = len(revlog)
42 # find the truncation point of the revlog
42 # find the truncation point of the revlog
43 for i in xrange(0, count):
43 for i in xrange(0, count):
44 node = revlog.node(i)
44 lrev = revlog.linkrev(i)
45 lrev = revlog.linkrev(node)
46 if lrev >= link:
45 if lrev >= link:
47 startrev = i + 1
46 startrev = i + 1
48 break
47 break
@@ -51,7 +50,7 b' def _collectextranodes(repo, files, link'
51 # (we have to manually save these guys)
50 # (we have to manually save these guys)
52 for i in xrange(startrev, count):
51 for i in xrange(startrev, count):
53 node = revlog.node(i)
52 node = revlog.node(i)
54 lrev = revlog.linkrev(node)
53 lrev = revlog.linkrev(i)
55 if lrev < link:
54 if lrev < link:
56 extra.append((node, cl.node(lrev)))
55 extra.append((node, cl.node(lrev)))
57
56
@@ -500,8 +500,8 b' class revlog(object):'
500 raise LookupError(node, self.indexfile, _('no node'))
500 raise LookupError(node, self.indexfile, _('no node'))
501 def node(self, rev):
501 def node(self, rev):
502 return self.index[rev][7]
502 return self.index[rev][7]
503 def linkrev(self, node):
503 def linkrev(self, rev):
504 return self.index[self.rev(node)][4]
504 return self.index[rev][4]
505 def parents(self, node):
505 def parents(self, node):
506 d = self.index[self.rev(node)][5:7]
506 d = self.index[self.rev(node)][5:7]
507 return (self.node(d[0]), self.node(d[1]))
507 return (self.node(d[0]), self.node(d[1]))
@@ -70,7 +70,7 b' def _verify(repo):'
70 warn(_("warning: `%s' uses revlog format 0") % name)
70 warn(_("warning: `%s' uses revlog format 0") % name)
71
71
72 def checkentry(obj, i, node, seen, linkrevs, f):
72 def checkentry(obj, i, node, seen, linkrevs, f):
73 lr = obj.linkrev(node)
73 lr = obj.linkrev(obj.rev(node))
74 if lr < 0 or (havecl and lr not in linkrevs):
74 if lr < 0 or (havecl and lr not in linkrevs):
75 t = "unexpected"
75 t = "unexpected"
76 if lr < 0 or lr >= len(cl):
76 if lr < 0 or lr >= len(cl):
@@ -135,7 +135,7 b' def _verify(repo):'
135 elif f != "/dev/null":
135 elif f != "/dev/null":
136 fns = filenodes.setdefault(f, {})
136 fns = filenodes.setdefault(f, {})
137 if fn not in fns:
137 if fn not in fns:
138 fns[fn] = n
138 fns[fn] = i
139 except Exception, inst:
139 except Exception, inst:
140 exc(lr, _("reading manifest delta %s") % short(n), inst)
140 exc(lr, _("reading manifest delta %s") % short(n), inst)
141
141
@@ -155,7 +155,8 b' def _verify(repo):'
155 for f in util.sort(filenodes):
155 for f in util.sort(filenodes):
156 if f not in filelinkrevs:
156 if f not in filelinkrevs:
157 try:
157 try:
158 lr = min([repo.file(f).linkrev(n) for n in filenodes[f]])
158 fl = repo.file(f)
159 lr = min([fl.linkrev(fl.rev(n)) for n in filenodes[f]])
159 except:
160 except:
160 lr = None
161 lr = None
161 err(lr, _("in manifest but not in changeset"), f)
162 err(lr, _("in manifest but not in changeset"), f)
General Comments 0
You need to be logged in to leave comments. Login now