# HG changeset patch # User Sean Farley # Date 1452290540 28800 # Node ID 4fa1812d1f24b03e17e42f15d0c09dc6b00933e0 # Parent 2cd253b6c8ab5a47ed42776680669c9f0692852b git_handler: use remote HEAD for cloned bookmark (BC) Tests have been updated for new behavior. diff -r 2cd253b6c8ab -r 4fa1812d1f24 hggit/git_handler.py --- 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]) diff -r 2cd253b6c8ab -r 4fa1812d1f24 tests/test-extra.t --- 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 diff -r 2cd253b6c8ab -r 4fa1812d1f24 tests/test-hg-author.t --- 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' diff -r 2cd253b6c8ab -r 4fa1812d1f24 tests/test-push.t --- 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' diff -r 2cd253b6c8ab -r 4fa1812d1f24 tests/test-renames.t --- 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