summaryrefslogtreecommitdiff
path: root/contrib/remote-helpers/git-remote-hg
diff options
context:
space:
mode:
authorFelipe Contreras <felipe.contreras@gmail.com>2013-05-24 21:29:34 -0500
committerJunio C Hamano <gitster@pobox.com>2013-05-28 07:59:30 -0700
commit91347ea3e17b853155f9cab31f0c2a28143284ed (patch)
treeb75fa646c531d5224fb204ab90c0d728aa648b09 /contrib/remote-helpers/git-remote-hg
parent63f54cf216944e8cadd7c762e624b0a7b1d0c3a2 (diff)
downloadgit-91347ea3e17b853155f9cab31f0c2a28143284ed.tar.gz
remote-hg: always point HEAD to master
Mercurial always checks out the 'default' branch, so there's no point in complicating our lives trying to do something fancier, which causes different behavior depending on whether the repository is local or remote. So let's always use 'default' (which we translate to 'master'), unless we are in hg-git mode, which expects us to use the 'master' bookmark instead. Also, update the tests that used to check for different checkout behaviors to simply check that the refs are there, remove unnecessary ones, and fix the ones that expect something different. Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'contrib/remote-helpers/git-remote-hg')
-rwxr-xr-xcontrib/remote-helpers/git-remote-hg30
1 files changed, 13 insertions, 17 deletions
diff --git a/contrib/remote-helpers/git-remote-hg b/contrib/remote-helpers/git-remote-hg
index 48edf3b562..7c859b82e8 100755
--- a/contrib/remote-helpers/git-remote-hg
+++ b/contrib/remote-helpers/git-remote-hg
@@ -560,22 +560,16 @@ def get_branch_tip(repo, branch):
return heads[0]
def list_head(repo, cur):
- global g_head, bmarks
+ global g_head, bmarks, fake_bmark
- head = bookmarks.readcurrent(repo)
- if head:
- node = repo[head]
- else:
- # fake bookmark from current branch
- head = cur
- node = repo['.']
- if not node:
- node = repo['tip']
- if not node:
- return
- if head == 'default':
- head = 'master'
- bmarks[head] = node
+ if 'default' not in repo:
+ # empty repo
+ return
+
+ node = repo['default']
+ head = 'master' if not 'master' in bmarks else 'default'
+ fake_bmark = head
+ bmarks[head] = node
head = gitref(head)
print "@refs/heads/%s HEAD" % head
@@ -910,8 +904,8 @@ def do_export(parser):
if old == new:
continue
- if bmark == 'master' and 'master' not in parser.repo._bookmarks:
- # fake bookmark
+ if bmark == fake_bmark or \
+ bmark == 'master' and 'master' not in parser.repo._bookmarks:
print "ok %s" % ref
continue
elif bookmarks.pushbookmark(parser.repo, bmark, old, new):
@@ -946,6 +940,7 @@ def main(args):
global track_branches, force_push, is_tmp
global parsed_tags
global filenodes
+ global fake_bmark
alias = args[1]
url = args[2]
@@ -979,6 +974,7 @@ def main(args):
marks = None
parsed_tags = {}
filenodes = {}
+ fake_bmark = None
repo = get_repo(url, alias)
prefix = 'refs/hg/%s' % alias