diff options
author | Mark Nevill <mark@nevill.ch> | 2011-07-17 21:26:27 +0200 |
---|---|---|
committer | Sebastian Thiel <byronimo@gmail.com> | 2011-07-18 17:09:00 +0200 |
commit | 1f6b8bf020863f499bf956943a5ee56d067407f8 (patch) | |
tree | d2971107644cdd07f0420a583368732e39984d56 /git | |
parent | d6d544f67a1f3572781271b5f3030d97e6c6d9e2 (diff) | |
download | gitpython-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.
Diffstat (limited to 'git')
-rw-r--r-- | git/repo/base.py | 7 |
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 |