@@ -41,6 +41,9 @@ def parse(self, data: bytes):
4141 if not commit .sha1 :
4242 continue
4343 commit .repoDir = self .repoDir
44+ if self .repoDir :
45+ commit .committerDateTime = datetime .strptime (
46+ commit .committerDate , "%Y-%m-%d %H:%M:%S %z" )
4447 commits .append (commit )
4548
4649 self .logsAvailable .emit (commits )
@@ -86,19 +89,15 @@ def hasSinceArg(args: List[str]):
8689 return False
8790
8891
89- def makeDateTime (dateStr : str ):
90- return datetime .strptime (dateStr , "%Y-%m-%d %H:%M:%S %z" )
91-
92-
9392# the builtin bisect key required python >= 3.10
9493def insort_logs (a : List [Commit ], x : Commit ):
9594 lo = 0
9695 hi = len (a )
9796
98- xDate = makeDateTime ( x . committerDate )
97+ xDate = x . committerDateTime
9998 while lo < hi :
10099 mid = (lo + hi ) // 2
101- t = makeDateTime ( a [mid ].committerDate )
100+ t = a [mid ].committerDateTime
102101 if xDate < t :
103102 lo = mid + 1
104103 else :
@@ -170,10 +169,10 @@ def run(self):
170169 # no need to merge for the first repo (all the logs from same repo)
171170 if not firstRepo and self .mergeLog (mergedLogs , log ):
172171 continue
173- logDate = makeDateTime ( log .committerDate )
174- if len (mergedLogs ) == 0 or logDate < makeDateTime ( mergedLogs [- 1 ].committerDate ) :
172+ logDate = log .committerDateTime
173+ if len (mergedLogs ) == 0 or logDate < mergedLogs [- 1 ].committerDateTime :
175174 mergedLogs .append (log )
176- elif logDate > makeDateTime ( mergedLogs [0 ].committerDate ) :
175+ elif logDate > mergedLogs [0 ].committerDateTime :
177176 mergedLogs .insert (0 , log )
178177 else :
179178 insort_logs (mergedLogs , log )
@@ -190,8 +189,8 @@ def mergeLog(self, mergedLogs: List[Commit], target: Commit):
190189 if self .isInterruptionRequested ():
191190 return True
192191
193- targetDate = makeDateTime ( target .committerDate )
194- logDate = makeDateTime ( log .committerDate )
192+ targetDate = target .committerDateTime
193+ logDate = log .committerDateTime
195194 # since mergedLogs is sorted by committerDate, we can break here
196195 if targetDate .year > logDate .year or targetDate .month > logDate .month or targetDate .day > logDate .day :
197196 return False
0 commit comments