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 <felipe.contreras@xxxxxxxxx> --- contrib/remote-helpers/git-remote-bzr | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/contrib/remote-helpers/git-remote-bzr b/contrib/remote-helpers/git-remote-bzr index bf254a0..fdead31 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] -- 1.8.2.1.884.g3532a8d -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html