diff hggit/git_handler.py @ 1009:4fa1812d1f24

git_handler: use remote HEAD for cloned bookmark (BC) Tests have been updated for new behavior.
author Sean Farley <sean@farley.io>
date Fri, 08 Jan 2016 14:02:20 -0800
parents 9b7088850ca8
children e810b2e186f3
line wrap: on
line diff
--- a/hggit/git_handler.py
+++ b/hggit/git_handler.py
@@ -261,6 +261,9 @@
         refs = self.fetch_pack(remote, heads)
         remote_name = self.remote_name(remote)
 
+        # if remote returns a symref for HEAD, then let's store that
+        rhead = None
+        rnode = None
         oldheads = self.repo.changelog.heads()
         imported = 0
         if refs:
@@ -268,6 +271,20 @@
             imported = self.import_git_objects(remote_name, filteredrefs)
             self.import_tags(refs)
             self.update_hg_bookmarks(refs)
+
+            try:
+                symref = refs['HEAD']
+                if symref.startswith('refs/heads'):
+                    rhead = symref.replace('refs/heads/', '')
+
+                rnode = refs['refs/heads/%s' % rhead]
+                rnode = self._map_git[rnode]
+                rnode = self.repo[rnode].node()
+            except KeyError:
+                # if there is any error make sure to clear the variables
+                rhead = None
+                rnode = None
+
             if remote_name:
                 self.update_remote_branches(remote_name, refs)
             elif not self.paths:
@@ -277,6 +294,15 @@
                 # "Activate" a tipmost bookmark.
                 bms = self.repo['tip'].bookmarks()
 
+                # override the 'tipmost' behavior if we know the remote HEAD
+                if rnode:
+                    # make sure the bookmark exists; at the point the remote
+                    # branches has already been set up
+                    suffix = self.branch_bookmark_suffix or ''
+                    self.repo._bookmarks[rhead + suffix] = rnode
+                    util.recordbookmarks(self.repo, self.repo._bookmarks)
+                    bms = [rhead + suffix]
+
                 if bms:
                     try:
                         bookmarks.activate(self.repo, bms[0])