Show More
@@ -40,7 +40,7 b' from dulwich.repo import Repo as Dulwich' | |||||
40 |
|
40 | |||
41 | import rhodecode |
|
41 | import rhodecode | |
42 | from vcsserver import exceptions, settings, subprocessio |
|
42 | from vcsserver import exceptions, settings, subprocessio | |
43 | from vcsserver.str_utils import safe_str, safe_int, safe_bytes, ascii_bytes, convert_to_str |
|
43 | from vcsserver.str_utils import safe_str, safe_int, safe_bytes, ascii_bytes, convert_to_str, splitnewlines | |
44 | from vcsserver.base import RepoFactory, obfuscate_qs, ArchiveNode, store_archive_in_cache, BytesEnvelope, BinaryEnvelope |
|
44 | from vcsserver.base import RepoFactory, obfuscate_qs, ArchiveNode, store_archive_in_cache, BytesEnvelope, BinaryEnvelope | |
45 | from vcsserver.hgcompat import ( |
|
45 | from vcsserver.hgcompat import ( | |
46 | hg_url as url_parser, httpbasicauthhandler, httpdigestauthhandler) |
|
46 | hg_url as url_parser, httpbasicauthhandler, httpdigestauthhandler) | |
@@ -1347,7 +1347,8 b' class GitRemote(RemoteBase):' | |||||
1347 | with repo_init as repo: |
|
1347 | with repo_init as repo: | |
1348 | commit = repo[commit_id] |
|
1348 | commit = repo[commit_id] | |
1349 | blame_obj = repo.blame(path, newest_commit=commit_id) |
|
1349 | blame_obj = repo.blame(path, newest_commit=commit_id) | |
1350 |
f |
|
1350 | file_content = commit.tree[path].data | |
|
1351 | for i, line in enumerate(splitnewlines(file_content)): | |||
1351 | line_no = i + 1 |
|
1352 | line_no = i + 1 | |
1352 | hunk = blame_obj.for_line(line_no) |
|
1353 | hunk = blame_obj.for_line(line_no) | |
1353 | blame_commit_id = hunk.final_commit_id.hex |
|
1354 | blame_commit_id = hunk.final_commit_id.hex |
@@ -142,3 +142,17 b' def convert_to_str(data):' | |||||
142 | return list(convert_to_str(item) for item in data) |
|
142 | return list(convert_to_str(item) for item in data) | |
143 | else: |
|
143 | else: | |
144 | return data |
|
144 | return data | |
|
145 | ||||
|
146 | ||||
|
147 | def splitnewlines(text: bytes): | |||
|
148 | """ | |||
|
149 | like splitlines, but only split on newlines. | |||
|
150 | """ | |||
|
151 | ||||
|
152 | lines = [_l + b'\n' for _l in text.split(b'\n')] | |||
|
153 | if lines: | |||
|
154 | if lines[-1] == b'\n': | |||
|
155 | lines.pop() | |||
|
156 | else: | |||
|
157 | lines[-1] = lines[-1][:-1] | |||
|
158 | return lines |
General Comments 0
You need to be logged in to leave comments.
Login now