[Cl-darcs-cvs] r171 - cl-darcs/trunk
mhenoch at common-lisp.net
mhenoch at common-lisp.net
Wed Mar 5 09:01:42 UTC 2008
Author: mhenoch
Date: Wed Mar 5 04:01:41 2008
New Revision: 171
Modified:
cl-darcs/trunk/cmdline.lisp
Log:
Implement "pull" command. Remove obsolete handler case.
Modified: cl-darcs/trunk/cmdline.lisp
==============================================================================
--- cl-darcs/trunk/cmdline.lisp (original)
+++ cl-darcs/trunk/cmdline.lisp Wed Mar 5 04:01:41 2008
@@ -49,11 +49,6 @@
(progn
(warn "~A didn't give a proper exit code." command)
0)))
- ;; Catch wrong number of arguments
- (program-error (c)
- (format *error-output* "~&Program error: ~A" c)
- (command-usage command)
- 1)
(invalid-arguments (c)
(with-accessors ((ctrl simple-condition-format-control)
(args simple-condition-format-arguments)) c
@@ -262,3 +257,39 @@
(format t "~&Finished recording patch '~A'~%" patch-name)
0))))
+(define-darcs-command pull
+ (all-patches repodir)
+ (&rest from-repositories)
+ "Copy and apply patches from another repository to this one."
+ (let* ((ourrepo
+ (if repodir
+ (or (fad:directory-exists-p repodir)
+ (error "Directory ~A does not exist." repodir))
+ (find-repo)))
+ ;; If explicit --repodir argument was specified, change directory.
+ ;; Otherwise, leave it, even if the actual repository is in a
+ ;; parent directory.
+ (*default-pathname-defaults*
+ (if (null repodir)
+ *default-pathname-defaults*
+ (fad:pathname-as-directory ourrepo))))
+
+ (if from-repositories
+ ;; Get truename for all repositories, if they are local paths.
+ (map-into
+ from-repositories
+ (lambda (dir)
+ (setf dir (make-upath dir))
+ (when (typep dir 'pathname)
+ (setf dir (or
+ (fad:directory-exists-p dir)
+ (error "Directory ~A does not exist." dir))))
+ dir)
+ from-repositories)
+ ;; If no remote repository specified, use the default one.
+ (setf from-repositories (list nil)))
+
+ (dolist (theirrepo from-repositories)
+ (pull ourrepo theirrepo :select-patches (if all-patches :all :ask)))
+
+ 0))
More information about the Cl-darcs-cvs
mailing list