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 <felipe.contreras@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
38e7167e9b
commit
b25df87fad
@ -387,6 +387,7 @@ class CustomTree():
|
|||||||
global files_cache
|
global files_cache
|
||||||
|
|
||||||
self.updates = {}
|
self.updates = {}
|
||||||
|
self.branch = repo
|
||||||
|
|
||||||
def copy_tree(revid):
|
def copy_tree(revid):
|
||||||
files = files_cache[revid] = {}
|
files = files_cache[revid] = {}
|
||||||
@ -515,13 +516,21 @@ class CustomTree():
|
|||||||
|
|
||||||
return changes
|
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]
|
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):
|
def get_symlink_target(self, file_id):
|
||||||
path, mark = self.rev_files[file_id]
|
return self.get_content(file_id)
|
||||||
return blob_marks[mark]
|
|
||||||
|
|
||||||
def id2path(self, file_id):
|
def id2path(self, file_id):
|
||||||
path, mark = self.rev_files[file_id]
|
path, mark = self.rev_files[file_id]
|
||||||
|
Loading…
Reference in New Issue
Block a user