Skip to content
Snippets Groups Projects
Commit b1d6c7fe authored by Tay Ray Chuan's avatar Tay Ray Chuan
Browse files

Merge branch 'rc/push-tag' into rc/master

parents dda51b4e 53b0d608
No related branches found
No related tags found
No related merge requests found
......@@ -568,6 +568,30 @@
raise hgutil.Abort("revision %s cannot be pushed since"
" it doesn't have a ref" % ctx)
# Check if the tags the server is advertising are annotated tags,
# by attempting to retrieve it from the our git repo, and building a
# list of these tags.
#
# This is possible, even though (currently) annotated tags are
# dereferenced and stored as lightweight ones, as the annotated tag
# is still stored in the git repo.
uptodate_annotated_tags = []
for r in tags:
ref = 'refs/tags/'+r
# Check tag.
if not ref in refs:
continue
try:
# We're not using Repo.tag(), as it's deprecated.
tag = self.git.get_object(refs[ref])
if not isinstance(tag, Tag):
continue
except KeyError:
continue
# If we've reached here, the tag's good.
uptodate_annotated_tags.append(ref)
for r in heads + tags:
if r in heads:
ref = 'refs/heads/'+r
......@@ -583,6 +607,9 @@
else:
raise hgutil.Abort("pushing %s overwrites %s"
% (ref, ctx))
elif ref in uptodate_annotated_tags:
# we already have the annotated tag.
pass
else:
raise hgutil.Abort("%s changed on the server, please pull "
"and merge before pushing" % ref)
......
......@@ -40,6 +40,7 @@
mkdir gitrepo
cd gitrepo
git init | python -c "import sys; print sys.stdin.read().replace('$(dirname $(pwd))/', '')"
git config receive.denyCurrentBranch ignore
echo alpha > alpha
git add alpha
commit -m 'add alpha'
......@@ -56,9 +57,10 @@
--listen=localhost\
--export-all\
--pid-file=gitdaemon.pid \
--detach --reuseaddr
--detach --reuseaddr \
--enable=receive-pack
hg clone git://localhost/gitrepo hgrepo | grep -v '^updating'
cd hgrepo
hg log --graph
......@@ -60,8 +62,11 @@
hg clone git://localhost/gitrepo hgrepo | grep -v '^updating'
cd hgrepo
hg log --graph
echo beta-fix >> beta
hg commit -m 'fix for beta'
hg push
cd ..
kill `cat gitdaemon.pid`
......@@ -21,3 +21,9 @@
date: Mon Jan 01 00:00:10 2007 +0000
summary: add alpha
pushing to git://localhost/gitrepo
importing Hg objects into Git
creating and sending data
default::refs/tags/beta => GIT:e6f255c6
default::refs/tags/alpha => GIT:7eeab2ea
default::refs/heads/master => GIT:3b7fd1b3
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment