@@ -87,7 +87,7 @@ def __init__(self, repo: 'Repo', binsha: bytes, tree: 'Tree' = None,
8787 committer : Union [Actor , None ] = None ,
8888 committed_date : Union [int , None ] = None ,
8989 committer_tz_offset : Union [None , float ] = None ,
90- message : Union [str , None ] = None ,
90+ message : Union [str , bytes , None ] = None ,
9191 parents : Union [Sequence ['Commit' ], None ] = None ,
9292 encoding : Union [str , None ] = None ,
9393 gpgsig : Union [str , None ] = None ) -> None :
@@ -209,9 +209,12 @@ def committed_datetime(self) -> 'datetime.datetime':
209209 return from_timestamp (self .committed_date , self .committer_tz_offset )
210210
211211 @property
212- def summary (self ) -> str :
212+ def summary (self ) -> Union [ str , bytes ] :
213213 """:return: First line of the commit message"""
214- return self .message .split ('\n ' , 1 )[0 ]
214+ if isinstance (self .message , str ):
215+ return self .message .split ('\n ' , 1 )[0 ]
216+ else :
217+ return self .message .split (b'\n ' , 1 )[0 ]
215218
216219 def count (self , paths : Union [PathLike , Sequence [PathLike ]] = '' , ** kwargs : Any ) -> int :
217220 """Count the number of commits reachable from this commit
@@ -590,12 +593,12 @@ def _deserialize(self, stream: BytesIO) -> 'Commit':
590593
591594 # a stream from our data simply gives us the plain message
592595 # The end of our message stream is marked with a newline that we strip
593- self .message_bytes = stream .read ()
596+ self .message = stream .read ()
594597 try :
595- self .message = self .message_bytes .decode (self .encoding , 'replace' )
598+ self .message = self .message .decode (self .encoding , 'replace' )
596599 except UnicodeDecodeError :
597600 log .error ("Failed to decode message '%s' using encoding %s" ,
598- self .message_bytes , self .encoding , exc_info = True )
601+ self .message , self .encoding , exc_info = True )
599602 # END exception handling
600603
601604 return self
0 commit comments