changeset 1008: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 2cd253b6c8ab
children e810b2e186f3
files hggit/git_handler.py tests/test-extra.t tests/test-hg-author.t tests/test-push.t tests/test-renames.t
diffstat 5 files changed, 31 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/hggit/git_handler.py	Fri May 15 12:57:52 2015 -0700
+++ b/hggit/git_handler.py	Fri Jan 08 14:02:20 2016 -0800
@@ -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])
--- a/tests/test-extra.t	Fri May 15 12:57:52 2015 -0700
+++ b/tests/test-extra.t	Fri Jan 08 14:02:20 2016 -0800
@@ -15,7 +15,7 @@
   $ cd hgrepo
   $ hg mv a b
   $ fn_hg_commit -mb
-  $ hg up 0 | egrep -v '^\(leaving bookmark master\)$'
+  $ hg up 0 | egrep -v '^\(leaving bookmark'
   1 files updated, 0 files merged, 1 files removed, 0 files unresolved
   $ touch c
   $ hg add c
--- a/tests/test-hg-author.t	Fri May 15 12:57:52 2015 -0700
+++ b/tests/test-hg-author.t	Fri Jan 08 14:02:20 2016 -0800
@@ -16,8 +16,7 @@
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
 
   $ cd hgrepo
-  $ hg co master | egrep -v '^\(activating bookmark master\)$'
-  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  $ hg book master
   $ echo beta > beta
   $ hg add beta
   $ fn_hg_commit -u "test" -m 'add beta'
--- a/tests/test-push.t	Fri May 15 12:57:52 2015 -0700
+++ b/tests/test-push.t	Fri Jan 08 14:02:20 2016 -0800
@@ -16,6 +16,7 @@
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
 
   $ cd hgrepo
+  $ hg bookmark -q master
   $ echo beta > beta
   $ hg add beta
   $ fn_hg_commit -m 'add beta'
--- a/tests/test-renames.t	Fri May 15 12:57:52 2015 -0700
+++ b/tests/test-renames.t	Fri Jan 08 14:02:20 2016 -0800
@@ -90,6 +90,7 @@
   $ cd ..
   $ hg clone -q gitrepo hgrepo
   $ cd hgrepo
+  $ hg book master -q
   $ hg log -p --graph --template "{rev} {node} {desc|firstline}\n{join(extras, ' ')}\n\n"
   @  8 a26f94023ab2ea40c9e4c4dbb753c9a4e572fefe remove submodule and rename back
   |  branch=default hg-git-rename-source=git
@@ -405,6 +406,7 @@
   $ cd ..
   $ hg clone -q gitrepo hgrepo2
   $ cd hgrepo2
+  $ hg book master -qf
   $ hg export master
   # HG changeset patch
   # User test