aboutsummaryrefslogtreecommitdiff
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
parent63f54cf216944e8cadd7c762e624b0a7b1d0c3a2 (diff)
downloadgit-91347ea3e17b853155f9cab31f0c2a28143284ed.tar.gz
git-91347ea3e17b853155f9cab31f0c2a28143284ed.tar.xz
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>
-rwxr-xr-xcontrib/remote-helpers/git-remote-hg30
-rwxr-xr-xcontrib/remote-helpers/test-hg-bidi.sh9
-rwxr-xr-xcontrib/remote-helpers/test-hg-hg-git.sh4
-rwxr-xr-xcontrib/remote-helpers/test-hg.sh35
4 files changed, 26 insertions, 52 deletions
diff --git a/contrib/remote-helpers/git-remote-hg b/contrib/remote-helpers/git-remote-hg
index 48edf3b56..7c859b82e 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
diff --git a/contrib/remote-helpers/test-hg-bidi.sh b/contrib/remote-helpers/test-hg-bidi.sh
index f0aa3c06c..f83d67d74 100755
--- a/contrib/remote-helpers/test-hg-bidi.sh
+++ b/contrib/remote-helpers/test-hg-bidi.sh
@@ -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
) &&
diff --git a/contrib/remote-helpers/test-hg-hg-git.sh b/contrib/remote-helpers/test-hg-hg-git.sh
index 37e59d8fe..221928438 100755
--- a/contrib/remote-helpers/test-hg-hg-git.sh
+++ b/contrib/remote-helpers/test-hg-hg-git.sh
@@ -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
)
diff --git a/contrib/remote-helpers/test-hg.sh b/contrib/remote-helpers/test-hg.sh
index af27a0f65..4d5aba20a 100755
--- a/contrib/remote-helpers/test-hg.sh
+++ b/contrib/remote-helpers/test-hg.sh
@@ -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' '