summaryrefslogtreecommitdiff
path: root/contrib
diff options
context:
space:
mode:
authorFelipe Contreras <felipe.contreras@gmail.com>2013-05-24 21:29:48 -0500
committerJunio C Hamano <gitster@pobox.com>2013-05-28 08:02:04 -0700
commitd226945471d6c2d5ec6b42bdac78a4e6518c1be9 (patch)
tree5091809a94a117b22b05888dcb209f252af42876 /contrib
parentdfcef29f2f32046f3edbcaee47a03d94bc237eb8 (diff)
downloadgit-d226945471d6c2d5ec6b42bdac78a4e6518c1be9.tar.gz
remote-hg: only update necessary revisions
We don't care about the rest, and in fact, we shouldn't try to push everything, as there might be garbage from previous failed pushes. Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'contrib')
-rwxr-xr-xcontrib/remote-helpers/git-remote-hg9
1 files changed, 7 insertions, 2 deletions
diff --git a/contrib/remote-helpers/git-remote-hg b/contrib/remote-helpers/git-remote-hg
index 4d650b5f60..7added3b33 100755
--- a/contrib/remote-helpers/git-remote-hg
+++ b/contrib/remote-helpers/git-remote-hg
@@ -858,6 +858,7 @@ def do_export(parser):
global parsed_refs, bmarks, peer
p_bmarks = []
+ p_revs = set()
parser.next()
@@ -882,6 +883,7 @@ def do_export(parser):
if branch in branches and bnode in branches[branch]:
# up to date
continue
+ p_revs.add(bnode)
print "ok %s" % ref
elif ref.startswith('refs/heads/'):
bmark = ref[len('refs/heads/'):]
@@ -896,6 +898,7 @@ def do_export(parser):
not (bmark == 'master' and bmark not in parser.repo._bookmarks):
p_bmarks.append((ref, bmark, old, new))
+ p_revs.add(bnode)
elif ref.startswith('refs/tags/'):
tag = ref[len('refs/tags/'):]
tag = hgref(tag)
@@ -903,18 +906,20 @@ def do_export(parser):
if mode == 'git':
if not msg:
msg = 'Added tag %s for changeset %s' % (tag, node[:12]);
- write_tag(parser.repo, tag, node, msg, author)
+ tagnode = write_tag(parser.repo, tag, node, msg, author)
+ p_revs.add(tagnode)
else:
fp = parser.repo.opener('localtags', 'a')
fp.write('%s %s\n' % (node, tag))
fp.close()
+ p_revs.add(bnode)
print "ok %s" % ref
else:
# transport-helper/fast-export bugs
continue
if peer:
- parser.repo.push(peer, force=force_push, newbranch=True)
+ parser.repo.push(peer, force=force_push, newbranch=True, revs=list(p_revs))
# update remote bookmarks
remote_bmarks = peer.listkeys('bookmarks')