mirror of
https://github.com/git/git.git
synced 2024-11-24 10:26:17 +08:00
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>
This commit is contained in:
parent
3b892dc828
commit
435f39a3e8
@ -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()
|
||||
|
||||
|
@ -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…
Reference in New Issue
Block a user