/[meta-cvs]/meta-cvs/F-233AD6EEE14894A7303F09519A2AB734
ViewVC logotype

Diff of /meta-cvs/F-233AD6EEE14894A7303F09519A2AB734

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.69 by kaz, Sat Oct 5 18:09:48 2002 UTC revision 1.69.2.19 by kaz, Wed Apr 23 05:37:35 2003 UTC
# Line 2  Line 2 
2  ;;; which is distributed under the GNU license.  ;;; which is distributed under the GNU license.
3  ;;; Copyright 2002 Kaz Kylheku  ;;; Copyright 2002 Kaz Kylheku
4    
5    ;; Clear out requires for mcvs-upgrade to work right.
6    (setf *modules* nil)
7    
8  (require "create")  (require "create")
9  (require "checkout")  (require "checkout")
10  (require "grab")  (require "grab")
11  (require "add")  (require "add")
12  (require "remove")  (require "remove")
13  (require "move")  (require "move")
14    (require "link")
15  (require "update")  (require "update")
16  (require "filt")  (require "filt")
17  (require "generic")  (require "generic")
# Line 17  Line 21 
21  (require "purge")  (require "purge")
22  (require "restore")  (require "restore")
23  (require "prop")  (require "prop")
24    (require "watch")
25  (require "split")  (require "split")
26  (require "restart")  (require "restart")
27  (require "error")  (require "error")
# Line 24  Line 29 
29  (require "find-bind")  (require "find-bind")
30  (provide "mcvs-main")  (provide "mcvs-main")
31    
32  (define-option-constant *cvs-options*  (define-option-constant *global-options*
33    (0 arg "H" "help" "Q" "q" "r" "w" "l" "n" "t" "v" "f" "version"    (0 arg "H" "help" "Q" "q" "r" "w" "l" "n" "t" "v" "f" "version"
34           "meta" "metaonly" "nometa" "error-continue" "error-terminate"           "meta" "metaonly" "nometa" "error-continue" "error-terminate"
35           "debug")           "error-bail" "debug")
36    (1 arg "T" "e" "d" "r" "z" "s" "i"))    (1 arg "T" "e" "d" "r" "z" "s" "i" "up"))
37    
38  (define-option-constant *help-options*)  (define-option-constant *help-options*)
39    
# Line 44  Line 49 
49    (0 arg "f")    (0 arg "f")
50    (1 arg "r" "D" "d" "k" "j"))    (1 arg "r" "D" "d" "k" "j"))
51    
52    (define-option-constant *export-options*
53      (0 arg "f")
54      (1 arg "r" "D" "d" "k"))
55    
56  (define-option-constant *add-options*  (define-option-constant *add-options*
57    (0 arg "R")    (0 arg "R")
58    (1 arg "k" "m"))    (1 arg "k" "m"))
# Line 52  Line 61 
61    (0 arg "R"))    (0 arg "R"))
62    
63  (define-option-constant *update-options*  (define-option-constant *update-options*
64    (0 arg "A" "f" "p")    (0 arg "A" "C" "f" "p")
65    (1 arg "k" "r" "D" "j" "I" "W"))    (1 arg "k" "r" "D" "j" "I" "W"))
66    
67  (define-option-constant *switch-options*  (define-option-constant *switch-options*
# Line 94  Line 103 
103  (define-option-constant *filt-options*  (define-option-constant *filt-options*
104    (1 arg "r" "D"))    (1 arg "r" "D"))
105    
106    (define-option-constant *remote-filt-options*
107      (1 arg "r" "D"))
108    
109  (define-option-constant *move-options*)  (define-option-constant *move-options*)
110    (define-option-constant *link-options*)
111  (define-option-constant *convert-options*)  (define-option-constant *convert-options*)
112  (define-option-constant *branch-options*)  (define-option-constant *branch-options*)
113  (define-option-constant *merge-options*)  
114  (define-option-constant *remerge-options*)  (define-option-constant *merge-options*
115      (1 arg "k"))
116    
117    (define-option-constant *remerge-options*
118      (1 arg "k"))
119    
120  (define-option-constant *list-branches-options*)  (define-option-constant *list-branches-options*)
121  (define-option-constant *remap-options*)  (define-option-constant *remap-options*)
122  (define-option-constant *purge-options*)  (define-option-constant *purge-options*)
# Line 108  Line 126 
126    (1 arg "set" "clear" "remove")    (1 arg "set" "clear" "remove")
127    (2 arg "value"))    (2 arg "value"))
128    
129    (define-option-constant *watch-options*
130      (0 arg "on" "off")
131      (1 arg "add" "remove"))
132    
133    (define-option-constant *watchers-options*)
134    (define-option-constant *edit-options*)
135    (define-option-constant *unedit-options*)
136    (define-option-constant *editors-options*)
137    
138  (defun mcvs-help (global-options command-options args)  (defun mcvs-help (global-options command-options args)
139    (declare (special *usage* *mcvs-command-table*)    (declare (special *usage* *mcvs-command-table*)
140             (ignore global-options command-options))             (ignore global-options command-options))
# Line 139  Line 166 
166     ("grab" ,#'mcvs-grab-wrapper ,*grab-help* ,*grab-options*)     ("grab" ,#'mcvs-grab-wrapper ,*grab-help* ,*grab-options*)
167     ("checkout" ,#'mcvs-checkout-wrapper ,*checkout-help* ,*checkout-options*)     ("checkout" ,#'mcvs-checkout-wrapper ,*checkout-help* ,*checkout-options*)
168     ("co" ,#'mcvs-checkout-wrapper ,*checkout-help* ,*checkout-options*)     ("co" ,#'mcvs-checkout-wrapper ,*checkout-help* ,*checkout-options*)
169       ("export" ,#'mcvs-export-wrapper ,*export-help* ,*export-options*)
170       ("ex" ,#'mcvs-export-wrapper ,*export-help* ,*export-options*)
171     ("add" ,#'mcvs-add-wrapper ,*add-help* ,*add-options*)     ("add" ,#'mcvs-add-wrapper ,*add-help* ,*add-options*)
172     ("remove" ,#'mcvs-remove-wrapper ,*remove-help* ,*remove-options*)     ("remove" ,#'mcvs-remove-wrapper ,*remove-help* ,*remove-options*)
173     ("rm" ,#'mcvs-remove-wrapper ,*remove-help* ,*remove-options*)     ("rm" ,#'mcvs-remove-wrapper ,*remove-help* ,*remove-options*)
174     ("move" ,#'mcvs-move-wrapper nil ,*move-options*)     ("move" ,#'mcvs-move-wrapper ,*move-help* ,*move-options*)
175     ("mv" ,#'mcvs-move-wrapper nil ,*move-options*)     ("mv" ,#'mcvs-move-wrapper ,*move-help* ,*move-options*)
176       ("link" ,#'mcvs-link-wrapper ,*link-help* ,*link-options*)
177       ("ln" ,#'mcvs-link-wrapper ,*link-help* ,*link-options*)
178     ("update" ,#'mcvs-update-wrapper nil ,*update-options*)     ("update" ,#'mcvs-update-wrapper nil ,*update-options*)
179     ("up" ,#'mcvs-update-wrapper nil ,*update-options*)     ("up" ,#'mcvs-update-wrapper nil ,*update-options*)
180     ("commit" ,#'mcvs-commit-wrapper nil ,*commit-options*)     ("commit" ,#'mcvs-commit-wrapper nil ,*commit-options*)
# Line 156  Line 187 
187     ("annotate" ,#'mcvs-annotate-wrapper nil ,*annotate-options*)     ("annotate" ,#'mcvs-annotate-wrapper nil ,*annotate-options*)
188     ("filt" ,#'mcvs-filt-wrapper nil ,*filt-options*)     ("filt" ,#'mcvs-filt-wrapper nil ,*filt-options*)
189     ("fi" ,#'mcvs-filt-wrapper nil ,*filt-options*)     ("fi" ,#'mcvs-filt-wrapper nil ,*filt-options*)
190       ("remote-filt" ,#'mcvs-remote-filt-wrapper nil ,*remote-filt-options*)
191       ("rfilt" ,#'mcvs-remote-filt-wrapper nil ,*remote-filt-options*)
192       ("rfi" ,#'mcvs-remote-filt-wrapper nil ,*remote-filt-options*)
193     ("convert" ,#'mcvs-convert-wrapper nil ,*convert-options*)     ("convert" ,#'mcvs-convert-wrapper nil ,*convert-options*)
194     ("branch" ,#'mcvs-branch-wrapper nil ,*branch-options*)     ("branch" ,#'mcvs-branch-wrapper ,*branch-help* ,*branch-options*)
195     ("switch" ,#'mcvs-switch-wrapper nil ,*switch-options*)     ("switch" ,#'mcvs-switch-wrapper nil ,*switch-options*)
196     ("sw" ,#'mcvs-switch-wrapper nil ,*switch-options*)     ("sw" ,#'mcvs-switch-wrapper nil ,*switch-options*)
197     ("merge" ,#'mcvs-merge-wrapper nil ,*merge-options*)     ("merge" ,#'mcvs-merge-wrapper nil ,*merge-options*)
# Line 167  Line 201 
201     ("purge" ,#'mcvs-purge-wrapper nil ,*purge-options*)     ("purge" ,#'mcvs-purge-wrapper nil ,*purge-options*)
202     ("restore" ,#'mcvs-restore-wrapper nil ,*restore-options*)     ("restore" ,#'mcvs-restore-wrapper nil ,*restore-options*)
203     ("remap" ,#'mcvs-remap-wrapper nil ,*remap-options*)     ("remap" ,#'mcvs-remap-wrapper nil ,*remap-options*)
204     ("prop" ,#'mcvs-prop-wrapper nil ,*prop-options*)))     ("prop" ,#'mcvs-prop-wrapper nil ,*prop-options*)
205       ("watch" ,#'mcvs-watch-wrapper nil ,*watch-options*)
206       ("watchers" ,#'mcvs-watchers-wrapper nil ,*watchers-options*)
207       ("edit" ,#'mcvs-edit-wrapper nil ,*edit-options*)
208       ("unedit" ,#'mcvs-unedit-wrapper nil ,*unedit-options*)
209       ("editors" ,#'mcvs-editors-wrapper nil ,*editors-options*)))
210    
211  (defconstant *usage*  (defconstant *usage*
212  "Meta-CVS command syntax:  "Meta-CVS command syntax:
# Line 180  Global options: Line 219  Global options:
219                       help specific to that command is printed instead.                       help specific to that command is printed instead.
220    -Q                 Very quiet, generate output only for serious problems. (*)    -Q                 Very quiet, generate output only for serious problems. (*)
221    -q                 Somewhat quiet, some informational messages suppresed. (*)    -q                 Somewhat quiet, some informational messages suppresed. (*)
222      -n                 Dry run; do not modify filesystem. (*)
223    --debug            Verbose debug output; -Q and -q are ignored but still    --debug            Verbose debug output; -Q and -q are ignored but still
224                       passed to CVS.                       passed to CVS.
225    -r                 Make working files read-only. (@)    -r                 Make working files read-only. (@)
# Line 197  Global options: Line 237  Global options:
237    --nometa           Exclude metafiles from the set of files to operate on.    --nometa           Exclude metafiles from the set of files to operate on.
238    --error-continue   Instead of interactive error handling, automatically    --error-continue   Instead of interactive error handling, automatically
239                       continue all continuable errors.                       continue all continuable errors.
240      --error-bail       Terminate with cleanup when error happens instead
241                         of interactive error handling.
242    --error-terminate  Terminate without cleanup when an error happens instead    --error-terminate  Terminate without cleanup when an error happens instead
243                       of interactive error handling (use with care).                       of interactive error handling (use with care).
244    -T tempdir         Place temporary files in tempdir. (@)    -T tempdir         Place temporary files in tempdir. (@)
245    -e editor          Edit messages with editor. (*)    -e editor          Edit messages with editor. (*)
246    -d root            Specify CVSROOT. (@)    -d root            Specify CVSROOT. (@)
247    -z gzip-level      Specify compression level. (@)    -z gzip-level      Specify compression level. (@)
248      --up N             Escape out of N levels of sandbox nesting before executing
249                         operation.
250    
251    Notes: (*) option processed by Meta-CVS and passed to CVS too.    Notes: (*) option processed by Meta-CVS and passed to CVS too.
252           (@) option merely passed to CVS.           (@) option merely passed to CVS.
# Line 214  Commands: Line 258  Commands:
258    grab               Take a snapshot of an external source tree, such    grab               Take a snapshot of an external source tree, such
259                       as a third-party release, and incorporate it into                       as a third-party release, and incorporate it into
260                       the working copy. Tries to discover file moves.                       the working copy. Tries to discover file moves.
261    checkout (co)      Retrieve a Meta-CVS project from CVS and build    checkout (co)      Retrieve a Meta-CVS project from the repository to
262                         create a working copy.
263      export (ex)        Retrieve a Meta-CVS project without creating a
264                       working copy.                       working copy.
265    add                Place files (or directories with add -R) under    add                Place files (or directories with add -R) under
266                       version control.                       version control.
267    remove (rm)        Remove files or directories.    remove (rm)        Remove files or directories.
268    move (mv)          Rename files and directories.    move (mv)          Rename files and directories.
269      link (ln)          Create a versioned symbolic link.
270    update (up)        Incorporate latest changes from repository into    update (up)        Incorporate latest changes from repository into
271                       working copy.                       working copy.
272    commit (ci)        Incorporate outstanding changes in the working copy    commit (ci)        Incorporate outstanding changes in the working copy
# Line 236  Commands: Line 283  Commands:
283                       version information about every individual line of text.                       version information about every individual line of text.
284    filt (fi)          Act as a text filter, which converts Meta-CVS F- file    filt (fi)          Act as a text filter, which converts Meta-CVS F- file
285                       names to readable paths, according to the current mapping.                       names to readable paths, according to the current mapping.
286      remote-filt (rfi)  Remote version of filt, requires module name.
287    branch             Create a managed branch. Meta-CVS managed branches keep    branch             Create a managed branch. Meta-CVS managed branches keep
288                       track of what has been merged where, so users don't have                       track of what has been merged where, so users don't have
289                       to track merges with tags at all.                       to track merges with tags at all.
# Line 255  Commands: Line 303  Commands:
303                       directory under cryptic names.                       directory under cryptic names.
304    prop               Manipulate properties.    prop               Manipulate properties.
305                         prop --set <bool-prop-name> [ files ... ]                         prop --set <bool-prop-name> [ files ... ]
306                         prop --clear <bool-prop-name> [ files ... ]                         prop --clear <bool-prop-name> [ files ... ]
307                         prop --value <prop-name> <new-value> [ files ... ]                         prop --value <prop-name> <new-value> [ files ... ]
308                         prop --remove <prop-name> [ files ... ]                         prop --remove <prop-name> [ files ... ]
309                       The ``exec'' property represents the execute permission                       The ``exec'' property represents the execute permission
310                       of a file.  More than one --set, --clear, --value                       of a file.  More than one --set, --clear, --value
311                       or --remove may be specified before the files.                       or --remove may be specified before the files.
312      watch              Manipulate per-file CVS watch settings.
313                           watch --on [ files ... ]
314                           watch --off [ files ... ]
315                           watch --add <action> [ files ... ]
316                           watch --remove <action> [ files ... ]
317      watchers           See who is watching files.
318      edit               Indicate the intent to edit a watched file.
319      unedit             Retract the indication signaled by edit.
320      editors            See who is editing files.
321    convert            Convert a CVS module to a Meta-CVS project. This requires    convert            Convert a CVS module to a Meta-CVS project. This requires
322                       filesystem-level access to the repository. This is                       filesystem-level access to the repository. This is
323                       currently an experimental command that is known not                       currently an experimental command that is known not
324                       to work 100%.")                       to work 100%.")
325    
 (defvar *options*)  
 (defvar *args*)  
   
326  (defun mcvs-execute (args)  (defun mcvs-execute (args)
327    (handler-bind ((error #'mcvs-error-handler))    (let* ((*interactive-error-io* (open (unix-funcs:ctermid) :direction :io))
328      (multiple-value-bind (global-options global-args)           (*mcvs-error-treatment* (if *interactive-error-io*
329                           (parse-opt args *cvs-options*)                                     :interactive
330        (setf global-options (filter-global-options global-options))                                     :bail)))
331        (handler-bind ((error #'mcvs-error-handler))
332        (find-bind (:test #'string= :key #'first)        (multiple-value-bind (global-options global-args)
333                   ((help-long "help") (help "H") (quiet "q")                             (parse-opt args *global-options*)
334                    (very-quiet "Q") (version "v") (version-long "version")          (setf global-options (filter-global-options global-options))
335                    (editor "e") (interpret-file "i"))  
336                   global-options          (when *print-usage*
         (setf *args* global-args)  
         (setf *options* global-options)  
         (when (or help-long help)  
337            (terpri)            (terpri)
338            (write-line *usage*)            (write-line *usage*)
339            (terpri)            (terpri)
340            (throw 'mcvs-terminate nil))            (throw 'mcvs-terminate nil))
341          (when (or version version-long)  
342            (let* ((vers (split-words "$Name$" "$:- "))          (when (not (first global-args))
343                   (major (third vers))            (write-line "Meta-CVS requires a command argument." *error-output*)
344                   (minor (fourth vers)))            (write-line "Use mcvs -H to view help." *error-output*)
345              (if (and major minor)            (throw 'mcvs-terminate nil))
346                (format t "Meta-CVS version ~a.~a (c) 2002 Kaz Kylheku~%"  
347                        major minor)          (let ((command (find (first global-args) *mcvs-command-table*
348                (format t "Meta-CVS unknown version (c) 2002 Kaz Kylheku~%"))                               :key #'first
349              (throw 'mcvs-terminate nil)))                               :test #'string=)))
350          (when editor            (when (not command)
351            (setf *editor* (second editor)))              (error "~a is not a recognized mcvs command."
352          (cond                     (first global-args)))
353            (very-quiet (setf *mcvs-chatter-level* *mcvs-silent*))            (destructuring-bind (name func help-text opt-spec) command
354            (quiet (setf *mcvs-chatter-level* *mcvs-terse*)))              (declare (ignore name help-text))
355          (when interpret-file              (multiple-value-bind (command-options command-args)
356            (load (second interpret-file))                                   (parse-opt (rest global-args) opt-spec)
357            (throw 'mcvs-terminate nil)))                (funcall func global-options command-options command-args))))))
358        nil))
       (when (not (first global-args))  
         (write-line "Meta-CVS requires a command argument.")  
         (write-line "Use mcvs -H to view help.")  
         (throw 'mcvs-terminate nil))  
   
       (let ((command (find (first global-args) *mcvs-command-table*  
                            :key #'first  
                            :test #'string=)))  
         (when (not command)  
           (error "~a is not a recognized mcvs command."  
                  (first global-args)))  
         (destructuring-bind (name func help-text opt-spec) command  
           (declare (ignore name help-text))  
           (multiple-value-bind (command-options command-args)  
                                (parse-opt (rest global-args) opt-spec)  
             (funcall func global-options command-options command-args))))))  
   nil)  
359    
360  (defun mcvs-debug-shell ()  (defun mcvs-debug-shell ()
361    (let ((counter 0)    (let ((counter 0)

Legend:
Removed from v.1.69  
changed lines
  Added in v.1.69.2.19

  ViewVC Help
Powered by ViewVC 1.1.5