Browse Source

remote-bzr: fix for disappeared revisions

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>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
Felipe Contreras 12 years ago committed by Junio C Hamano
parent
commit
435f39a3e8
  1. 15
      contrib/remote-helpers/git-remote-bzr
  2. 38
      contrib/remote-helpers/test-bzr.sh

15
contrib/remote-helpers/git-remote-bzr

@ -282,9 +282,13 @@ def export_branch(repo, name): @@ -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): @@ -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()


38
contrib/remote-helpers/test-bzr.sh

@ -300,4 +300,42 @@ test_expect_success 'proper bzr repo' ' @@ -300,4 +300,42 @@ test_expect_success 'proper bzr repo' '
test_cmp ../expected actual
'

test_expect_success 'strip' '
# Do not imitate this style; always chdir inside a subshell instead
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 expected actual
'

test_done

Loading…
Cancel
Save