threads / patch / 33745

patchremote-bzr: fix for disappeared revisions

Subject: [PATCH] remote-bzr: fix for disappeared revisions

## tl;dr

3 messages between May 7, 2013 and May 8, 2013. Diffs are folded; open one to read it.

replies: 2people: 2as markdown or json

Felipe Contreras· May 7, 2013, 23:39 UTC · lore

It's possible that the previous tip goes away, we should not assume it's always present. Fortunately we are only using it to calculate the progress to display to the user, so only that needs to be fixed.

Also, add a test that triggers this issue.
Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
---
 contrib/remote-helpers/git-remote-bzr | 15 ++++++++++----
 contrib/remote-helpers/test-bzr.sh    | 37 +++++++++++++++++++++++++++++++++++
 2 files changed, 48 insertions(+), 4 deletions(-)
Show changes to 2 files +48 −4

contrib/remote-helpers/git-remote-bzr, contrib/remote-helpers/test-bzr.sh

diff --git a/contrib/remote-helpers/git-remote-bzr b/contrib/remote-helpers/git-remote-bzr
index 0ef30f8..3e452af 100755
--- a/contrib/remote-helpers/git-remote-bzr
+++ b/contrib/remote-helpers/git-remote-bzr
@@ -282,9 +282,13 @@ def export_branch(repo, name):
 
     branch.lock_read()
     revs = branch.iter_merge_sorted_revisions(None, tip, 'exclude', 'forward')
-    tip_revno = branch.revision_id_to_revno(tip)
-    last_revno, _ = branch.last_revision_info()
-    total = last_revno - tip_revno
+    try:
+        tip_revno = branch.revision_id_to_revno(tip)
+        last_revno, _ = branch.last_revision_info()
+        total = last_revno - tip_revno
+    except bzrlib.errors.NoSuchRevision:
+        tip_revno = 0
+        total = 0
 
     for revid, _, seq, _ in revs:
 
@@ -353,7 +357,10 @@ def export_branch(repo, name):
 
         progress = (revno - tip_revno)
         if (progress % 100 == 0):
-            print "progress revision %d '%s' (%d/%d)" % (revno, name, progress, total)
+            if total:
+                print "progress revision %d '%s' (%d/%d)" % (revno, name, progress, total)
+            else:
+                print "progress revision %d '%s' (%d)" % (revno, name, progress)
 
     branch.unlock()
 
diff --git a/contrib/remote-helpers/test-bzr.sh b/contrib/remote-helpers/test-bzr.sh
index cec55f1..3f417ad 100755
--- a/contrib/remote-helpers/test-bzr.sh
+++ b/contrib/remote-helpers/test-bzr.sh
@@ -300,4 +300,41 @@ test_expect_success 'proper bzr repo' '
   test_cmp ../expected actual
 '
 
+test_expect_success 'strip' '
+  mkdir -p tmp && cd tmp &&
+  test_when_finished "cd .. && rm -rf tmp" &&
+
+  (
+  bzr init bzrrepo &&
+  cd bzrrepo &&
+
+  echo one >> content &&
+  bzr add content &&
+  bzr commit -m one &&
+
+  echo two >> content &&
+  bzr commit -m two
+  ) &&
+
+  git clone "bzr::$PWD/bzrrepo" gitrepo &&
+
+  (
+  cd bzrrepo &&
+  bzr uncommit --force &&
+
+  echo three >> content &&
+  bzr commit -m three &&
+
+  echo four >> content &&
+  bzr commit -m four &&
+  bzr log --line | sed -e "s/^[0-9]\+: //" > ../expected
+  ) &&
+
+  (cd gitrepo &&
+  git fetch &&
+  git log --format="%an %ad %s" --date=short origin/master > ../actual) &&
+
+  test_cmp actual expected
+'
+
 test_done
-- 
1.8.3.rc1.553.gac13664
Felipe Contreras· May 7, 2013, 23:42 UTC · re: Felipe Contreras · lore

Re: [PATCH] remote-bzr: fix for disappeared revisions

On Tue, May 7, 2013 at 6:39 PM, Felipe Contreras <felipe.contreras@gmail.com> wrote:

Show 5 quoted lines
> +  (cd gitrepo &&
> +  git fetch &&
> +  git log --format="%an %ad %s" --date=short origin/master > ../actual) &&
> +
> +  test_cmp actual expected
Hmm:
test_cmp expected actual
-- 
Felipe Contreras
Junio C Hamano· May 8, 2013, 05:16 UTC · re: Felipe Contreras · lore

Re: [PATCH] remote-bzr: fix for disappeared revisions

Felipe Contreras <felipe.contreras@gmail.com> writes:
Show 12 quoted lines
> On Tue, May 7, 2013 at 6:39 PM, Felipe Contreras
> <felipe.contreras@gmail.com> wrote:
>
>> +  (cd gitrepo &&
>> +  git fetch &&
>> +  git log --format="%an %ad %s" --date=short origin/master > ../actual) &&
>> +
>> +  test_cmp actual expected
>
> Hmm:
>
> test_cmp expected actual
Yeah, right.

← back to recent threads