]> Pileus Git - ~andy/git/commitdiff
remote-bzr: use proper push method
authorFelipe Contreras <felipe.contreras@gmail.com>
Thu, 25 Apr 2013 11:25:37 +0000 (06:25 -0500)
committerJunio C Hamano <gitster@pobox.com>
Thu, 25 Apr 2013 22:34:37 +0000 (15:34 -0700)
Do not just randomly synchronize the revisions with no checks at
all.

I don't have any evidence that there's anything wrong with the
current code, which Bazaar seems to use, but for different purposes.
Let's use the logic Bazaar UI uses to avoid surprises.

Also, add a non-ff check.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
contrib/remote-helpers/git-remote-bzr

index fad4a48cdc4567cb732ddaed616d6e2365bab620..6fedc28afb71e517a808ed9fe19cc23dc3a5f94a 100755 (executable)
@@ -630,12 +630,12 @@ def do_export(parser):
     for ref, revid in parsed_refs.iteritems():
         if ref == 'refs/heads/master':
             repo.generate_revision_history(revid, marks.get_tip('master'))
-            revno, revid = repo.last_revision_info()
             if peer:
-                if hasattr(peer, "import_last_revision_info_and_tags"):
-                    peer.import_last_revision_info_and_tags(repo, revno, revid)
-                else:
-                    peer.import_last_revision_info(repo.repository, revno, revid)
+                try:
+                    repo.push(peer, stop_revision=revid)
+                except bzrlib.errors.DivergedBranches:
+                    print "error %s non-fast forward" % ref
+                    continue
             else:
                 wt = repo.bzrdir.open_workingtree()
                 wt.update()