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

mhenoch at common-lisp.net mhenoch at common-lisp.net
Sun Oct 22 12:38:57 UTC 2006


Author: mhenoch
Date: Sun Oct 22 08:38:57 2006
New Revision: 60

Modified:
   cl-darcs/trunk/apply-patch.lisp
   cl-darcs/trunk/prefs.lisp
Log:
Add has-prefs-dir.  Don't apply CHANGE-PREF-PATCHes unless there is a prefs directory.


Modified: cl-darcs/trunk/apply-patch.lisp
==============================================================================
--- cl-darcs/trunk/apply-patch.lisp	(original)
+++ cl-darcs/trunk/apply-patch.lisp	Sun Oct 22 08:38:57 2006
@@ -89,15 +89,18 @@
   (apply-patch-list (patches patch) repodir))
 
 (defmethod apply-patch ((patch change-pref-patch) repodir)
-  (with-accessors ((pref change-pref-which)
-		   (from change-pref-from)
-		   (to change-pref-to)) patch
-    (let ((old-value (or (get-pref repodir pref) "")))
-      (unless (string= from old-value)
-	(warn
-	 "While changing pref ~S to ~S, expected old value to be ~S, but it was ~S."
-	 pref to from old-value))
-      (set-pref repodir pref to))))
+  ;; Maybe we're applying the patch to a pristine directory, in which
+  ;; case we don't care about preferences.
+  (when (has-prefs-dir repodir)
+    (with-accessors ((pref change-pref-which)
+		     (from change-pref-from)
+		     (to change-pref-to)) patch
+      (let ((old-value (or (get-pref repodir pref) "")))
+	(unless (string= from old-value)
+	  (warn
+	   "While changing pref ~S to ~S, expected old value to be ~S, but it was ~S."
+	   pref to from old-value))
+	(set-pref repodir pref to)))))
 
 (defmethod apply-patch ((patch add-file-patch) repodir)
   "Create a file in REPODIR, by PATCH."

Modified: cl-darcs/trunk/prefs.lisp
==============================================================================
--- cl-darcs/trunk/prefs.lisp	(original)
+++ cl-darcs/trunk/prefs.lisp	Sun Oct 22 08:38:57 2006
@@ -16,6 +16,13 @@
 
 (in-package :darcs)
 
+(defun has-prefs-dir (repo)
+  "Return true if REPO has a _darcs/prefs subdirectory."
+  ;; This is currently only used for checking whether we should write
+  ;; preferences, so it doesn't matter that this implementation
+  ;; doesn't work for HTTP.
+  (fad:directory-exists-p (upath-subdir repo '("_darcs" "prefs"))))
+
 (defun read-prefs (upath)
   "Read all preferences from repository at UPATH.
 Return an alist with strings."



More information about the Cl-darcs-cvs mailing list