+ def compare (self, other):
+ return sign (time.mktime (self.date) - time.mktime (other.date))
+
+
+ def check_diff_chunk (self, filename, chunk):
+ removals = []
+ def note_removal (m):
+ removals.append (m.group (1))
+
+ re.sub ('\n-([^\n]+)', note_removal, chunk)
+
+ if removals == []:
+ return True
+ if not os.path.exists (filename):
+ return False
+
+ contents = open (filename).read ()
+ for r in removals:
+ if r not in contents:
+ return False
+
+ return True
+
+ def check_diff (self):
+ chunks = re.split ('\ndiff --git ', self.diff)
+
+ ok = True
+ for c in chunks:
+ m = re.search ('^a/([^ ]+)', c)
+ if not m:
+ continue
+
+ file = m.group (1)
+
+ c = re.sub('\n--- [^\n]+', '', c)
+ ok = ok and self.check_diff_chunk (file, c)
+ if not ok:
+ break
+
+ return ok