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:

committed by
Junio C Hamano

parent
63f54cf216
commit
91347ea3e1
@ -560,21 +560,15 @@ def get_branch_tip(repo, branch):
|
|||||||
return heads[0]
|
return heads[0]
|
||||||
|
|
||||||
def list_head(repo, cur):
|
def list_head(repo, cur):
|
||||||
global g_head, bmarks
|
global g_head, bmarks, fake_bmark
|
||||||
|
|
||||||
head = bookmarks.readcurrent(repo)
|
if 'default' not in repo:
|
||||||
if head:
|
# empty repo
|
||||||
node = repo[head]
|
|
||||||
else:
|
|
||||||
# fake bookmark from current branch
|
|
||||||
head = cur
|
|
||||||
node = repo['.']
|
|
||||||
if not node:
|
|
||||||
node = repo['tip']
|
|
||||||
if not node:
|
|
||||||
return
|
return
|
||||||
if head == 'default':
|
|
||||||
head = 'master'
|
node = repo['default']
|
||||||
|
head = 'master' if not 'master' in bmarks else 'default'
|
||||||
|
fake_bmark = head
|
||||||
bmarks[head] = node
|
bmarks[head] = node
|
||||||
|
|
||||||
head = gitref(head)
|
head = gitref(head)
|
||||||
@ -910,8 +904,8 @@ def do_export(parser):
|
|||||||
if old == new:
|
if old == new:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
if bmark == 'master' and 'master' not in parser.repo._bookmarks:
|
if bmark == fake_bmark or \
|
||||||
# fake bookmark
|
bmark == 'master' and 'master' not in parser.repo._bookmarks:
|
||||||
print "ok %s" % ref
|
print "ok %s" % ref
|
||||||
continue
|
continue
|
||||||
elif bookmarks.pushbookmark(parser.repo, bmark, old, new):
|
elif bookmarks.pushbookmark(parser.repo, bmark, old, new):
|
||||||
@ -946,6 +940,7 @@ def main(args):
|
|||||||
global track_branches, force_push, is_tmp
|
global track_branches, force_push, is_tmp
|
||||||
global parsed_tags
|
global parsed_tags
|
||||||
global filenodes
|
global filenodes
|
||||||
|
global fake_bmark
|
||||||
|
|
||||||
alias = args[1]
|
alias = args[1]
|
||||||
url = args[2]
|
url = args[2]
|
||||||
@ -979,6 +974,7 @@ def main(args):
|
|||||||
marks = None
|
marks = None
|
||||||
parsed_tags = {}
|
parsed_tags = {}
|
||||||
filenodes = {}
|
filenodes = {}
|
||||||
|
fake_bmark = None
|
||||||
|
|
||||||
repo = get_repo(url, alias)
|
repo = get_repo(url, alias)
|
||||||
prefix = 'refs/hg/%s' % alias
|
prefix = 'refs/hg/%s' % alias
|
||||||
|
@ -29,7 +29,6 @@ git_clone () {
|
|||||||
hg_clone () {
|
hg_clone () {
|
||||||
(
|
(
|
||||||
hg init $2 &&
|
hg init $2 &&
|
||||||
hg -R $2 bookmark -i master &&
|
|
||||||
cd $1 &&
|
cd $1 &&
|
||||||
git push -q "hg::../$2" 'refs/tags/*:refs/tags/*' 'refs/heads/*:refs/heads/*'
|
git push -q "hg::../$2" 'refs/tags/*:refs/tags/*' 'refs/heads/*:refs/heads/*'
|
||||||
) &&
|
) &&
|
||||||
@ -49,8 +48,7 @@ hg_push () {
|
|||||||
}
|
}
|
||||||
|
|
||||||
hg_log () {
|
hg_log () {
|
||||||
hg -R $1 log --graph --debug >log &&
|
hg -R $1 log --graph --debug
|
||||||
grep -v 'tag: *default/' log
|
|
||||||
}
|
}
|
||||||
|
|
||||||
setup () {
|
setup () {
|
||||||
@ -66,6 +64,7 @@ setup () {
|
|||||||
echo "graphlog ="
|
echo "graphlog ="
|
||||||
) >> "$HOME"/.hgrc &&
|
) >> "$HOME"/.hgrc &&
|
||||||
git config --global remote-hg.hg-git-compat true
|
git config --global remote-hg.hg-git-compat true
|
||||||
|
git config --global remote-hg.track-branches true
|
||||||
|
|
||||||
HGEDITOR=/usr/bin/true
|
HGEDITOR=/usr/bin/true
|
||||||
GIT_AUTHOR_DATE="2007-01-01 00:00:00 +0230"
|
GIT_AUTHOR_DATE="2007-01-01 00:00:00 +0230"
|
||||||
@ -189,7 +188,7 @@ test_expect_success 'hg branch' '
|
|||||||
hg_clone gitrepo hgrepo &&
|
hg_clone gitrepo hgrepo &&
|
||||||
|
|
||||||
cd hgrepo &&
|
cd hgrepo &&
|
||||||
hg -q co master &&
|
hg -q co default &&
|
||||||
hg mv alpha beta &&
|
hg mv alpha beta &&
|
||||||
hg -q commit -m "rename alpha to beta" &&
|
hg -q commit -m "rename alpha to beta" &&
|
||||||
hg branch gamma | grep -v "permanent and global" &&
|
hg branch gamma | grep -v "permanent and global" &&
|
||||||
@ -225,7 +224,7 @@ test_expect_success 'hg tags' '
|
|||||||
hg_clone gitrepo hgrepo &&
|
hg_clone gitrepo hgrepo &&
|
||||||
|
|
||||||
cd hgrepo &&
|
cd hgrepo &&
|
||||||
hg co master &&
|
hg co default &&
|
||||||
hg tag alpha
|
hg tag alpha
|
||||||
) &&
|
) &&
|
||||||
|
|
||||||
|
@ -27,7 +27,8 @@ fi
|
|||||||
|
|
||||||
# clone to a git repo with git
|
# clone to a git repo with git
|
||||||
git_clone_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
|
# clone to an hg repo with git
|
||||||
@ -63,6 +64,7 @@ hg_push_git () {
|
|||||||
cd $2
|
cd $2
|
||||||
git checkout -q -b tmp &&
|
git checkout -q -b tmp &&
|
||||||
git fetch -q "hg::../$1" 'refs/tags/*:refs/tags/*' 'refs/heads/*:refs/heads/*' &&
|
git fetch -q "hg::../$1" 'refs/tags/*:refs/tags/*' 'refs/heads/*:refs/heads/*' &&
|
||||||
|
git branch -D default &&
|
||||||
git checkout -q @{-1} &&
|
git checkout -q @{-1} &&
|
||||||
git branch -q -D tmp 2> /dev/null || true
|
git branch -q -D tmp 2> /dev/null || true
|
||||||
)
|
)
|
||||||
|
@ -21,15 +21,8 @@ if ! python -c 'import mercurial'; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
check () {
|
check () {
|
||||||
(
|
echo $3 > expected &&
|
||||||
cd $1 &&
|
git --git-dir=$1/.git log --format='%s' -1 $2 > actual
|
||||||
git log --format='%s' -1 &&
|
|
||||||
git symbolic-ref HEAD
|
|
||||||
) > actual &&
|
|
||||||
(
|
|
||||||
echo $2 &&
|
|
||||||
echo "refs/heads/$3"
|
|
||||||
) > expected &&
|
|
||||||
test_cmp expected actual
|
test_cmp expected actual
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -56,7 +49,7 @@ test_expect_success 'cloning' '
|
|||||||
) &&
|
) &&
|
||||||
|
|
||||||
git clone "hg::hgrepo" gitrepo &&
|
git clone "hg::hgrepo" gitrepo &&
|
||||||
check gitrepo zero master
|
check gitrepo HEAD zero
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'cloning with branches' '
|
test_expect_success 'cloning with branches' '
|
||||||
@ -70,12 +63,7 @@ test_expect_success 'cloning with branches' '
|
|||||||
) &&
|
) &&
|
||||||
|
|
||||||
git clone "hg::hgrepo" gitrepo &&
|
git clone "hg::hgrepo" gitrepo &&
|
||||||
check gitrepo next next &&
|
check gitrepo origin/branches/next next
|
||||||
|
|
||||||
(cd hgrepo && hg checkout default) &&
|
|
||||||
|
|
||||||
git clone "hg::hgrepo" gitrepo2 &&
|
|
||||||
check gitrepo2 zero master
|
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'cloning with bookmarks' '
|
test_expect_success 'cloning with bookmarks' '
|
||||||
@ -83,25 +71,14 @@ test_expect_success 'cloning with bookmarks' '
|
|||||||
|
|
||||||
(
|
(
|
||||||
cd hgrepo &&
|
cd hgrepo &&
|
||||||
|
hg checkout default &&
|
||||||
hg bookmark feature-a &&
|
hg bookmark feature-a &&
|
||||||
echo feature-a > content &&
|
echo feature-a > content &&
|
||||||
hg commit -m feature-a
|
hg commit -m feature-a
|
||||||
) &&
|
) &&
|
||||||
|
|
||||||
git clone "hg::hgrepo" gitrepo &&
|
git clone "hg::hgrepo" gitrepo &&
|
||||||
check gitrepo feature-a feature-a
|
check gitrepo origin/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
|
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'update bookmark' '
|
test_expect_success 'update bookmark' '
|
||||||
|
Reference in New Issue
Block a user