From: Felipe Contreras Date: Wed, 1 May 2013 01:09:59 +0000 (-0500) Subject: remote-bzr: fix partially pushed merge X-Git-Tag: v1.8.3-rc2~11^2~13 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=b25df87fad2b12349a55146d5c87625109a58221;p=git-core%2Fgit.git remote-bzr: fix partially pushed merge If part of the merge was already pushed, we don't have the blob_marks available, however, the commits are already stored in bazaar, so we can use the revision_tree to fetch the contents. We want to do this only when there's no other option. There's no easy way to test this. Signed-off-by: Felipe Contreras Signed-off-by: Junio C Hamano --- diff --git a/contrib/remote-helpers/git-remote-bzr b/contrib/remote-helpers/git-remote-bzr index bf254a078..fdead31a6 100755 --- a/contrib/remote-helpers/git-remote-bzr +++ b/contrib/remote-helpers/git-remote-bzr @@ -387,6 +387,7 @@ class CustomTree(): global files_cache self.updates = {} + self.branch = repo def copy_tree(revid): files = files_cache[revid] = {} @@ -515,13 +516,21 @@ class CustomTree(): return changes - def get_file_with_stat(self, file_id, path=None): + def get_content(self, file_id): path, mark = self.rev_files[file_id] - return (StringIO.StringIO(blob_marks[mark]), None) + if mark: + return blob_marks[mark] + + # last resort + tree = self.branch.repository.revision_tree(self.base_id) + return tree.get_file_text(file_id) + + def get_file_with_stat(self, file_id, path=None): + content = self.get_content(file_id) + return (StringIO.StringIO(content), None) def get_symlink_target(self, file_id): - path, mark = self.rev_files[file_id] - return blob_marks[mark] + return self.get_content(file_id) def id2path(self, file_id): path, mark = self.rev_files[file_id]