Author: mhenoch Date: Wed Mar 5 04:20:37 2008 New Revision: 173 Modified: cl-darcs/trunk/cmdline.lisp Log: Use WITH-REPO for "record" Modified: cl-darcs/trunk/cmdline.lisp ============================================================================== --- cl-darcs/trunk/cmdline.lisp (original) +++ cl-darcs/trunk/cmdline.lisp Wed Mar 5 04:20:37 2008 @@ -237,48 +237,48 @@ :help "ask for extra dependencies")) (define-darcs-command record - (author all-patches patch-name ask-deps) + (author all-patches patch-name ask-deps repodir) (&rest files) "Save changes in the working copy to the repository as a patch." - (let* ((repo (find-repo)) - (author (or author - ;; XXX: other ways to indicate author - (progn - (format *query-io* "~&Who is the author? ") - (read-line *query-io*)))) - (patch-name (or patch-name - (progn - (format *query-io* "~&What is the patch name? ") - (read-line *query-io*)))) - (files (mapcar - (lambda (file) - (setf file (enough-namestring file repo)) - (if (fad:directory-exists-p file) - (sanitize-filename file :type :directory) - (sanitize-filename file :type :file))) - files))) - ;; XXX: long log - - (let ((patches (diff-repo repo))) - (flet ((ask (patch) - ;; If any files were specified, use only patches - ;; touching those files/directories. - (if (or (null files) - (and (typep patch 'file-patch) - (member (patch-filename patch) files :test #'equal)) - (and (typep patch 'directory-patch) - (member (patch-directory patch) files :test #'equal))) - ;; If all-patches was requested, record all patches - ;; matching the file criterion. - (or all-patches + (with-repo repodir + (let* ((author (or author + ;; XXX: other ways to indicate author (progn - (display-patch patch *query-io*) - (y-or-n-p "Record patch ~A?" patch))) - nil))) - (record-patches repo patch-name author :now nil - (select-patches patches #'ask)) - (format t "~&Finished recording patch '~A'~%" patch-name) - 0)))) + (format *query-io* "~&Who is the author? ") + (read-line *query-io*)))) + (patch-name (or patch-name + (progn + (format *query-io* "~&What is the patch name? ") + (read-line *query-io*)))) + (files (mapcar + (lambda (file) + (setf file (enough-namestring file repodir)) + (if (fad:directory-exists-p file) + (sanitize-filename file :type :directory) + (sanitize-filename file :type :file))) + files))) + ;; XXX: long log + + (let ((patches (diff-repo repodir))) + (flet ((ask (patch) + ;; If any files were specified, use only patches + ;; touching those files/directories. + (if (or (null files) + (and (typep patch 'file-patch) + (member (patch-filename patch) files :test #'equal)) + (and (typep patch 'directory-patch) + (member (patch-directory patch) files :test #'equal))) + ;; If all-patches was requested, record all patches + ;; matching the file criterion. + (or all-patches + (progn + (display-patch patch *query-io*) + (y-or-n-p "Record patch ~A?" patch))) + nil))) + (record-patches repodir patch-name author :now nil + (select-patches patches #'ask)) + (format t "~&Finished recording patch '~A'~%" patch-name) + 0))))) (define-darcs-command pull (all-patches repodir)
participants (1)
-
mhenoch@common-lisp.net