diff --git a/git/repo/base.py b/git/repo/base.py
index <HASH>..<HASH> 100644
--- a/git/repo/base.py
+++ b/git/repo/base.py
@@ -713,11 +713,14 @@ class Repo(object):
                            committed_date=int(props[b'committer-time']))
                 commits[hexsha] = c
             else:
-                # Discard the next line (it's a filename end tag)
-                line = next(stream)
-                tag, value = line.split(b' ', 1)
-                assert tag == b'filename', 'Unexpected git blame output'
-                orig_filename = value
+                # Discard all lines until we find "filename" which is
+                # guaranteed to be the last line
+                while True:
+                    line = next(stream)
+                    tag, value = line.split(b' ', 1)
+                    if tag == b'filename':
+                        orig_filename = value
+                        break
 
             yield BlameEntry(commits[hexsha],
                              range(lineno, lineno + num_lines),
Ignore all lines of subsequent hunks until last one is found

Git version <I>+ introduced extra lines into the subsequent hunk
sections for incremental blame output.  The documentation notes that
parsers of this output should ignore all lines between the start and end
for robust parsing.