@@ -87,7 +87,7 @@ def __init__(self, repo: 'Repo', binsha: bytes, tree: 'Tree' = None,
8787committer : Union [Actor , None ] = None ,
8888committed_date : Union [int , None ] = None ,
8989committer_tz_offset : Union [None , float ] = None ,
90- message : Union [str , None ] = None ,
90+ message : Union [str , bytes , None ] = None ,
9191parents : Union [Sequence ['Commit' ], None ] = None ,
9292encoding : Union [str , None ] = None ,
9393gpgsig : Union [str , None ] = None ) -> None :
@@ -209,9 +209,12 @@ def committed_datetime(self) -> 'datetime.datetime':
209209return 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
216219def 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 ()
594597try :
595- self .message = self .message_bytes .decode (self .encoding , 'replace' )
598+ self .message = self .message .decode (self .encoding , 'replace' )
596599except UnicodeDecodeError :
597600log .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
601604return self
0 commit comments