##// END OF EJS Templates
revlog: report node and file when lookup fails
Matt Mackall -
r6228:c0c4c7b1 default
parent child Browse files
Show More
@@ -79,7 +79,8 b' class Imerge(object):'
79 try:
79 try:
80 parents = [self.repo.changectx(n) for n in status[:2]]
80 parents = [self.repo.changectx(n) for n in status[:2]]
81 except revlog.LookupError, e:
81 except revlog.LookupError, e:
82 raise util.Abort('merge parent %s not in repository' % e.name)
82 raise util.Abort(_('merge parent %s not in repository') %
83 short(e.name))
83
84
84 status = status[2:]
85 status = status[2:]
85 conflicts = int(status.pop(0)) * 3
86 conflicts = int(status.pop(0)) * 3
@@ -48,7 +48,8 b' class bundlerevlog(revlog.revlog):'
48 continue
48 continue
49 for p in (p1, p2):
49 for p in (p1, p2):
50 if not p in self.nodemap:
50 if not p in self.nodemap:
51 raise revlog.LookupError(hex(p1), _("unknown parent %s") % short(p1))
51 raise revlog.LookupError(p1, self.indexfile,
52 _("unknown parent"))
52 if linkmapper is None:
53 if linkmapper is None:
53 link = n
54 link = n
54 else:
55 else:
@@ -100,13 +100,15 b' class changectx(object):'
100 try:
100 try:
101 return self._manifest[path], self._manifest.flags(path)
101 return self._manifest[path], self._manifest.flags(path)
102 except KeyError:
102 except KeyError:
103 raise revlog.LookupError(path, _("'%s' not found in manifest") % path)
103 raise revlog.LookupError(self._node, path,
104 _('not found in manifest'))
104 if '_manifestdelta' in self.__dict__ or path in self.files():
105 if '_manifestdelta' in self.__dict__ or path in self.files():
105 if path in self._manifestdelta:
106 if path in self._manifestdelta:
106 return self._manifestdelta[path], self._manifestdelta.flags(path)
107 return self._manifestdelta[path], self._manifestdelta.flags(path)
107 node, flag = self._repo.manifest.find(self._changeset[0], path)
108 node, flag = self._repo.manifest.find(self._changeset[0], path)
108 if not node:
109 if not node:
109 raise revlog.LookupError(path, _("'%s' not found in manifest") % path)
110 raise revlog.LookupError(self._node, path,
111 _('not found in manifest'))
110
112
111 return node, flag
113 return node, flag
112
114
@@ -33,11 +33,11 b' class RevlogError(Exception):'
33 pass
33 pass
34
34
35 class LookupError(RevlogError):
35 class LookupError(RevlogError):
36 def __init__(self, name, message=None):
36 def __init__(self, name, index, message):
37 if message is None:
38 message = _('not found: %s') % name
39 RevlogError.__init__(self, message)
40 self.name = name
37 self.name = name
38 if isinstance(name, str) and len(name) == 20:
39 name = short(name)
40 RevlogError.__init__(self, _('%s@%s: %s') % (index, name, message))
41
41
42 def getoffset(q):
42 def getoffset(q):
43 return int(q >> 16)
43 return int(q >> 16)
@@ -519,7 +519,7 b' class revlog(object):'
519 try:
519 try:
520 return self.nodemap[node]
520 return self.nodemap[node]
521 except KeyError:
521 except KeyError:
522 raise LookupError(hex(node), _('%s: no node %s') % (self.indexfile, hex(node)))
522 raise LookupError(node, self.indexfile, _('no node'))
523 def node(self, rev):
523 def node(self, rev):
524 return self.index[rev][7]
524 return self.index[rev][7]
525 def linkrev(self, node):
525 def linkrev(self, node):
@@ -839,8 +839,8 b' class revlog(object):'
839 for n in self.nodemap:
839 for n in self.nodemap:
840 if n.startswith(bin_id) and hex(n).startswith(id):
840 if n.startswith(bin_id) and hex(n).startswith(id):
841 if node is not None:
841 if node is not None:
842 raise LookupError(hex(node),
842 raise LookupError(id, self.indexfile,
843 _("Ambiguous identifier"))
843 _('ambiguous identifier'))
844 node = n
844 node = n
845 if node is not None:
845 if node is not None:
846 return node
846 return node
@@ -859,7 +859,7 b' class revlog(object):'
859 if n:
859 if n:
860 return n
860 return n
861
861
862 raise LookupError(id, _("No match found"))
862 raise LookupError(id, self.indexfile, _('no match found'))
863
863
864 def cmp(self, node, text):
864 def cmp(self, node, text):
865 """compare text with a given file revision"""
865 """compare text with a given file revision"""
@@ -1170,13 +1170,13 b' class revlog(object):'
1170
1170
1171 for p in (p1, p2):
1171 for p in (p1, p2):
1172 if not p in self.nodemap:
1172 if not p in self.nodemap:
1173 raise LookupError(hex(p), _("unknown parent %s") % short(p))
1173 raise LookupError(p, self.indexfile, _('unknown parent'))
1174
1174
1175 if not chain:
1175 if not chain:
1176 # retrieve the parent revision of the delta chain
1176 # retrieve the parent revision of the delta chain
1177 chain = p1
1177 chain = p1
1178 if not chain in self.nodemap:
1178 if not chain in self.nodemap:
1179 raise LookupError(hex(chain), _("unknown base %s") % short(chain[:4]))
1179 raise LookupError(chain, self.indexfile, _('unknown base'))
1180
1180
1181 # full versions are inserted when the needed deltas become
1181 # full versions are inserted when the needed deltas become
1182 # comparable to the uncompressed text or when the previous
1182 # comparable to the uncompressed text or when the previous
@@ -168,7 +168,7 b' 2:d62976ca1e50'
168 adding changesets
168 adding changesets
169 transaction abort!
169 transaction abort!
170 rollback completed
170 rollback completed
171 abort: unknown parent ac69c658229d!
171 abort: 00changelog.i@ac69c658229d: unknown parent!
172 % 2
172 % 2
173 2:d62976ca1e50
173 2:d62976ca1e50
174 adding changesets
174 adding changesets
@@ -18,5 +18,5 b' diff -r acd8075edac9 b'
18 +++ b/b
18 +++ b/b
19 @@ -0,0 +1,1 @@
19 @@ -0,0 +1,1 @@
20 +123
20 +123
21 abort: Ambiguous identifier!
21 abort: 00changelog.i@: ambiguous identifier!
22 abort: Ambiguous identifier!
22 abort: 00changelog.i@: ambiguous identifier!
@@ -47,4 +47,4 b' 2 files updated, 0 files merged, 1 files'
47 % nothing to merge
47 % nothing to merge
48 abort: there is nothing to merge - use "hg update" instead
48 abort: there is nothing to merge - use "hg update" instead
49 % load unknown parent
49 % load unknown parent
50 abort: merge parent e6da4671640124fe5d3d70d2f54441d6cd76ae35 not in repository
50 abort: merge parent e6da46716401 not in repository
@@ -220,4 +220,4 b' date: Thu Jan 01 00:00:01 1970 +0'
220 summary: b1
220 summary: b1
221
221
222 % log -r ""
222 % log -r ""
223 abort: Ambiguous identifier!
223 abort: 00changelog.i@: ambiguous identifier!
General Comments 0
You need to be logged in to leave comments. Login now