Mercurial > hg > hg-git
changeset 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 | 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 +++ 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])
--- a/tests/test-extra.t +++ b/tests/test-extra.t @@ -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 +++ b/tests/test-hg-author.t @@ -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 +++ b/tests/test-push.t @@ -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 +++ b/tests/test-renames.t @@ -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