summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Nevill <mark@nevill.ch>2011-07-17 21:26:27 +0200
committerSebastian Thiel <byronimo@gmail.com>2011-07-18 17:09:00 +0200
commit1f6b8bf020863f499bf956943a5ee56d067407f8 (patch)
treed2971107644cdd07f0420a583368732e39984d56
parentd6d544f67a1f3572781271b5f3030d97e6c6d9e2 (diff)
downloadgitpython-1f6b8bf020863f499bf956943a5ee56d067407f8.tar.gz
Fixed consecutive lines with same blame info not appearing in blame.
This fixes a bug when parsing blame -p output: Full commit info headers only appear for the first line from a particular commit, but other lines were ignored as the blame info dict was reset after each line. This patch handles both multiple consecutive lines from a commit and interleaved lines from multiple commits.
-rw-r--r--git/repo/base.py7
1 files changed, 5 insertions, 2 deletions
diff --git a/git/repo/base.py b/git/repo/base.py
index 14efabdc..20c96b22 100644
--- a/git/repo/base.py
+++ b/git/repo/base.py
@@ -570,11 +570,14 @@ class Repo(object):
if self.re_hexsha_only.search(firstpart):
# handles
# 634396b2f541a9f2d58b00be1a07f0c358b999b3 1 1 7 - indicates blame-data start
- # 634396b2f541a9f2d58b00be1a07f0c358b999b3 2 2
+ # 634396b2f541a9f2d58b00be1a07f0c358b999b3 2 2 - indicates another line of blame with the same data
digits = parts[-1].split(" ")
if len(digits) == 3:
info = {'id': firstpart}
blames.append([None, []])
+ elif info['id'] != firstpart:
+ info = {'id': firstpart}
+ blames.append([commits.get(firstpart), []])
# END blame data initialization
else:
m = self.re_author_committer_start.search(firstpart)
@@ -622,7 +625,7 @@ class Repo(object):
text, = m.groups()
blames[-1][0] = c
blames[-1][1].append( text )
- info = None
+ info = {'id': sha}
# END if we collected commit info
# END distinguish filename,summary,rest
# END distinguish author|committer vs filename,summary,rest