[Cl-darcs-cvs] r24 - cl-darcs/trunk

mhenoch at common-lisp.net mhenoch at common-lisp.net
Wed Jul 12 14:42:38 UTC 2006


Author: mhenoch
Date: Wed Jul 12 10:42:38 2006
New Revision: 24

Modified:
   cl-darcs/trunk/repo.lisp
Log:
Add get-common-and-uncommon


Modified: cl-darcs/trunk/repo.lisp
==============================================================================
--- cl-darcs/trunk/repo.lisp	(original)
+++ cl-darcs/trunk/repo.lisp	Wed Jul 12 10:42:38 2006
@@ -132,3 +132,17 @@
 	     (write-byte 10 f)
 	     (print-patchinfos (car patchinfo-list)))))))))
 
+(defun get-common-and-uncommon (ours theirs)
+  "Given patchsets OURS and THEIRS, find common and uncommon patches.
+OURS and THEIRS are lists of lists of patchinfos, as returned by
+`read-repo-patch-list'.  Three values are returned: a list of
+patchinfos that appear in both sets, a list of patchinfos that
+appear only in OURS, and a list of patchinfos that appear only in
+THEIRS."
+  ;; Of course, there are possible optimizations here, in particular
+  ;; regarding tags, but this will do for now.
+  (let ((ours-list (apply #'append (reverse ours)))
+	(theirs-list (apply #'append (reverse theirs))))
+    (values (union ours-list theirs-list :test #'equalp)
+	    (set-difference ours-list theirs-list :test #'equalp)
+	    (set-difference theirs-list ours-list :test #'equalp))))



More information about the Cl-darcs-cvs mailing list