changeset 621:0a514e303a06

overlay: add kludge to make sure we only ever give hexshas to dulwich
author Augie Fackler <raf@durin42.com>
date Fri, 13 Dec 2013 12:54:39 -0500
parents f6cd1f0e0e85
children 09028a1e9895
files hggit/overlay.py
diffstat 1 files changed, 8 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/hggit/overlay.py
+++ b/hggit/overlay.py
@@ -10,6 +10,11 @@
 from mercurial.node import bin, hex, nullid
 from mercurial import localrepo
 
+def _maybehex(n):
+    if len(n) == 20:
+        return hex(n)
+    return n
+
 class overlaymanifest(object):
     def __init__(self, repo, sha):
         self.repo = repo
@@ -103,7 +108,7 @@
         return self.fileid
 
     def data(self):
-        blob = self.repo.handler.git.get_object(self.fileid)
+        blob = self.repo.handler.git.get_object(_maybehex(self.fileid))
         return blob.data
 
 class overlaychangectx(context.changectx):
@@ -111,7 +116,7 @@
         self.repo = repo
         if not isinstance(sha, basestring):
           sha = sha.hex()
-        self.commit = repo.handler.git.get_object(sha)
+        self.commit = repo.handler.git.get_object(_maybehex(sha))
         self._overlay = getattr(repo, 'gitoverlay', repo)
         self._rev = self._overlay.rev(bin(self.commit.id))
 
@@ -185,7 +190,7 @@
         if not gitrev:
             # we've reached a revision we have
             return self.base.parents(n)
-        commit = self.repo.handler.git.get_object(n)
+        commit = self.repo.handler.git.get_object(_maybehex(n))
 
         def gitorhg(n):
             hn = self.repo.handler.map_hg_get(hex(n))