changeset 418:10027b50202b

In some situations where a reference is being used but does not exist in _map_git or _map_hg, silently skip the reference rather than throwing an error. This allows hg outgoing to work on repositories which do not contain any revisions at all.
author mcc <andrew.mcclure@gmail.com>
date Wed, 13 Jul 2011 22:15:04 -0700
parents 6a23158a4da4
children 31c6154bd88d
files hggit/git_handler.py
diffstat 1 files changed, 8 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/hggit/git_handler.py	Wed Jul 13 08:06:52 2011 -0500
+++ b/hggit/git_handler.py	Wed Jul 13 22:15:04 2011 -0700
@@ -200,8 +200,11 @@
             changed_refs = [ref for ref, sha in new_refs.iteritems()
                             if sha != old_refs.get(ref)]
             new = [bin(self.map_hg_get(new_refs[ref])) for ref in changed_refs]
-            old = dict( (bin(self.map_hg_get(old_refs[r])), 1)
-                       for r in old_refs)
+            old = {}
+            for r in old_refs:
+                old_ref = self.map_hg_get(old_refs[r])
+                if old_ref:
+                    old[bin(old_ref)] = 1
 
             return old, new
         except (HangupException, GitProtocolError), e:
@@ -809,7 +812,9 @@
         # Create a local Git branch name for each
         # Mercurial bookmark.
         for key in heads:
-            self.git.refs['refs/heads/' + key] = self.map_git_get(heads[key])
+            git_ref = self.map_git_get(heads[key])
+            if git_ref:
+                self.git.refs['refs/heads/' + key] = self.map_git_get(heads[key])
 
     def export_hg_tags(self):
         for tag, sha in self.repo.tags().iteritems():