Skip to content

Commit

Permalink
remote-bzr: fix for disappeared revisions
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Felipe Contreras authored and Junio C Hamano committed May 8, 2013
1 parent 3b892dc commit 435f39a
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 4 deletions.
15 changes: 11 additions & 4 deletions contrib/remote-helpers/git-remote-bzr
Original file line number Diff line number Diff line change
Expand Up @@ -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:

Expand Down Expand Up @@ -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()

Expand Down
38 changes: 38 additions & 0 deletions contrib/remote-helpers/test-bzr.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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

0 comments on commit 435f39a

Please sign in to comment.