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>
This commit is contained in:
Felipe Contreras 2013-05-24 21:29:34 -05:00 committed by Junio C Hamano
parent 63f54cf216
commit 91347ea3e1
4 changed files with 26 additions and 52 deletions

View File

@ -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

View File

@ -29,7 +29,6 @@ git_clone () {
hg_clone () {
(
hg init $2 &&
hg -R $2 bookmark -i master &&
cd $1 &&
git push -q "hg::../$2" 'refs/tags/*:refs/tags/*' 'refs/heads/*:refs/heads/*'
) &&
@ -49,8 +48,7 @@ hg_push () {
}
hg_log () {
hg -R $1 log --graph --debug >log &&
grep -v 'tag: *default/' log
hg -R $1 log --graph --debug
}
setup () {
@ -66,6 +64,7 @@ setup () {
echo "graphlog ="
) >> "$HOME"/.hgrc &&
git config --global remote-hg.hg-git-compat true
git config --global remote-hg.track-branches true
HGEDITOR=/usr/bin/true
GIT_AUTHOR_DATE="2007-01-01 00:00:00 +0230"
@ -189,7 +188,7 @@ test_expect_success 'hg branch' '
hg_clone gitrepo hgrepo &&
cd hgrepo &&
hg -q co master &&
hg -q co default &&
hg mv alpha beta &&
hg -q commit -m "rename alpha to beta" &&
hg branch gamma | grep -v "permanent and global" &&
@ -225,7 +224,7 @@ test_expect_success 'hg tags' '
hg_clone gitrepo hgrepo &&
cd hgrepo &&
hg co master &&
hg co default &&
hg tag alpha
) &&

View File

@ -27,7 +27,8 @@ fi
# clone to a git repo with git
git_clone_git () {
git clone -q "hg::$1" $2
git clone -q "hg::$1" $2 &&
(cd $2 && git checkout master && git branch -D default)
}
# clone to an hg repo with git
@ -63,6 +64,7 @@ hg_push_git () {
cd $2
git checkout -q -b tmp &&
git fetch -q "hg::../$1" 'refs/tags/*:refs/tags/*' 'refs/heads/*:refs/heads/*' &&
git branch -D default &&
git checkout -q @{-1} &&
git branch -q -D tmp 2> /dev/null || true
)

View File

@ -21,15 +21,8 @@ if ! python -c 'import mercurial'; then
fi
check () {
(
cd $1 &&
git log --format='%s' -1 &&
git symbolic-ref HEAD
) > actual &&
(
echo $2 &&
echo "refs/heads/$3"
) > expected &&
echo $3 > expected &&
git --git-dir=$1/.git log --format='%s' -1 $2 > actual
test_cmp expected actual
}
@ -56,7 +49,7 @@ test_expect_success 'cloning' '
) &&
git clone "hg::hgrepo" gitrepo &&
check gitrepo zero master
check gitrepo HEAD zero
'
test_expect_success 'cloning with branches' '
@ -70,12 +63,7 @@ test_expect_success 'cloning with branches' '
) &&
git clone "hg::hgrepo" gitrepo &&
check gitrepo next next &&
(cd hgrepo && hg checkout default) &&
git clone "hg::hgrepo" gitrepo2 &&
check gitrepo2 zero master
check gitrepo origin/branches/next next
'
test_expect_success 'cloning with bookmarks' '
@ -83,25 +71,14 @@ test_expect_success 'cloning with bookmarks' '
(
cd hgrepo &&
hg checkout default &&
hg bookmark feature-a &&
echo feature-a > content &&
hg commit -m feature-a
) &&
git clone "hg::hgrepo" gitrepo &&
check gitrepo feature-a feature-a
'
test_expect_success 'cloning with detached head' '
test_when_finished "rm -rf gitrepo*" &&
(
cd hgrepo &&
hg update -r 0
) &&
git clone "hg::hgrepo" gitrepo &&
check gitrepo zero master
check gitrepo origin/feature-a feature-a
'
test_expect_success 'update bookmark' '