/[meta-cvs]/meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3
ViewVC logotype

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.220 - (hide annotations)
Sun Oct 27 00:27:17 2002 UTC (11 years, 5 months ago) by kaz
Branch: MAIN
Changes since 1.219: +11 -0 lines
Merging from mcvs-1-0-branch:

New link command for creating symlinks.

* mcvs-main.lisp (*link-options*): New option constant.
(*mcvs-command-table*): Entries for new command added.
(*usage*): Help text added.

* link.lisp: New file.
(mcvs-link, mcvs-link-wrapper): New functions.
1 kaz 1.218 2002-10-26 Kaz Kylheku <kaz@ashi.footprints.net>
2    
3 kaz 1.220 New link command for creating symlinks.
4    
5     * mcvs-main.lisp (*link-options*): New option constant.
6     (*mcvs-command-table*): Entries for new command added.
7     (*usage*): Help text added.
8    
9     * link.lisp: New file.
10     (mcvs-link, mcvs-link-wrapper): New functions.
11    
12     2002-10-26 Kaz Kylheku <kaz@ashi.footprints.net>
13    
14 kaz 1.219 * code/grab.lisp (*grab-help*): Rewritten.
15    
16     * code/checkout.lisp (*export-help*): Formatted for 80 columns.
17    
18     2002-10-26 Kaz Kylheku <kaz@ashi.footprints.net>
19    
20 kaz 1.218 * code/mcvs-main.lisp (*usage*): Expand tabs to spaces.
21    
22     * code/add.lisp (*add-help*): Likewise.
23    
24     * code/remove.lisp (*remove-help*): Likewise.
25    
26     * code/create.lisp (*create-help*): Likewise.
27    
28     2002-10-26 Kaz Kylheku <kaz@ashi.footprints.net>
29    
30     * code/purge.lisp (mcvs-purge): Get rid the processing of the
31     nonexistent -n option from purge code. The global option -n does an
32     adequate job of implementing a dry run.
33    
34     2002-10-26 Kaz Kylheku <kaz@ashi.footprints.net>
35    
36     * code/mapping.lisp (mapping-removed-files): Skip over the MCVS/CVS
37     directory, which can contain CVS-generated files with F- names and a ,t
38     suffix. These trip up the algorithm.
39    
40 kaz 1.217 2002-10-21 Kaz Kylheku <kaz@ashi.footprints.net>
41    
42     Add help to move command.
43    
44     * code/mcvs-main.lisp (*mcvs-command-table*): Added *move-help*.
45    
46     * code/move.lisp (*mcvs-help*): New constant.
47    
48 kaz 1.216 2002-10-20 Kaz Kylheku <kaz@ashi.footprints.net>
49    
50     Fix broken ``filt -r''.
51    
52     * code/mapping.lisp (mapping-read-raw-map): New function; reads
53     map from stream and does sanity check.
54     (mapping-read): Argument can be a filename or stream. Call to
55     mapping-read-raw-map to factor out common code for both cases.
56    
57     * code/filt.lisp (filt-select-map): This was still just
58     reading the raw structure from the cvs coprocess, which worked under
59     the old map format, when the internal and external representations
60     were the same. Now it calls mapping-read on the stream.
61    
62     2002-10-19 Kaz Kylheku <kaz@ashi.footprints.net>
63    
64     * UPGRADE-EXISTING: New file.
65    
66     2002-10-19 Kaz Kylheku <kaz@ashi.footprints.net>
67    
68     * code/mcvs-main.lisp: Clear out *modules* list before requiring
69     modules. This is needed so that mcvs-upgrade works, because there
70     is already a populated list in the Lisp image.
71    
72 kaz 1.215 2002-10-17 Kaz Kylheku <kaz@ashi.footprints.net>
73    
74     Detect failure to start text editor.
75    
76     * code/unix.lisp (*editor*, invoke-editor-on): Change name of *editor*
77     to *mcvs-editor*, due to name-clash with a CLISP extension!
78    
79     * code/mcvs-main.lisp (mcvs-execute): Likewise.
80    
81     * code/types.lisp (types-let-user-edit): Provide an individual
82     restart-case block around the invocation of the text editor,
83     which lets the user re-try the editor.
84    
85 kaz 1.210 2002-10-13 Kaz Kylheku <kaz@ashi.footprints.net>
86    
87 kaz 1.214 * code/install.sh: generate a script called mcvs-upgrade.
88    
89     2002-10-13 Kaz Kylheku <kaz@ashi.footprints.net>
90    
91 kaz 1.213 * code/prop.lisp (mcvs-prop): Read *mcvs-map*, not *mcvs-map-local*.
92    
93     2002-10-13 Kaz Kylheku <kaz@ashi.footprints.net>
94    
95 kaz 1.212 * code/mcvs-main.lisp (*watchers-options*): New constant.
96     (*edit-options*): Likewise.
97     (*unedit-options*): Likewise.
98     (*editors-options*): Likewise.
99     (*mcvs-command-table*): Added watchers, edit unedit, and editors
100     commands.
101     (*usage*): Updated.
102    
103     * code/generic.lisp (mcvs-watchers-wrapper, mcvs-edit-wrapper,
104     mcvs-unedit-wrapper, mcvs-editors-wrapper): New functions.
105    
106     2002-10-13 Kaz Kylheku <kaz@ashi.footprints.net>
107    
108 kaz 1.211 * code/mcvs-main.lisp (*usage*): Describe export and watch commands.
109    
110     2002-10-13 Kaz Kylheku <kaz@ashi.footprints.net>
111    
112     * code/mcvs-main.lisp (*watch-options*): New constant.
113     (*mcvs-command-table*): New entry for watch command.
114    
115     * code/watch.lisp: New file.
116    
117     2002-10-13 Kaz Kylheku <kaz@ashi.footprints.net>
118    
119 kaz 1.210 * code/mcvs-main.lisp (*export-options*): New constant.
120     (*mcvs-command-table*): New entries for export command.
121    
122 kaz 1.211 * code/checkout.lisp (mcvs-checkout): New keyword to specify export
123     behavior. This causes cvs export to be run instead of checkout,
124     and the MCVS directory to be deleted after.
125 kaz 1.210 (mcvs-checkout-wrapper): Common function factored out into a flet.
126 kaz 1.211 (mcvs-export-wrapper): New function. Verifies that one of -D and -r
127     options is present, then runs mcvs-checkout, specifying export
128     behavior.
129 kaz 1.210
130 kaz 1.206 2002-10-12 Kaz Kylheku <kaz@ashi.footprints.net>
131    
132 kaz 1.209 * code/mcvs-main.lisp (*update-options*): Added -C option.
133    
134     * code/update.lisp (mcvs-update): Fall back on the mcvs-generic
135     if --metaonly or --nometa is specified to run CVS on specific
136     files.
137    
138     2002-10-12 Kaz Kylheku <kaz@ashi.footprints.net>
139    
140 kaz 1.208 * code/filt.lisp (mcvs-filt): Do not filter F- names if
141     immediately preceded by MCVS/ prefix.
142    
143     2002-10-12 Kaz Kylheku <kaz@ashi.footprints.net>
144    
145     * code/clisp-unix.lisp (execute-program): Provide debug traces
146     for command execution.
147    
148     2002-10-12 Kaz Kylheku <kaz@ashi.footprints.net>
149    
150 kaz 1.207 Rethink some decisions in the previous change. Reusing the
151     name posix.lisp for a new file will cause problems for people
152     using mcvs grab to keep up with Meta-CVS patches.
153    
154     * code/posix.lisp: Renamed to unix.lisp.
155    
156     * code/clisp-posix.lisp: Renamed back to clisp-unix.lisp, for
157     the sake of consistency.
158    
159     * code/system.lisp: Updated.
160    
161     * code/cmucl.lisp: Likewise.
162    
163     Don't call a new file posix.lisp, because
164     it can create confusion with the old file that used to be called
165     posix.lisp,
166    
167     2002-10-12 Kaz Kylheku <kaz@ashi.footprints.net>
168    
169 kaz 1.206 Minor reorganization.
170    
171 kaz 1.207 * code/posix.lisp: File renamed to paths.lisp, module renamed
172     to "paths".
173 kaz 1.206 (*editor*): Variable removed.
174     (arglist-to-command-string, execute-programs-xargs,
175     invoke-editor-on): Functions removed.
176    
177 kaz 1.207 * code/posix.lisp: New file.
178 kaz 1.206 (*editor*): Variable moved here from paths.lisp.
179     (arglist-to-command-string, invoke-editor-on): Functions moved here
180     from paths.lisp.
181    
182 kaz 1.207 * code/editor.lisp: New file.
183 kaz 1.206 (*argument-limit*): Variable definition moved here.
184     (execute-programs-xargs): Function moved here from paths.lisp.
185    
186 kaz 1.207 * code/clisp-unix.lisp: Renamed to clisp-posix.lisp.
187 kaz 1.206 Requires "posix" module now.
188     (*argument-limit*): Variable removed.
189    
190 kaz 1.207 * code/system.lisp: Remove references to old clisp-linux module.
191 kaz 1.206 Added requires for new paths and execute modules.
192    
193 kaz 1.207 * code/cmucl-unix.lisp (*argument-limit*): Variable definition removed.
194 kaz 1.206
195 kaz 1.205 2002-10-09 Kaz Kylheku <kaz@ashi.footprints.net>
196    
197     * code/add.lisp (*add-help*): Remove spurious text cut and pasted from
198     checkout help.
199    
200 kaz 1.196 2002-10-06 Kaz Kylheku <kaz@ashi.footprints.net>
201    
202 kaz 1.204 * code/prop.lisp (mcvs-prop): Result of real-to-abstract-path
203     must be canonicalized.
204    
205     * code/remove.lisp (mcvs-remove): Likewise.
206    
207     * code/generic.lisp (mcvs-generic): Likewise.
208    
209     2002-10-06 Kaz Kylheku <kaz@ashi.footprints.net>
210    
211 kaz 1.203 * code/move.lisp (move-guts, mcvs-move): Canonicalize the destination
212     path in mcvs-move, rather than mcvs-guts.
213    
214     2002-10-06 Kaz Kylheku <kaz@ashi.footprints.net>
215    
216 kaz 1.202 * code/create.lisp (mcvs-create): Add the DISPLACED filename
217     to the .cvsignore file.
218    
219     2002-10-06 Kaz Kylheku <kaz@ashi.footprints.net>
220    
221 kaz 1.201 * code/posix.lisp (path-prefix-equal): Handle empty strings.
222    
223     2002-10-06 Kaz Kylheku <kaz@ashi.footprints.net>
224    
225 kaz 1.200 * code/move.lisp (move-guts): If an error occurs for each
226     source in a multiple move, and the user skips each source,
227     generate the error that all sources were skipped.
228    
229     2002-10-06 Kaz Kylheku <kaz@ashi.footprints.net>
230    
231 kaz 1.199 * code/move.lisp (source-check): Generate error if a move
232     of the sandbox root is attempted.
233    
234     2002-10-06 Kaz Kylheku <kaz@ashi.footprints.net>
235    
236 kaz 1.198 * code/remap.lisp (mcvs-remap): Preserve property lists of
237     mapping entries, and pick up changes in execute permission.
238    
239     * code/mapping.lisp (mapping-convert-out): If the mapping entry's
240     executable flag is nil, then remove the :exec entry from the property
241     list.
242    
243     2002-10-06 Kaz Kylheku <kaz@ashi.footprints.net>
244    
245 kaz 1.197 * code/mapping.lisp (equal-filemaps): Repair completely broken
246     function.
247    
248     * code/move.lisp (mcvs-move): Added little hack for turning
249     no-op moves into errors. Without this the behavior is confusing,
250     since the program appears to do nothing.
251    
252     2002-10-06 Kaz Kylheku <kaz@ashi.footprints.net>
253    
254 kaz 1.196 * code/add.lisp (mcvs-add): Provide a continue restart around
255     the code that builds up the expanded-paths for each iteration of the
256     loop. Without this, errors in that code cause the program to bail, even
257     though errors in the rest of the loop body are continuable.
258    
259 kaz 1.189 2002-10-05 Kaz Kylheku <kaz@ashi.footprints.net>
260    
261 kaz 1.195 * code/dirwalk.lisp (dirwalk): If the argument is not a directory,
262     the callback must still be invoked. This was done prior to
263     a 2002-05-20 commit. I can't quite remember why it was changed;
264     but I seem to recall thinking about the new dirwalk-skip catch,
265     and how it must be always visible to the callback closure, so
266     that the (skip) mechanism works.
267    
268     2002-10-05 Kaz Kylheku <kaz@ashi.footprints.net>
269    
270 kaz 1.194 * code/add.lisp (mcvs-add): Reshuffle restart to a higher nesting
271     level, so that an error on one item won't abort the whole operation.
272    
273     2002-10-05 Kaz Kylheku <kaz@ashi.footprints.net>
274    
275 kaz 1.193 * code/convert.lisp (mcvs-convert): Maintenance so that this tool
276     at least runs, even though it doesn't do anything resembling a
277     reasonable conversion job.
278    
279     2002-10-05 Kaz Kylheku <kaz@ashi.footprints.net>
280    
281 kaz 1.192 * code/clisp-unix.lisp (guid-gen): Changes for Cygwin broke the
282     case when /dev/urandom is available.
283    
284     2002-10-05 Kaz Kylheku <kaz@ashi.footprints.net>
285    
286 kaz 1.191 * code/find-bind.lisp (find-bind): Allow empty variable list, as
287     described by the documented syntax.
288    
289     2002-10-05 Kaz Kylheku <kaz@ashi.footprints.net>
290    
291 kaz 1.190 * code/error.lisp (mcvs-error-handler): Simplify roundabout way
292     of printing error message.
293    
294     * code/mapping.lisp (mapping-write): Incorporate the low level error
295     message into the more informative error message.
296    
297     2002-10-05 Kaz Kylheku <kaz@ashi.footprints.net>
298    
299 kaz 1.189 Error messages no longer specify prefixes like "mcvs:" or
300     "mcvs-remove:".
301    
302     When no restarts are available, the error handler now adds the "mcvs:"
303     prefix when dumping the error text to the standard error stream,
304     and also adds a terminating newline.
305    
306     The inability to write to the MAP file is converted to a more
307     informative error message.
308    
309     New --debug option is supported to set the chatter level to 3.
310    
311     * code/chatter.lisp: Use the symbolic constant when defining the
312     default chatter level value.
313    
314     * code/mcvs-main.lisp (*cvs-options*, mcvs-help, mcvs-execute): Added
315     support for --debug option, and removed of prefixes from error
316     messages.
317    
318     * code/options.lisp (filter-global-options): Support --debug.
319     (parse-opt): Removed prefixes from error messages.
320    
321     * code/mapping.lisp (mapping-rename-files, mapping-dupe-check,
322     mapping-convert-in, mapping-synchronize, mapping-update): Removed
323     prefixes from error messages.
324     (mapping-write): Trap write error and convert to more informative
325     error message.
326    
327     * code/error.lisp (mcvs-error-handler): In the case when no restarts
328     are available, format the error message by adding the mcvs: prefix
329     and a terminating newline.
330    
331     * code/purge.lisp (mcvs-purge): Removed prefixes from error messages.
332    
333     * code/restore.lisp (mcvs-restore): Likewise.
334    
335     * code/move.lisp (move-guts, mcvs-move): Likewise.
336    
337     * code/grab.lisp (mcvs-grab): Likewise.
338    
339     * code/prop.lisp (mcvs-prop): Likewise.
340    
341     * code/filt.lisp (filt-select-map, mcvs-filt): Likewise.
342    
343     * code/branch.lisp (where-is-the-repository, mcvs-branch,
344     cvs-make-or-advance-tag, mcvs-merge, mcvs-list-branches,
345     mcvs-switch-wrapper): Likewise.
346    
347     * code/add.lisp (mcvs-add, mcvs-add): Likewise.
348    
349     * code/remove.lisp (mcvs-remove): Likewise.
350    
351     * code/convert.lisp (classify-tags, mcvs-convert): Likewise.
352    
353     * code/checkout.lisp (mcvs-checkout): Likewise.
354    
355     * code/generic.lisp (mcvs-generic, mcvs-diff-wrapper): Likewise.
356    
357     * code/create.lisp (mcvs-create, mcvs-create): Likewise.
358    
359     * code/remap.lisp (mcvs-remap, mcvs-remap): Likewise.
360    
361 kaz 1.188 2002-09-25 Kaz Kylheku <kaz@ashi.footprints.net>
362    
363     Minimal changes for building on Cygwin.
364    
365     * code/install.sh (space_check, dash_check): Function definitions
366     modified to conform to bash2.
367    
368     * code/clisp-unix.lisp (*have-dev-random*, *mcvs-random-state*):
369     New special variables.
370     (guid-gen): Rewritten to fall back on the Common Lisp random
371     function if /dev/urandom is not available.
372    
373 kaz 1.180 2002-09-21 Kaz Kylheku <kaz@ashi.footprints.net>
374    
375 kaz 1.187 * code/mcvs-main.lisp (*options*): New variable. Gives
376     scripts access to to some global options. The *args* variable now
377     holds only the remaining arguments after the options.
378     (mcvs-execute): Sets up *args* and *options* accordingly.
379     No longer parses out the --error-continue and --error-terminate
380     options.
381    
382     * code/options.lisp (filter-global-options): The handling of
383     --error-continue and --error-terminate is done here. This is
384     the place to handle options that must be removed (not passed
385     down to CVS) and which do not trigger immediate actions in
386     mcvs-execute.
387    
388     2002-09-21 Kaz Kylheku <kaz@ashi.footprints.net>
389    
390 kaz 1.186 * code/mcvs-main.lisp (*args*): New global variable. Gives
391 kaz 1.185 scripts access to command line.
392    
393     2002-09-21 Kaz Kylheku <kaz@ashi.footprints.net>
394    
395 kaz 1.184 * code/mcvs-main.lisp (*cvs-options*): Add -i parameter which
396     takes the name of a script to invoke.
397     (*usage*): Updated to describe new option.
398     (mcvs-execute): Parse out -i option and load the specified file.
399    
400     2002-09-21 Kaz Kylheku <kaz@ashi.footprints.net>
401    
402 kaz 1.183 * code/install.sh: Don't specify -K full option when running
403     specific, generated CLISP image already. When generating mcvs.mem,
404     load the compiled version mcvs-main, rather than mcvs-main.lisp.
405    
406     2002-09-21 Kaz Kylheku <kaz@ashi.footprints.net>
407    
408 kaz 1.182 * code/install.sh: Check that the installation target path won't
409     look like a command line option to shell commands.
410    
411     2002-09-21 Kaz Kylheku <kaz@ashi.footprints.net>
412    
413 kaz 1.181 * code/mcvs-main.lisp (*mcvs-command-table*): Added help for remove.
414    
415     * code/remove.lisp (*remove-help*): New string constant.
416    
417     2002-09-21 Kaz Kylheku <kaz@ashi.footprints.net>
418    
419 kaz 1.180 * code/grab.lisp (mcvs-grab): Inspect the execute permissions
420     of stable and moved files, and update the :EXEC propery of
421     their mapping entries accordingly. In other words, grab changes
422     in execute permissions properly.
423    
424 kaz 1.179 2002-09-18 Kaz Kylheku <kaz@ashi.footprints.net>
425    
426     * code/restore.lisp (mcvs-restore): Was still generating old-style
427     mapping entries.
428    
429     * code/clisp-unix.lisp (executable-p (string)): New method for
430     executable-p generic function that takes a filename.
431    
432 kaz 1.177 2002-09-17 Kaz Kylheku <kaz@ashi.footprints.net>
433    
434 kaz 1.178 * code/install.sh: Check that the installation target path
435     does not contain any spaces. It cannot, because it is used
436     in the #! line of an interpreter script. As a consequence of
437     this check, whitespace precautions in the expansion of $TARGET,
438     $TARGET_LIB and $TARGET_BIN have been removed.
439    
440     2002-09-17 Kaz Kylheku <kaz@ashi.footprints.net>
441    
442 kaz 1.177 * code/checkout.lisp (mcvs-checkout): If a subdirectory path
443     is specified, verify that it is relative, and that it points
444     within the module.
445    
446 kaz 1.175 2002-09-16 Kaz Kylheku <kaz@ashi.footprints.net>
447    
448 kaz 1.176 * code/mcvs-main.lisp (*checkout-options*): Removed -A and -N
449     options.
450     (*mcvs-command-table*): Added help for checkout and add.
451    
452     * code/checkout.lisp (*checkout-help*): New string constant.
453    
454     * code/add.help (*add-help*): Likewise.
455    
456     * code/create.lisp (*create-help*): Mention interactive file
457     type specification.
458    
459     2002-09-16 Kaz Kylheku <kaz@ashi.footprints.net>
460    
461 kaz 1.175 * code/mcvs-main.lisp (*mcvs-command-table*): Add *grab-help*.
462    
463     * code/grab.lisp (*grab-help*): New string constant.
464    
465 kaz 1.172 2002-09-11 Kaz Kylheku <kaz@ashi.footprints.net>
466    
467 kaz 1.174 * code/clisp-linux.lisp: File removed.
468    
469     2002-09-11 Kaz Kylheku <kaz@ashi.footprints.net>
470    
471 kaz 1.173 Implement help text for create command.
472    
473     * code/mcvs-main.lisp (mcvs-help): Fixes.
474     (*mcvs-command-table*): Add *create-help*.
475    
476     * code/create.lisp (*create-help*): New string constant.
477    
478     2002-09-11 Kaz Kylheku <kaz@ashi.footprints.net>
479    
480 kaz 1.172 Revamping help system to support more detailed help
481     for individual commands.
482    
483     * code/mcvs-main.lisp (mcvs-help): New function.
484     (*help-options*): New constant.
485     (*mcvs-command-table*): New entry in each sublist element;
486     this is either nil, or a string containing help text.
487     (mcvs-execute): Update to use new table structure.
488    
489 kaz 1.171 2002-09-10 Kaz Kylheku <kaz@ashi.footprints.net>
490    
491     * code/filt.lisp (mcvs-filt): Bugfix: was trying to
492     use NIL as if it were a mapping-entry struct after an unsuccessful
493     gethash.
494    
495     2002-09-10 Kaz Kylheku <kaz@ashi.footprints.net>
496    
497     Fix installation braindamage. The problem is that
498     the linkkit material is architecture specific; it was
499     wrong to copy that from CLISP.
500    
501     * code/install.sh (CLISP_PATH, CLISP_ROOT, CLISP_LIB): New
502     variables, dynamically computed from clisp's location.
503     The script now runs the clisp-link under $CLISP_LIB rather
504     than using a replica, and uses $CLISP_LIB/linkkit rather
505     than a replica linkkit.
506     (CLISP): Variable renamed to LISPRUN.
507    
508     * code/clisp-link: File removed.
509     * code/linkkit/modules.d: Likewise.
510     * code/linkkit/modules.c: Likewise.
511     * code/linkkit/clisp.h: Likewise.
512    
513 kaz 1.168 2002-09-08 Kaz Kylheku <kaz@ashi.footprints.net>
514    
515 kaz 1.170 Fix mistake dating back to April.
516    
517     * code/branch.lisp (mcvs-merge): Symbol T was being invoked
518     as function in the case that merge is invoked on a sandbox
519     that is sticky to a non-branch tag.
520    
521     2002-09-08 Kaz Kylheku <kaz@ashi.footprints.net>
522    
523 kaz 1.169 Another stupid error.
524    
525     * code/create.lisp (mcvs-create): Fix use to unbound
526     variable file-info which should be fi.
527    
528     2002-09-08 Kaz Kylheku <kaz@ashi.footprints.net>
529    
530 kaz 1.168 Fix stupid error.
531    
532     * code/mcvs-main.lisp (*move-options*): New constant.
533     (*mcvs-command-table*): Fix broken entry for "move" and "mv".
534    
535 kaz 1.167 2002-09-07 Kaz Kylheku <kaz@ashi.footprints.net>
536    
537     Eliminate inappropriate pluralization in messages.
538    
539     * code/grab.lisp (mcvs-grab): Use ~:p to substitute a 's'
540     if the parameter is other than 1.
541    
542     * code/options.lisp (parse-opt): Likewise.
543    
544 kaz 1.165 2002-09-06 Kaz Kylheku <kaz@ashi.footprints.net>
545    
546 kaz 1.166 * code/prop.lisp (mcvs-prop): Support --value option to
547     associate an arbitrary value with a property indicator.
548    
549     * code/mcvs-main.lisp (*usage*): Describe --value and
550     clarify syntax.
551    
552     2002-09-06 Kaz Kylheku <kaz@ashi.footprints.net>
553    
554 kaz 1.165 Unify command option parsing, and enable it to handle options with
555     any number of required parameters.
556    
557     * code/options.lisp (parse-opt): Function rewritten. Argument
558     syntax and semantics have changed. Options are specified
559     as an association list whose member are string-integer
560     pairs. The string is the option name, the integer specifies
561     the number of required parameters.
562     (option-spec-expand): New function.
563     (option-spec): New macro.
564     (define-option-constant): New macro.
565    
566     * code/mcvs-main.lisp (*cvs-options-arg*): Constant removed.
567     (*cvs-options*, *create-options*, *grab-options*, *checkout-options*,
568     *add-options*, *remove-options*, *update-options*,
569     *switch-options*, *commit-options*, *diff-options*, *tag-options*,
570     *log-options*, *status-options*, *annotate-options, *filt-options*,
571     *convert-options*, *branch-options*, *merge-options*,
572     *remerge-options*, *list-branches-options*, *remap-options*,
573     *purge-options*, *restore-options*, *prop-options*): Constant
574     definitions refactored using define-option-constant macro.
575     (*mcvs-command-table*): Use , rather than ,@ to insert
576     option specs.
577     (*usage*): Suggest cleaner syntax for prop options.
578     (mcvs-execute): Switch to new parse-opt.
579    
580 kaz 1.162 2002-09-05 Kaz Kylheku <kaz@ashi.footprints.net>
581    
582 kaz 1.164 New prop command for manipulating property lists.
583    
584     * code/mcvs-main.lisp (*prop-options*): New constant.
585     (*mcvs-command-table*): New entry.
586     (*usage*): Update.
587    
588     * code/mapping.lisp (mapping-entry-parse-plist): Just unconditionally
589     set execute slot based on :exec property.
590    
591     * code/prop.lisp: New file.
592    
593     2002-09-05 Kaz Kylheku <kaz@ashi.footprints.net>
594    
595 kaz 1.163 Be transparent with respect to mapping entry property lists:
596     preserve unrecognized indicators and values.
597    
598     * code/mapping.lisp (mapping-entry): New slot, raw-plist,
599     records raw property list from external mapping representation.
600     (mapping-entry-parse-attributes): Renamed to mapping-entry-parse-plist.
601     Argument dropped; parses raw-plist slot instead.
602     (mapping-convert-in): Set raw-plist slot to value of fourth list
603     element of :FILE entry, or fifth list element of :SYMLINK entry.
604     (mapping-convert-out): Unify any slot values that are represented as
605     properties into raw-plist, and insert any non-empty plists into
606     external representation.
607    
608     2002-09-05 Kaz Kylheku <kaz@ashi.footprints.net>
609    
610 kaz 1.162 Low level support for versioning executable bit.
611    
612     * code/unix-bindings/unix.lisp (unix-funcs:chmod): New callout
613     function.
614    
615     * code/clisp-unix.lisp (executable-p, make-executable,
616     make-non-executable): New generic functions.
617     (executable-p (file-info), make-executable (file-info),
618     make-executable (string), make-non-executable (file-info),
619     make-non-executable (string)): New methods.
620    
621     * code/add.lisp (mcvs-add): Record whether new file is
622     executable or not, by setting executable slot in mapping-entry.
623    
624     * code/create.lisp (mcvs-create): Likewise.
625    
626     * code/sync.lisp (synchronize-files): New parameter,
627     should-be-executable, tells function which way to set
628     permissions after synchronizing files.
629    
630     * code/mapping.lisp (mapping-entry): New slot, executable.
631     (mapping-entry-parse-attributes): New function, parses
632     new optional property list from :FILE entries in a mapping.
633     (mapping-convert-in): Parse property list that may be present in fourth
634     list element of a :FILE entry.
635     (mapping-convert-out): Write out executable flag as
636     :EXEC property, if true.
637     (mapping-synchronize): Pass executable flag down to synchronize-files.
638    
639 kaz 1.161 2002-09-02 Kaz Kylheku <kaz@ashi.footprints.net>
640    
641     * code/grab.lisp (determine-moved-files): Rename local
642     variable for clarity.
643     (determine-moved-symlinks): Actually compute what symlinks
644     are moved. Takes one more argument, the stable-files list.
645     (mcvs-grab): Fix small destructuring-bind bug in symlink
646     moving code. Also, read the targets of moved symlinks into
647     the map, like it is already done with stable symlinks.
648    
649 kaz 1.160 2002-09-01 Kaz Kylheku <kaz@ashi.footprints.net>
650    
651     * code/grab.lisp (mcvs-grab): Iterate over stable symlinks,
652     and incorporate changed targets into the mapping. In other
653     words, notice and incorporate retargetted symlinks.
654    
655 kaz 1.159 2002-08-31 Kaz Kylheku <kaz@ashi.footprints.net>
656    
657     Merging new symbolic link support from symlink-branch.
658    
659 kaz 1.160 * code/mapping.lisp (mapping-update): Resolve merge conflict.
660 kaz 1.159 The branch fixed the 2002-08-24 bug also.
661    
662     2002-08-31 Kaz Kylheku <kaz@ashi.footprints.net>
663    
664     * code/grab.lisp (move-candidates): Function renamed to
665     determine-moved-files.
666     (determine-moved-symlinks): New function, doesn't do anything
667     yet.
668     (mcvs-grab): Updated to process symlinks and use new
669     mapping-entry structure.
670    
671     2002-08-26 Kaz Kylheku <kaz@ashi.footprints.net>
672    
673     * code/remap.lisp (mcvs-remap): Use new mapping entry structure.
674     For now, preserve symbolic link entries as they are, processing only
675     files.
676    
677     * code/mapping.lisp (equal-mapping-entries, equal-mappings): New
678     functions.
679    
680     2002-08-25 Kaz Kylheku <kaz@ashi.footprints.net>
681    
682     * code/clisp-unix.lisp (initialize-instance link-error): Make
683     error message less confusing about which path refers to the
684     object being created, and which path refers to what it links to.
685    
686     * code/mapping.lisp (mapping-rename-files): Bugfix: destructuring-bind
687     appeared in place of with-slots.
688     (mapping-synchronize): When creating symbolic link, ensure that
689     its directory exists.
690     (mapping-update): Likewise.
691    
692     2002-08-25 Kaz Kylheku <kaz@ashi.footprints.net>
693    
694     * code/add.lisp (mcvs-add): Change to new mapping-entry data structure
695     and handle symbolic links.
696    
697     * code/create.lisp (mcvs-create): Likewise.
698    
699     * code/filt.lisp (make-filt-hash, mcvs-filt): Change to new
700     mapping-entry data structure. Filt does not care about symlinks.
701    
702     * code/types.lisp (types-remove-ignores, types-make-cvs-adds):
703     Change to new mapping-entry data structure.
704    
705     * code/mapping.lisp (mapping-generate-name): Renamed to
706     mapping-generate-id. Interface changes slightly.
707     (mapping-extract-kind): New function, factored out from mcvs-generic.
708     (mapping-update): Unlink existing symbolic link before
709     re-linking it.
710    
711     * code/convert.lisp (mcvs-convert): Use new name and interface
712     of mapping-generate-name function.
713    
714     * code/create.lisp (mcvs-create): Likewise.
715    
716     * code/generic.lisp (mcvs-generic): Code to extract :file
717     entries from map factored out to mapping-extract-kind.
718    
719    
720     2002-08-25 Kaz Kylheku <kaz@ashi.footprints.net>
721    
722     * code/generic.lisp (mcvs-generic): Use new mapping-entry data structure.
723     Filter out mapping entries which are other than of the :file type, so
724     we don't pass to CVS things it doesn't know about, like symbolic
725     links.
726    
727     2002-08-24 Kaz Kylheku <kaz@ashi.footprints.net>
728    
729     Support for symbolic links added to the mapping module. The format of
730     the map file has changed to accomodate this. The new format of the
731     list entries is (:keyword "id" "path" ...) where the keyword is either
732     :file or :symlink (for now, extensible obviously), "id" is a unique
733     identifier (for regular files, it is their MCVS/F-* name) and "path" is
734     the sandbox path. Other things can follow; for symlinks, there is a
735     string representing the symlink target. Internally, a new data type
736     called mapping-entry is used; this is a struct. So the functions which
737     read and write maps now convert between the struct format and the above
738     format.
739    
740     * code/unix-bindings/unix.lisp (unix-funcs:readlink): New function.
741    
742     * code/unix-bindings/impl.c (impl_readlink): New function.
743    
744     * code/clisp-unix.lisp (readlink-error): New condition.
745     (initialize-instance readlink-error): New method for
746     initialize-instance generic function, specialized for readlink-error.
747     (readlink): New function.
748    
749     * code/mapping.lisp (mapping-entry): New struct, with slots
750     file, id, path and target.
751     (mapping-same-object-p): Renamed to mapping-same-id-p.
752     (mapping-object-lookup, mapping-moved-p): Unused functions removed.
753     (mapping-extract-paths, mapping-lookup, mapping-prefix-lookup,
754     mapping-prefix-matches, mapping-same-path-p, mapping-rename-files,
755     mapping-removed-files): Functions updated to use the new data
756     structure.
757     (mapping-dupe-checks): Rewritten for new data structure, and to
758     use hashes rather than silly sorting.
759     (mapping-convert-old-style-in, mapping-convert-in,
760     mapping-convert-out): New functions.
761     (mapping-read): Handle new and old style representations,
762     handle conversion to internal representation.
763     (mapping-write): Convert to new-style external representation
764     before writing out.
765     (mapping-synchronize): Handle symbolic links. If a link is missing,
766     create it. If it's present but different from what it should be,
767     erase it and re-create it.
768     (mapping-update): Use new data structure. Handle symbolic links.
769    
770     * code/remove.lisp (mcvs-remove): Refer to new function
771     name, mapping-same-id-p.
772    
773 kaz 1.158 2002-08-24 Kaz Kylheku <kaz@ashi.footprints.net>
774    
775     * mapping.lisp (mapping-update): Bugfix
776     in logic which prints clobbering moves. The functions
777     abstract-to-real-path and second were applied in the wrong order.
778    
779 kaz 1.159 2002-08-23 Kaz Kylheku <kaz@ashi.footprints.net>
780    
781     * code/clisp-unix.lisp (link-error): New slot, kind. Holds
782     the string "symbolic" or "hard".
783     (initialize-instance link-error): Use new slot in constructing
784     message.
785     (link): Specify "hard" value for :kind slot of condition.
786     (symlink): New function.
787    
788     * code/clisp-linux.lisp: Likewise.
789    
790 kaz 1.156 2002-08-17 Kaz Kylheku <kaz@ashi.footprints.net>
791    
792 kaz 1.159 * code/posix.lisp (execute-program): Function removed.
793     * code/clisp-linux.lisp (execute-program): Function added. Works
794 kaz 1.157 in terms of CLISP's run-program function rather than the shell
795     function, thus eliminating the need to build a command string
796     and escape shell characters.
797     * clisp-unix.lisp (excecute-program): Likewise.
798    
799     2002-08-17 Kaz Kylheku <kaz@ashi.footprints.net>
800    
801 kaz 1.159 * code/posix.lisp (edit-file): Function renamed to invoke-file-on,
802 kaz 1.156 because this name clashes with a standard Common Lisp symbol.
803 kaz 1.159 * code/types.lisp (types-let-user-edit): Updated to use new name.
804 kaz 1.156
805 kaz 1.155 2002-08-05 Kaz Kylheku <kaz@ashi.footprints.net>
806    
807     Use getcwd to to implement mcvs-locate.
808    
809     * code/unix-bindings/unix.lisp (getcwd): New call out,
810     invokes impl_getcwd.
811    
812     * code/unix-bindings/impl.c (impl_getcwd): New function,
813     use getcwd() to obtain current working directory, resizing dynamic
814     buffer if necessary to get the entire path.
815    
816     * code/clisp-unix.lisp (getcwd): New wrapper function.
817    
818     * code/dirwalk.lisp (go-up): Function removed.
819    
820     * code/mapping.lisp (mcvs-locate): Rewritten to obtain
821     path using getcwd, then try looking for MCVS directory
822     in successively shorter prefixes of that path.
823    
824 kaz 1.152 2002-08-04 Kaz Kylheku <kaz@ashi.footprints.net>
825    
826 kaz 1.154 Working back support for CLISP 2.27.
827    
828     * code/install.sh: Bogus *null-pointer* hack is no longer added
829     to the generated mcvs script, since we have our own FFI functions for
830     doing the test.
831    
832     * code/unix-bindings/unix.lisp (unix-funcs:null-pointer-p): New
833     function, tests a C pointer for null, returns T or NIL.
834     * code/unix-bindings/impl.c (impl_null_pointer_p): New function,
835     C implementation of unix-funcs:null-pointer-p.
836    
837     * code/clisp-unix.lisp (pointer-null): New macro, uses
838     ffi:foreign-address-null under CLISP 2.28 or greater, or
839     unix-funcs:null-pointer-p, under an older CLISP.
840    
841     2002-08-04 Kaz Kylheku <kaz@ashi.footprints.net>
842    
843 kaz 1.153 Fixes to get clean build from fresh checkout.
844    
845     * code/unix-bindings/link.sh: Remove test for presence of unix.c;
846     this was causing the failure to add the unix module to the module
847     list, which caused it to generate an empty modules.h file under
848     code/unix-bindings-linking-set, resulting in a bad build of lisp.run.
849    
850     * code/unix-bindings/Makefile: Add ``clean'' target, so we
851     can do a make clean here.
852    
853     2002-08-04 Kaz Kylheku <kaz@ashi.footprints.net>
854    
855 kaz 1.152 Retargetting CVS with new system call bindings that are not GNU/Linux
856     specific.
857    
858     * code/install.sh: The way Meta-CVS is installed changes now.
859     The argument is now a prefix above a bin and lib directory.
860     Invokes clisp-link to build a new CLISP linking set in the
861     directory code/unix-bindings-linking-set. The lisp executable
862     (lisp.run) is copied to $TARGET/lib/clisp/meta-cvs/ and the Meta-CVS
863     memory image is also copied there under the name lispinit.mem.
864     The mcvs script is then generated in $TARGET/bin, correctly referring
865     to these images.
866    
867     * code/system.lisp: Choose the new clisp-unix module, if running
868     under a CLISP image which has the new bindings loaded. Otherwise fall
869     back on the old clisp-linux, which uses the linuxlibc6 module.
870    
871     * code/clisp-unix.lisp: New file, closely based on clisp-linux.lisp,
872     but targetting new bindings in the unix-funcs package.
873    
874     * code/clisp-link: New file. Script borrowed from CLISP distribution,
875     needed for building CLISP executables with custom modules added.
876    
877     * code/linkkit: New directory. This is needed by by clisp-link.
878     * code/linkkit/modules.c: Borrowed file from CLISP, needed
879     by clisp-link.
880     * code/linkkit/clisp.h: Likewise.
881     * code/linkkit/modules.d: Likewise.
882    
883     * code/unix-bindings: New directory. This is a module kit used
884     by clisp-link to extend the Lisp executable and memory image
885     with new C functions.
886    
887     * code/unix-bindings/link.sh: Definitions of variables needed
888     by clisp-link.
889    
890     * code/unix-bindings/unix.lisp: The glue module which defines the Lisp
891     interface to the external C functions. Most of the functions call
892     directly into the system's C library, but a few call to wrapper
893     functions. Compiling unix.lisp produces a unix.c file which is
894     compiled and linked into the CLISP executable, and a unix.fas which
895     contains the Lisp interface bits that are loaded as part of the Lisp
896     image.
897    
898     * code/unix-bindings/Makefile: Rules for compiling the module, invoked by clisp-link.
899    
900     * code/unix-bindings/impl.c: Some special functions that help
901     implement the binding.
902    
903 kaz 1.149 2002-07-31 Kaz Kylheku <kaz@ashi.footprints.net>
904    
905 kaz 1.150 More changes to syntax of grab command. Now -A must be
906     specified to do a grab onto main trunk.
907    
908     * code/mcvs-main.lisp (*grab-options*): -A option added.
909    
910     * code/grab.lisp (mcvs-grab): Test for presence of -A
911     option. Check that either -A or -r is present, but not both.
912    
913     2002-07-31 Kaz Kylheku <kaz@ashi.footprints.net>
914    
915 kaz 1.149 Syntax of grab command changed. The branch is no longer
916     specified as an argument after the module name. Rather,
917     it is specified using the -r option.
918    
919     * code/mcvs-main.lisp (*grab-options*): -r added to list.
920    
921     * code/grab.lisp (mcvs-grab, mcvs-grab-wrapper): Argument
922     syntax change, support -r option.
923 kaz 1.152
924     * INSTALL: Instructions change, since building the GNU/Linux libc
925     into CLISP is no longer required.
926 kaz 1.149
927 kaz 1.147 2002-07-27 Kaz Kylheku <kaz@ashi.footprints.net>
928    
929 kaz 1.148 * docs/meta-cvs.latex: Rewrote most of Introduction.
930    
931     2002-07-27 Kaz Kylheku <kaz@ashi.footprints.net>
932    
933 kaz 1.147 New scripts for building LaTeX document. These do the right thing
934     to minimize the number of times latex is run. Make proved useless.
935    
936     * docs/generate.sh: New file.
937     * docs/cleanup.sh: New file.
938    
939 kaz 1.146 2002-07-20 Kaz Kylheku <kaz@ashi.footprints.net>
940    
941     * INSTALL: Revising CLISP installation instructions to the
942     easier method using --build.
943    
944 kaz 1.145 2002-07-18 Kaz Kylheku <kaz@ashi.footprints.net>
945    
946     * README: Renaming file to QUICK-GUIDE.
947    
948     2002-07-17 Kaz Kylheku <kaz@ashi.footprints.net>
949 kaz 1.142
950 kaz 1.144 * code/generic.lisp (mcvs-generic): Support new keyword,
951     :no-fix-empty-file-list. Specifies that if no files are passed,
952     and the --metaonly option is not present, the CVS command is to be
953     executed without any file arguments.
954     (mcvs-commit-wrapper): Specify :no-fix-empty-file-list t when
955     calling mcvs-generic. Thus commit now has the behavior that
956     when it is passed no file arguments, it does a true global commit.
957    
958     2002-07-16 Kaz Kylheku <kaz@ashi.footprints.net>
959    
960 kaz 1.143 * code/restore.lisp (mcvs-restore): Work properly with
961     partial sandboxes; that is, move things to lost+found
962     directory at the top of the partial sandbox, rather than
963     the abstract root.
964    
965     2002-07-16 Kaz Kylheku <kaz@ashi.footprints.net>
966    
967 kaz 1.142 * code/mcvs-main.lisp (usage): Updated to describe restore
968     command.
969    
970 kaz 1.139 2002-07-14 Kaz Kylheku <kaz@ashi.footprints.net>
971    
972 kaz 1.141 * code/grab.lisp (mcvs-grab): If there are only added files
973     or only removed files, don't bother scanning any files,
974     since there are no moves to compute.
975    
976     2002-07-14 Kaz Kylheku <kaz@ashi.footprints.net>
977    
978 kaz 1.140 * code/find-bind.lisp (vector-bind): New macro, binds symbols
979 kaz 1.139 to elements of a vector.
980     (find-bind-extract-vals): Rewrite using vectors. Fixes
981     a bug: the old version was not handling duplicate keys
982     properly.
983     (find-bind): Integrate with new find-bind-extract-vals.
984    
985 kaz 1.138 2002-07-11 Kaz Kylheku <kaz@ashi.footprints.net>
986    
987     Directory structure rearrangement; source files are moved
988     under code/ subdirectory. A documentation directory is added.
989    
990 kaz 1.133 2002-07-07 Kaz Kylheku <kaz@ashi.footprints.net>
991    
992 kaz 1.137 * move.lisp (move-guts): When moving multiple sources to
993     a target directory, provide a restart to skip a bad source.
994    
995     2002-07-07 Kaz Kylheku <kaz@ashi.footprints.net>
996    
997 kaz 1.136 * seqfuncs.lisp (intersection-difference): Support a new
998     keyword parameter :squash-nil.
999    
1000     * mapping.lisp (mapping-difference): Filter non-moved pairs
1001     directly in intersection-difference call using :squash-nil,
1002     eliminating the need to do a second remove-if pass.
1003    
1004     2002-07-07 Kaz Kylheku <kaz@ashi.footprints.net>
1005    
1006 kaz 1.135 * mapping.lisp (mapping-difference): Rewrite using
1007     intersection-difference.
1008    
1009     2002-07-07 Kaz Kylheku <kaz@ashi.footprints.net>
1010    
1011 kaz 1.134 * grab.lisp (added-removed): Function removed.
1012     (mcvs-grab): Use new intersection-difference function
1013     instead of added-removed.
1014    
1015     2002-07-07 Kaz Kylheku <kaz@ashi.footprints.net>
1016    
1017 kaz 1.133 * seqfuncs.lisp (intersection-difference): New function.
1018    
1019 kaz 1.131 2002-07-06 Kaz Kylheku <kaz@ashi.footprints.net>
1020    
1021 kaz 1.132 * grab.lisp (mcvs-grab): Upgraded to work with partial sandbox.
1022     Extra parameter added to specify subdirectory. File analysis
1023     is only done on visible files.
1024     (mcvs-grab-wrapper): Take optional parameter to specify
1025     subdirectory.
1026    
1027     2002-07-06 Kaz Kylheku <kaz@ashi.footprints.net>
1028    
1029     * mapping.lisp (mapping-update): If no-delete-removed is
1030     true, nevertheless print the ``* removing...'' messages
1031     to show that removal from the mapping is going on.
1032    
1033     2002-07-06 Kaz Kylheku <kaz@ashi.footprints.net>
1034    
1035     * remap.lisp (mcvs-remap): Remap only the visible sandbox,
1036     and combine resulting map with the invisible portion.
1037    
1038     2002-07-06 Kaz Kylheku <kaz@ashi.footprints.net>
1039    
1040     * remove.lisp (mcvs-remove): Added path conversions to support
1041     partial sandboxes.
1042    
1043     2002-07-06 Kaz Kylheku <kaz@ashi.footprints.net>
1044    
1045     * generic.lisp (mcvs-generic): Added path conversions to support
1046     partial sandboxes.
1047    
1048     2002-07-06 Kaz Kylheku <kaz@ashi.footprints.net>
1049    
1050     * add.lisp (mcvs-add): Added path conversions to support
1051     partial sandboxes.
1052    
1053     2002-07-06 Kaz Kylheku <kaz@ashi.footprints.net>
1054    
1055 kaz 1.131 * grab.lisp (mcvs-grab): Bugfix: determination of common words
1056     was failing on small file sets because the min function was
1057     used instead of the max to compute the threshold.
1058 kaz 1.132
1059     2002-07-05 Kaz Kylheku <kaz@ashi.footprints.net>
1060    
1061     * move.lisp (source-check): Use real source path for checking
1062     against MCVS/ area.
1063     (mcvs-move): Ditto for destination path.
1064    
1065     2002-07-05 Kaz Kylheku <kaz@ashi.footprints.net>
1066    
1067     * mapping.lisp (mapping-update): Make sure only those files
1068     are processed which are visible in the sandbox. If a file
1069     is moved out of or into visibility, this is indicated in the
1070     diagnostic output.
1071    
1072     2002-07-05 Kaz Kylheku <kaz@ashi.footprints.net>
1073    
1074     * mapping.lisp (real-path-exists): Use path-prefix-equal, because
1075     that handles all the tricky cases.
1076     (abstract-to-real-path): Handle the case when abstract path
1077     is the same as the path prefix, with or without the trailing
1078     slash.
1079    
1080     2002-07-05 Kaz Kylheku <kaz@ashi.footprints.net>
1081    
1082     Start of experimental ``partial sandbox'' work.
1083    
1084     * mapping.lisp (*mcvs-displaced-name*, *mcvs-displaced*): New
1085     constants, hold name of administrative file MCVS/DISPLACED which stores
1086     the displaced path prefix.
1087     (*displaced-path-prefix*): New special variable, holds displaced
1088     path prefix read from MCVS/DISPLACED.
1089     (*displaced-path-length*): New special variable, holds length
1090     of string stored in *displaced-path-prefix*.
1091     (real-path-exists, abstract-to-real-path, real-to-abstract-path):
1092     New functions for mapping between actual sandbox path, and
1093     the abstract sandbox path stored in the mapping.
1094     (in-sandbox-root-dir): Macro modified to read *mcvs-displaced*
1095     administrative file, and set up the new special variables.
1096     (mapping-synchronize): Only operate on files that are present
1097     in the sandbox; i.e. that have real paths corresponding to their
1098     abstract paths. Convert to the real path when calling lower
1099     level file manipulation functions.
1100     (mapping-update): Likewise, but this conversion is not complete.
1101     (displaced-path-read, displaced-path-write): New functions for
1102     reading and writing MCVS/DISPLACED.
1103    
1104     * checkout.lisp (mcvs-checkout): One extra optional parameter.
1105     Specifies the subdirectory for executing a partial checkout.
1106     (mcvs-checkout-wrapper): Parse out optional parameter.
1107    
1108     * grab.lisp (mcvs-grab): For now, when calling mcvs-checkout,
1109     specify the new parameter as nil. Eventually, grab will work
1110     over partial checkouts.
1111    
1112     * move.lisp: Upgraded to work with partial sandboxes.
1113     (source-check): Convert source parameter to real path for
1114     existence check.
1115     (move-guts): Convert destination parameter to real path before
1116     invoking (stat ...) on it.
1117     (mcvs-move): Map all path arguments to abstract paths.
1118 kaz 1.131
1119 kaz 1.130 2002-07-04 Kaz Kylheku <kaz@ashi.footprints.net>
1120    
1121     * find-bind.lisp (find-bind-extract-vals): Rewrite for
1122     efficiency. No impact on Meta-CVS, just done for the sake of improving
1123     the quality of this highly reusable code. There is specialized
1124     code now depending on whether the input sequence is a list or
1125     a vector. A single pass is made over the sequence, with multiple
1126     passes over the search values. The sequence could be large,
1127     whereas the list of search values is typically going to be small.
1128     (find-bind): Modified to reflect slight interface change
1129     in find-bind-extract-vals.
1130    
1131 kaz 1.129 2002-07-03 Kaz Kylheku <kaz@ashi.footprints.net>
1132    
1133     * mcvs-main.lisp (*usage*): Describe --meta and --metaonly options.
1134    
1135 kaz 1.127 2002-07-02 Kaz Kylheku <kaz@ashi.footprints.net>
1136    
1137 kaz 1.128 * purge.lisp (mcvs-purge): Factor out code for computing
1138     deleted files.
1139    
1140     * mapping.lisp (mapping-removed-files): New function, contains
1141     code factored from mcvs-purge.
1142    
1143     * restore.lisp: New file.
1144     (mcvs-restore, mcvs-restore-wrapper): New functions.
1145    
1146     2002-07-02 Kaz Kylheku <kaz@ashi.footprints.net>
1147    
1148 kaz 1.127 * checkout.lisp (mcvs-checkout): Don't delete the MCVS directory
1149     of an existing checkout.
1150    
1151 kaz 1.125 2002-07-01 Kaz Kylheku <kaz@ashi.footprints.net>
1152    
1153 kaz 1.126 Adding purge command.
1154    
1155     * mcvs-main.lisp (*purge-options*): New constant.
1156     (*mcvs-command-table*): New entry.
1157     (*usage*): Update.
1158    
1159     * purge.lisp: New file.
1160     (mcvs-purge, mcvs-purge-wrapper): New functions.
1161    
1162     2002-07-01 Kaz Kylheku <kaz@ashi.footprints.net>
1163    
1164 kaz 1.125 Grab no longer synchronizes to recreate deleted files immediately
1165     before blowing them away.
1166    
1167     * grab.lisp (mcvs-grab): Specify :no-sync t when calling mcvs-remove.
1168    
1169     * remove.lisp (mcvs-remove): Support new no-sync keyword. This tells
1170     mcvs-remove that the files being removed from the mapping,
1171     don't exist in the sandbox. So it's not necessary to call
1172     mapping-synchronize, and mapping-update can be told via
1173     :no-delete-removed t not to try to remove deleted files.
1174    
1175     * mapping.lisp (mapping-update): New no-delete-removed keyword
1176     parameter.
1177    
1178 kaz 1.121 2002-06-29 Kaz Kylheku <kaz@ashi.footprints.net>
1179 kaz 1.120
1180 kaz 1.123 * create.lisp (mcvs-create): Take out vendor branch parameter,
1181     use "Created-by-Meta-CVS" as the vendor tag.
1182     (mcvs-create-wrapper): Take out vendor branch parameter.
1183    
1184     2002-06-29 Kaz Kylheku <kaz@ashi.footprints.net>
1185    
1186 kaz 1.122 * generic.lisp (mcvs-tag-wrapper): This one needs to include
1187     meta files by default.
1188    
1189     2002-06-29 Kaz Kylheku <kaz@ashi.footprints.net>
1190    
1191 kaz 1.120 Moving toward sane, user-friendly handling of meta-files.
1192     Two new options are added --meta and --metaonly.
1193     All reporting commands---diff, log, annotate---default to
1194     not including the meta files. The update command remains special.
1195     It does not include meta files if given filename arguments.
1196     If invoked with no arguments, it does a global CVS up.
1197     The commit command defaults to including the meta files.
1198     The three options simply override default behavior.
1199    
1200 kaz 1.124 * options.lisp (*nometa-option*): Eliminated useless docstring.
1201 kaz 1.120 (*meta-option*): New variable.
1202     (*nometa-option*): New variable.
1203     (filter-global-options): Clean rewrite using find-bind.
1204    
1205     * generic.lisp (mcvs-generic): New keyword parameters
1206     default-include-meta-files, need-update-after. Implements new logic
1207     related to the new options. Performs (mapping-update) if
1208     need-update-after is true and metafiles were subject to cvs update.
1209     (mcvs-commit-wrapper): Calls mcvs-generic with
1210     :default-include-meta-files t.
1211    
1212     * update.lisp (mcvs-update): No longer overrides the *nometa-option*
1213     special variable. Passes :need-update-after t to mcvs-generic.
1214    
1215     * mcvs-main.lisp (*cvs-options*): New options entered into list.
1216    
1217 kaz 1.121 2002-06-28 Kaz Kylheku <kaz@ashi.footprints.net>
1218 kaz 1.114
1219 kaz 1.119 * memoize.lisp (memoize-expander): Use ordinary hash for memoizing
1220     monadic functions.
1221    
1222 kaz 1.121 2002-06-28 Kaz Kylheku <kaz@ashi.footprints.net>
1223 kaz 1.119
1224 kaz 1.117 Word comparisons are case-insensitive in mcvs grab now.
1225     Also, common words are determined and eliminated from the correlation.
1226     Common words are those that appear in at least 5 of the
1227     added or removed files, or 20% of them, whichever is greater.
1228    
1229     Noticed some unnecessary use of string-lessp on F-file names in
1230     mapping.lisp.
1231    
1232     * grab.lisp (read-word-hash): Use #'equalp test for case-insensitive
1233     string comparisons.
1234     (added-removed): Use string< instead of string-lessp for comparing
1235     paths.
1236     (determine-common-words, eliminate-common-words): New functions.
1237 kaz 1.118 (move-candidates): Acceptance threshold reduced to 30%, since
1238 kaz 1.117 elimination of common words reduces the similarity correlation.
1239     (mcvs-grab): Use string< instead of string-lessp when sorting paths.
1240     Do the common words computation.
1241    
1242     * mapping.lisp (mapping-dupe-check, mapping-write,
1243     mapping-difference): Use string< instead of string-lessp.
1244    
1245 kaz 1.121 2002-06-28 Kaz Kylheku <kaz@ashi.footprints.net>
1246 kaz 1.117
1247 kaz 1.116 * memoize.lisp (factor-memo-labels): New function, rips apart
1248     functions generated by memoize-expander, in order to factor
1249     out the multi-hash defining let blocks.
1250     (memoized-labels): Interface corrected. Also, use new function to
1251     generate a labels block that allows for mutually recursive memoized
1252     functions which preserve hash contents across arbitrarily mutually
1253     recursive calls. This is done by enclosing the functions in one big
1254     let block which binds all the hashes.
1255    
1256 kaz 1.121 2002-06-28 Kaz Kylheku <kaz@ashi.footprints.net>
1257 kaz 1.116
1258 kaz 1.115 * seqfuncs.lisp (lcs-list): Specify #'eq test for memoization
1259     parameters.
1260    
1261 kaz 1.121 2002-06-28 Kaz Kylheku <kaz@ashi.footprints.net>
1262 kaz 1.115
1263 kaz 1.114 Adding some cool code: a multi-hash datatype which implements
1264     multi-dimensional sparse arrays using a tree of hash tables,
1265     and a function memoizer which uses multi hash to index on
1266     function arguments.
1267    
1268     * multi-hash.lisp (multi-hash): New class.
1269     (initialize-instance): New method on multi-hash.
1270     (multi-hash-common-code): New macro.
1271     (get-multi-hash, set-multi-hash): New functions.
1272    
1273     * memoize.lisp (define-memoized-function,
1274     memoized-labels): New macros.
1275     (remove-key-aux-rest strip-lambda-list, extract-tests,
1276     remove-tests, memoize-expander): New functions.
1277    
1278     * seqfuncs.lisp (lcs-list): Function is now correctly
1279     memoized using define-memoized-function.
1280    
1281 kaz 1.113 2002-06-26 Kaz Kylheku <kaz@ashi.footprints.net>
1282    
1283     * grab.lisp (read-word-hash): Memory use optimizations: use smaller
1284     initial size for tokens; re-use the same token object when the
1285     hash already contains a duplicate.
1286     (correlate): Renamed to correlate-word-hashes.
1287     (correlate-paths): New function; computes a confidence-reducing
1288     factor based on the differences between two paths.
1289     (move-candidates): Use correlate-paths to lower the confidence
1290     for distant moves. This could help sort out ambiguities when
1291     projects contain very similar or duplicate files which are subject
1292     to parallel moves.
1293    
1294     * seqfuncs.lisp (lcs-list, lcs-vector,
1295     longest-common-subsequence): New functions.
1296    
1297 kaz 1.112 2002-06-25 Kaz Kylheku <kaz@ashi.footprints.net>
1298    
1299     New feature: grab command. Takes snapshot of code and imports
1300     it to a branch, trying to determine which of the added and
1301     removed files are actually moves.
1302    
1303     * grab.lisp: New file.
1304     (read-word-hash, word-hash-file, correlate, added-removed,
1305     move-candidates, mcvs-grab, mcvs-grab-wrapper): New functions.
1306    
1307     * mcvs-main.lisp (*grab-options*): New constant.
1308     (*mcvs-command-table*): New entry.
1309     (*usage*): New text.
1310    
1311     * checkout.lisp (mcvs-checkout): Write out MAP-LOCAL even
1312     if :no-generate t is specified.
1313    
1314 kaz 1.110 2002-06-24 Kaz Kylheku <kaz@ashi.footprints.net>
1315    
1316 kaz 1.111 * checkout.lisp (mcvs-checkout): New key parameter, no-generate.
1317     Tells the checkout function not to unpack the MCVS directory.
1318     This will be useful when mcvs-checkout is used as a subfunction
1319     of the new grab command. Failed CVS call is now turned into
1320     an error. The MCVS subdirectory is *always* deleted, even if the
1321     checkout did not create the checkout directory.
1322    
1323     2002-06-24 Kaz Kylheku <kaz@ashi.footprints.net>
1324    
1325 kaz 1.110 * dirwalk.lisp (dirwalk-fi): Bugfix: top call was not
1326     passing down keyword parameters to recursive call.
1327    
1328 kaz 1.107 2002-06-23 Kaz Kylheku <kaz@ashi.footprints.net>
1329    
1330 kaz 1.109 * posix.lisp (canonicalize-path): Use concatenate-string
1331     instead of format.
1332    
1333     2002-06-23 Kaz Kylheku <kaz@ashi.footprints.net>
1334    
1335 kaz 1.108 * posix.lisp (parse-posix-namestring): Clean rewrite.
1336    
1337     2002-06-23 Kaz Kylheku <kaz@ashi.footprints.net>
1338    
1339 kaz 1.107 The ``import'' command is renamed to ``create''.
1340    
1341     * mcvs.main (*create-options*): Renamed to *import-options*.
1342     (*mcvs-command-table*): Updated.
1343     (*usage*): Updated.
1344    
1345     * import.lisp: File renamed to create.lisp.
1346     (mcvs-import): Renamed to mcvs-create; some arguments renamed.
1347     (mcvs-import-wrapper): Renamed to mcvs-create-wrapper.
1348    
1349     * README: Updated.
1350    
1351 kaz 1.104 2002-06-22 Kaz Kylheku <kaz@ashi.footprints.net>
1352    
1353 kaz 1.106 * split.lisp (split-fields): Optimized to extract tokens directly
1354     from the input string using subseq rather than construct them
1355     character by character.
1356 kaz 1.105
1357     2002-06-22 Kaz Kylheku <kaz@ashi.footprints.net>
1358    
1359 kaz 1.104 * find-bind.lisp (find-bind): Use #'values instead of #'(lambda (x) x).
1360    
1361 kaz 1.102 2002-06-21 Kaz Kylheku <kaz@ashi.footprints.net>
1362    
1363 kaz 1.103 * clisp-linux.sh (:clisp-old): Added to *features*
1364     for CLISP 2.28 or higher.
1365     (*null-pointer*): Only defined when :clisp-old is present.
1366     (pointer-null): Use new ffi:foreign-pointer-null if :clisp-old
1367     feature is not present.
1368    
1369     * install.sh: Don't do *null-pointer* workaround hack
1370     unless :clisp-old feature is present in the memory image.
1371    
1372     2002-06-21 Kaz Kylheku <kaz@ashi.footprints.net>
1373    
1374 kaz 1.102 * types.lisp (types-make-cvs-adds): Serious bugfix. Forgot
1375     to strip MCVS/ prefix from those F- files which don't match
1376     any type entries. This caused cvs add to fail for unsuffixed
1377     files.
1378    
1379 kaz 1.101 2002-06-08 Kaz Kylheku <kaz@ashi.footprints.net>
1380    
1381     * types.lisp (types-to-import-wrapper-args): Don't use backquote
1382     template to generate a list that will be destructively catenated
1383     by mapcan.
1384    
1385 kaz 1.100 2002-05-22 Kaz Kylheku <kaz@ashi.footprints.net>
1386    
1387     * checkout.lisp (mcvs-checkout): If a checkout directory is
1388     created and then the CVS checkout fails, the directory is
1389     then removed.
1390    
1391 kaz 1.97 2002-05-20 Kaz Kylheku <kaz@ashi.footprints.net>
1392    
1393 kaz 1.100 * find-bind.lisp (find-bind-extract-vals, find-bind): Process default
1394 kaz 1.99 values in find-bind-extract-vals, instead of in the expansion of
1395     find-bind, thereby reducing some macro bloat.
1396    
1397     2002-05-20 Kaz Kylheku <kaz@ashi.footprints.net>
1398    
1399 kaz 1.98 * remap.lisp (mcvs-remap): Loads MAP as well as MAP-LOCAL.
1400     If it the mappings differ, an error is signaled. The user can choose
1401     to ignore the error, in which case MAP is clobbered.
1402    
1403     2002-05-20 Kaz Kylheku <kaz@ashi.footprints.net>
1404    
1405 kaz 1.97 Adding mcvs remap command.
1406    
1407     * dirwalk.lisp (dirwalk-fi, dirwalk, for-each-file-info): Default
1408     behavior is now preorder (visit directory before its entries).
1409     A keyword is provided to select the old postorder behavior.
1410     A catch is provided in dirwalk-fi that allows the caller to
1411     skip processing the currently traversed directory. The for-each-*
1412     macros provide a local function called (skip) to do this.
1413     (delete-recursive): This function depends on postorder behavior
1414     in for-each-file-info, so it explicitly selects it now.
1415    
1416     * mcvs.lisp (*remap-options*): New constant.
1417     (*mcvs-command-table*): Add entry for new function.
1418     (*usage*): Describes new function.
1419    
1420     * remap.lisp: New file.
1421     (mcvs-remap, mcvs-remap-wrapper): New functions.
1422    
1423 kaz 1.96 2002-05-15 Kaz Kylheku <kaz@ashi.footprints.net>
1424    
1425     * sync.lisp (synchronize-files): Signal an error when the two files
1426     to be synchronized have the same time stamp. Provide two restarts
1427     for doing the synchronization either way.
1428    
1429 kaz 1.95 2002-05-06 Kaz Kylheku <kaz@ashi.footprints.net>
1430    
1431     * mapping.lisp (in-sandbox-root-dir): Fix symbol macro
1432     sandbox-down-path; it was referring to the (quote #:DOWNPATH-NNN)
1433     rather than #:DOWNPATH-NNN.
1434    
1435 kaz 1.93 2002-05-04 Kaz Kylheku <kaz@ashi.footprints.net>
1436    
1437 kaz 1.94 * import.lisp (mcvs-import): Specify -I ! argument to cvs import
1438     so that it does not ignore any F- files.
1439    
1440     2002-05-04 Kaz Kylheku <kaz@ashi.footprints.net>
1441    
1442 kaz 1.93 * mapping.lisp (mapping-update): Provide restart that allows
1443     user to ignore file removal error.
1444    
1445 kaz 1.92 2002-04-19 Kaz Kylheku <kaz@ashi.footprints.net>
1446    
1447     Porting to CMUCL.
1448    
1449     * system.lisp: Conditionally load new module cmucl-unix.
1450    
1451     * mapping.lisp (mapping-dupe-check, mapping-write,
1452     mapping-difference): Fixes related to sort function; we were
1453     relying on CLISP's preservation of the cons cell order.
1454    
1455     * cmucl-unix.lisp: New file.
1456    
1457 kaz 1.89 2002-04-17 Kaz Kylheku <kaz@ashi.footprints.net>
1458    
1459 kaz 1.90 * checkout.lisp (mcvs-checkout): Allow -d to specify current
1460     directory as the checkout directory. Do not complain if the
1461 kaz 1.91 target directory exists, just try to use it anyway,
1462     unless it is the root of an existing Meta-CVS sandbox. Use
1463 kaz 1.90 the mapping-update function to update the sandbox.
1464     These changes allow a Meta-CVS sandbox to blend with an existing
1465     directory structure, a useful feature.
1466    
1467     2002-04-17 Kaz Kylheku <kaz@ashi.footprints.net>
1468    
1469 kaz 1.89 * generic.lisp (mcvs-generic): Change how empty file argument list
1470     is handled. Rather than rewriting it to '(".") we do a proper
1471     map-prefix-lookup. Synchronizing and invoking CVS is elided
1472     if the resulting list of files to process is empty and the --nometa
1473     option is specified.
1474    
1475 kaz 1.87 2002-04-16 Kaz Kylheku <kaz@ashi.footprints.net>
1476    
1477 kaz 1.88 * branch.lisp (parse-sticky): New function.
1478     (read-cvs-entries): New function.
1479     (same-tag-check): New function.
1480     (what-tag-are-we-on): Renamed to what-are-we-sticky-to. Calls
1481     parse-sticky to return structured tag.
1482     (mcvs-merge): Make use of structured tags.
1483     (mcvs-list-branches): Make use of structured tags. Indicate
1484     when sandbox is inconsistently sticky.
1485    
1486     2002-04-16 Kaz Kylheku <kaz@ashi.footprints.net>
1487    
1488 kaz 1.87 * remove.lisp (mcvs-remove): Corrected careless bracketing
1489     introduced on 2002-03-15 that rendered this function ineffective.
1490    
1491 kaz 1.85 2002-04-04 Kaz Kylheku <kaz@ashi.footprints.net>
1492 kaz 1.82
1493 kaz 1.86 Absolute paths resolved against sandbox root.
1494    
1495     * posix.lisp (path-absolute-p): New function. Predicate to
1496     test whether a path is absolute.
1497    
1498     * mapping.lisp (in-sandbox-root-dir): sandbox-translate-paths
1499     function detects absolute path, and treats it as relative to
1500     sandbox root.
1501    
1502     2002-04-04 Kaz Kylheku <kaz@ashi.footprints.net>
1503    
1504 kaz 1.84 New switch command added, plus sticky tag related
1505     bugfixes and enhancement of mcvs list-branches.
1506    
1507     mcvs-main.lisp (*switch-options*): New constant.
1508     (*mcvs-command-table*): New entries.
1509     (*usage*): New help text.
1510    
1511     branch.lisp (what-branch-are-we-on): Function renamed to
1512     what-tag-are-we-on. Tests the first letter which is T or N; if
1513     it is not T, then it's not a branch tag. If there is a tag,
1514     it returns two values; the second value is NIL if it is not
1515     a branch tag, T otherwise.
1516     (mcvs-merge): Modified to use what-tag-are-we-on.
1517     (mcvs-list-branches): Show additional information about the
1518     current sticky tag.
1519     (mcvs-merge-wrapper): Fix wrong parenthesization introduced
1520     earlier today.
1521     (mcvs-switch-wrapper): New function.
1522    
1523 kaz 1.85 2002-04-04 Kaz Kylheku <kaz@ashi.footprints.net>
1524 kaz 1.84
1525 kaz 1.83 * branch.lisp (branch-tag-check): Check reserved symbol HEAD.
1526    
1527 kaz 1.85 2002-04-04 Kaz Kylheku <kaz@ashi.footprints.net>
1528 kaz 1.83
1529 kaz 1.82 New command to list branches.
1530    
1531     * mcvs-main.lisp (*list-branches-options*): New constant.
1532     (*mcvs-command-table*): Entries for new command added.
1533     (*usage*): Help text added.
1534    
1535     * branch.lisp (mcvs-list-branches,
1536     mcvs-list-branches-wrapper): New functions.
1537    
1538 kaz 1.80 2002-04-03 Kaz Kylheku <kaz@ashi.footprints.net>
1539    
1540 kaz 1.81 * branch.lisp (where-is-the-repository): New function.
1541     (cvs-make-or-advance-tag): Pass down CVSROOT to cvs rtag using
1542     the -d global option.
1543    
1544     2002-04-03 Kaz Kylheku <kaz@ashi.footprints.net>
1545    
1546 kaz 1.80 * branch.lisp (what-module-is-this): New function.
1547     (cvs-make-or-advance-tag): Use rtag rather than tag for tagging
1548     the branch being merged. This fixes the failure to merge added files.
1549     (mcvs-merge): Use mcvs-update rather than directly using cvs.
1550    
1551 kaz 1.78 2002-04-02 Kaz Kylheku <kaz@ashi.footprints.net>
1552    
1553 kaz 1.79 Implemented remerge command; redo a merge without moving
1554     around any tags.
1555    
1556     * branch.lisp (mcvs-merge): New keyword parameter remerge-p
1557     to indicate that a re-merge should be done, plus logic for
1558     doing so.
1559     (mcvs-remerge-wrapper): New function.
1560    
1561     * mcvs-main.lisp (*remerge-options*): New constant.
1562     (*mcvs-command-table*): New entry for remerge command.
1563    
1564     2002-04-02 Kaz Kylheku <kaz@ashi.footprints.net>
1565    
1566 kaz 1.78 First cut at implementing more automated branching and merging.
1567    
1568     * mcvs-main.lisp (*branch-options*, *merge-options*): New constants.
1569     (*mcvs-command-table*): New entries for branch and merge commands.
1570     (*usage*): New help text.
1571    
1572     * branch.lisp: New file.
1573     (*branch-char*): New constant.
1574     (tags-from-cvs-log, what-branch-are-we-on, branch-tag-check,
1575     mcvs-branch, mcvs-branch-wrapper, cvs-make-or-advance-tag, mcvs-merge,
1576     mcvs-merge-wrapper): New functions.
1577    
1578 kaz 1.87 2002-04-01 Kaz Kylheku <kaz@ashi.footprints.net>
1579 kaz 1.77
1580     checkout.lisp (mcvs-checkout): Emit informational message
1581     when checkout completes, because it's not obvious what directory
1582     was just created.
1583    
1584 kaz 1.76 2002-02-38 Kaz Kylheku <kaz@ashi.footprints.net>
1585    
1586     Error checking added to mcvs move: verifies that all
1587     sources exist and are known to Meta-CVS.
1588    
1589     * move.lisp (source-check): New function.
1590     (simple-rename, simple-move-to-dir): Use new function.
1591    
1592 kaz 1.74 2002-03-20 Kaz Kylheku <kaz@ashi.footprints.net>
1593    
1594 kaz 1.75 * rcsparse.lisp: File renamed to rcs-utils.lisp.
1595     (rcs-delta): New slot, delta-hash.
1596     (rcs-make-delta-hash): New function.
1597     (rcs-parse): Calls rcs-make-delta-hash to set up new slot.
1598    
1599     * convert.lisp: require changed to match file rename.
1600    
1601     2002-03-20 Kaz Kylheku <kaz@ashi.footprints.net>
1602    
1603 kaz 1.74 Some new macros for slot access.
1604    
1605     * slot-refs.lisp: New file.
1606     (with-slot-refs): New macro.
1607     (with-multi-slot-refs): New macro.
1608    
1609     * rcsparse.lisp (rcs-parse-newphrases, rcs-parse-admin,
1610     rcs-parse-delta): Replace uses
1611     of symbol-macrolet by with-slot-refs and with-multi-slot-refs.
1612    
1613 kaz 1.73 2002-03-19 Kaz Kylheku <kaz@ashi.footprints.net>
1614    
1615     Adding delta parsing to RCS parser.
1616    
1617     * rcsparse.lisp (rcs-delta): New struct.
1618     (rcs-file): New slot, deltas.
1619     (rcs-parse-newphrases): New function, factors out parsing of
1620     ``newphrases'' syntactic element out of rcs-parse-admin.
1621     (rcs-parse-admin): Use rcs-parse-newphrases.
1622     (rcs-parse-delta, rcs-parse-deltas): New functions.
1623     (rcs-parse): Parse both admin and deltas; store deltas in new
1624     rcs-file slot.
1625    
1626 kaz 1.72 2002-03-18 Kaz Kylheku <kaz@ashi.footprints.net>
1627    
1628     * posix.lisp (parse-posix-namestring): New function. Converts POSIX
1629     path to CL Path object.
1630 kaz 1.73
1631     * rcsparse.lisp: New file, implements RCS version file parser.
1632 kaz 1.72 (rcs-admin, rcs-file, rcs-token, rcs-token-stream): New structs.
1633     (rcs-peek-token, rcs-read-token): New generic functions.
1634     (rcs-extract-id-sym-or-num, rcs-extract-string,
1635     rcs-match-optional, rcs-match-token, rcs-parse, rcs-parse-admin,
1636     rcs-special-p): New functions.
1637    
1638     * convert.lisp (classify-tags): Work with association list rather
1639     than raw strings.
1640     (mcvs-convert): Use rcs-parse to extract tags. Fix call to
1641     mapping-generate name. Use parse-posix-namestring when opening
1642     version file. Generate informative chatter.
1643    
1644 kaz 1.69 2002-03-15 Kaz Kylheku <kaz@ashi.footprints.net>
1645    
1646 kaz 1.71 * remove.lisp (mcvs-remove): More detailed error checking.
1647     Checks for remove attempts against MCVS/ area, removes of local
1648     files not versioned under Meta-CVS, and nonexistent files.
1649    
1650     2002-03-15 Kaz Kylheku <kaz@ashi.footprints.net>
1651    
1652 kaz 1.70 * add.lisp (mcvs-add): Error message changed to tell user to use
1653     -R to add directory.
1654    
1655     * remove.lisp (mcvs-remove): New generalized boolean parameter
1656     indicates to do a recursive remove. This is controlled by the
1657     -R option which already exists. Behavior changed to not act
1658     on directories unless recursion is explicitly requested.
1659     (mcvs-remove-wrapper): Extract "R" option, pass down new boolean
1660     to mcvs-remove.
1661    
1662     2002-03-15 Kaz Kylheku <kaz@ashi.footprints.net>
1663    
1664 kaz 1.69 * remove.lisp (mcvs-remove-wrapper): Remove bogus error check.
1665    
1666 kaz 1.66 2002-03-14 Kaz Kylheku <kaz@ashi.footprints.net>
1667    
1668 kaz 1.68 * checkout.lisp (mcvs-checkout): Bugfix: must use checkout-dir, not
1669     module, when testing whether directory exists or was created properly.
1670    
1671     2002-03-14 Kaz Kylheku <kaz@ashi.footprints.net>
1672    
1673 kaz 1.67 Update takes file arguments now.
1674    
1675     * update.lisp (mcvs-update): If filename arguments are given, then
1676     just call mcvs-generic to do the work, but suppress the operation on
1677     meta files. If no filename arguments are given, then update everything.
1678     If the -p option is present, no synchronization is needed, before or
1679     after.
1680     (mcvs-update-wrapper): Pass command arguments down to mcvs-update.
1681    
1682     * mcvs-main.lisp (*update-options*): Add "p" option.
1683    
1684     * generic.lisp (mcvs-generic): New keyword parameter need-sync-after,
1685     a generalized boolean which can tell the function to do a
1686     mapping-synchronize after executing the CVS command.
1687    
1688     2002-03-14 Kaz Kylheku <kaz@ashi.footprints.net>
1689    
1690 kaz 1.66 * filt.lisp (filt-select-map): Do allow a date and revision to be
1691     specified; the revision could be a branch tag.
1692    
1693 kaz 1.62 2002-03-13 Kaz Kylheku <kaz@ashi.footprints.net>
1694    
1695 kaz 1.65 * mapping.lisp (malformed-map): New function.
1696     (mapping-dupe-check): Perform extra error checks when reading
1697     mapping, and turn them into a condition with a ``nice'' error message.
1698    
1699     2002-03-13 Kaz Kylheku <kaz@ashi.footprints.net>
1700    
1701 kaz 1.64 * mcvs-filt.lisp (filt-select-map): Handle error gracefully
1702     when reading map. It's easy to give CVS is a nonexistent tag.
1703    
1704     2002-03-13 Kaz Kylheku <kaz@ashi.footprints.net>
1705    
1706 kaz 1.63 The filt command takes arguments to select alternate revision
1707     of map.
1708    
1709     * mcvs-main.lisp (*filt-options*): New constant.
1710     (*mcvs-command-table*): Updated with new options.
1711     (mcvs-debug-shell): Restart name changed during debugging of filt
1712     changes.
1713    
1714     * filt.lisp (filt-select-map): New function. Loads either the
1715     local mapping, or retrieves an alternate mapping from CVS based
1716     on command line options.
1717     (mcvs-filt): Use filt-select-map rather than mapping-read.
1718    
1719     2002-03-13 Kaz Kylheku <kaz@ashi.footprints.net>
1720    
1721 kaz 1.62 * generic.lisp (mcvs-generic): Add .cvsignore to the list of
1722     metafiles.
1723    
1724 kaz 1.53 2002-03-12 Kaz Kylheku <kaz@ashi.footprints.net>
1725    
1726 kaz 1.61 * import.lisp (mcvs-import): Create a .cvsignore file for ignoring
1727     MAP-LOCAL.
1728    
1729     2002-03-12 Kaz Kylheku <kaz@ashi.footprints.net>
1730    
1731 kaz 1.60 Fix trailing slash bug in mcvs mv.
1732    
1733     * move.lisp (simple-move-to-dir): Canonicalize path after catenating
1734     destination and file base name. This nukes a double slash if
1735     we move to a name with a trailing slash.
1736     (move-guts): Treat a destination name that has a trailing slash
1737     as a directory, unless it exists already as a non-directory.
1738    
1739     2002-03-12 Kaz Kylheku <kaz@ashi.footprints.net>
1740    
1741 kaz 1.59 * mcvs-main.lisp (*cvs-options*): Added "error-terminate" and
1742     "error-continue".
1743     (*usage*): Update and reformat help text.
1744     (mcvs-execute): Process "error-terminate" and "error-continue"
1745     options.
1746    
1747     2002-03-12 Kaz Kylheku <kaz@ashi.footprints.net>
1748    
1749 kaz 1.58 * mapping.lisp (mapping-update): Messages related to moving,
1750     adding or removing files promoted to terse level, so only -Q
1751     can suppress them.
1752    
1753     2002-03-12 Kaz Kylheku <kaz@ashi.footprints.net>
1754    
1755 kaz 1.57 * update.lisp (mcvs-update): Changing level of chatter messages.
1756     * move.lisp (mcvs-move): Likewise.
1757     * add.lisp (mcvs-add): Likewise.
1758     * remove.lisp (mcvs-remove): Likewise.
1759     * checkout.lisp (mcvs-checkout): Likewise.
1760     * generic.lisp (mcvs-generic): Likewise.
1761     * import.lisp (mcvs-import): Likewise.
1762     * mapping.lisp (mapping-dupe-check): Likewise.
1763     (mapping-update): Likewise.
1764    
1765     2002-03-12 Kaz Kylheku <kaz@ashi.footprints.net>
1766    
1767 kaz 1.56 Support for -q, -Q and -e global options.
1768    
1769     * posix.lisp (*editor*): New special variable.
1770     (edit-file): Check *editor* variable; if not nil, use it.
1771    
1772     * mcvs-main.lisp (*usage*): Update help text.
1773     (mcvs-execute): Set *mcvs-chatter-level* according to -q or -Q.
1774     Set *editor* if -e is specified.
1775    
1776     2002-03-12 Kaz Kylheku <kaz@ashi.footprints.net>
1777    
1778 kaz 1.55 * mcvs-main.lisp (*cvs-options*): Remove obsolete "a".
1779     (*cvs-options-arg*): Add missing "r".
1780     (*usage*): New constant, help text.
1781     (mcvs-execute): Process help and version command line options.
1782    
1783     2002-03-12 Kaz Kylheku <kaz@ashi.footprints.net>
1784    
1785 kaz 1.54 * options.lisp (parse-opt): Make error messages more consistent.
1786    
1787     2002-03-12 Kaz Kylheku <kaz@ashi.footprints.net>
1788    
1789 kaz 1.53 * find-bind.lisp (find-bind): Make rem-var optional; sometimes
1790     the user might not care about the remaining unmatched list.
1791    
1792 kaz 1.49 2002-03-11 Kaz Kylheku <kaz@ashi.footprints.net>
1793    
1794 kaz 1.52 * find-bind.lisp (find-bind): Documentation string change. Clarify
1795     that default values are substituted whenever a variable would
1796     otherwise be bound to the value NIL, even through an explicit
1797     match.
1798    
1799     2002-03-11 Kaz Kylheku <kaz@ashi.footprints.net>
1800    
1801 kaz 1.51 Sane filtering of -d option in checkout.
1802    
1803     * find-bind.lisp (find-bind): Variable bindings can specify
1804     a third element, which provides a default value for any variables
1805     that turn out NIL.
1806    
1807     * checkout.lisp (mcvs-checkout): Filter out the -d dir option,
1808     and use it to override the name of the checkout directory,
1809     the way CVS checkout does it.
1810    
1811     2002-03-11 Kaz Kylheku <kaz@ashi.footprints.net>
1812    
1813 kaz 1.50 Bugfix: mcvs add was not processing existing :ignore's in MCVS/TYPES.
1814    
1815     * add.lisp (mcvs-add): Use old types as well as new types
1816     to filter for ignores.
1817    
1818     2002-03-11 Kaz Kylheku <kaz@ashi.footprints.net>
1819    
1820 kaz 1.49 * find-bind.lisp: New file.
1821     (find-bind-extract-vals): New function.
1822     (find-bind): New macro.
1823    
1824     * error.lisp (restart-destructure): Macro removed.
1825     (mcvs-error-handler): Uses generic find-bind instead of
1826     restart-destructure.
1827    
1828 kaz 1.43 2002-03-09 Kaz Kylheku <kaz@ashi.footprints.net>
1829    
1830 kaz 1.48 * filt.lisp (mcvs-filt): Bugfix: do not stop processing line
1831     if F- file name is not found in hash table.
1832    
1833     2002-03-09 Kaz Kylheku <kaz@ashi.footprints.net>
1834    
1835 kaz 1.47 Commit is handled through mcvs-generic, so it can take
1836     filename arguments, and honor --nometa.
1837    
1838     * commit.lisp: File removed.
1839     (mcvs-commit): Function removed.
1840     (mcvs-commit-wrapper): Moved to generic.lisp.
1841    
1842     * generic.lisp (mcvs-commit-wrapper): Moved from commit.lisp,
1843     changed to invoke mcvs-generic.
1844     (mcvs-generic): Only add TYPES file to list if it actually
1845     exists.
1846    
1847     2002-03-09 Kaz Kylheku <kaz@ashi.footprints.net>
1848    
1849 kaz 1.46 New --nometa command line option.
1850    
1851     * mcvs-main.lisp (*cvs-options*): Add "nometa" to list.
1852     (mcvs-execute): Filter global options to recognize
1853     Meta-CVS-specific ones.
1854    
1855     * options.lisp (*nometa-option*): New special variable.
1856     (filter-global-options): New function.
1857    
1858     * generic.lisp (mcvs-generic): Honor *nometa-option* special
1859     variable.
1860    
1861     2002-03-09 Kaz Kylheku <kaz@ashi.footprints.net>
1862    
1863 kaz 1.45 * generic.lisp (mcvs-generic): Make sure TYPES file is
1864     included in list of files.
1865    
1866     2002-03-09 Kaz Kylheku <kaz@ashi.footprints.net>
1867    
1868 kaz 1.44 * mcvs-main.lisp (*add-options*): Support -R option for add.
1869     Thus, recursive add works now.
1870    
1871     2002-03-09 Kaz Kylheku <kaz@ashi.footprints.net>
1872    
1873 kaz 1.43 Fix mcvs filt so it handles suffixed F- files properly.
1874    
1875     * filt.lisp (make-filt-hash): New function.
1876     (mcvs-filt): After matching hex digits, also check for
1877     a suffix match.
1878    
1879 kaz 1.40 2002-02-17 Kaz Kylheku <kaz@ashi.footprints.net>
1880    
1881 kaz 1.42 Support for file type keyword treatment under mcvs add.
1882    
1883     * add.lisp (mcvs-add): Restructured to build up list of new file
1884     suffixes, allow the user to edit the file which determines how
1885     they are treated, filter out ignored files and pass -k options
1886     to multiple cvs adds.
1887    
1888     * types.lisp (*mcvs-new-types*): New constant.
1889     (*types-comments*): Constant moved here from import.lisp.
1890     (types-remove-ignores): New function. Code factored out from
1891     mcvs-import.
1892     (types-let-user-edit): Likewise.
1893     (types-make-cvs-adds): New function.
1894    
1895     * import.lisp (*types-comments*): Constant removed. Moved to
1896     types.lisp
1897     (mcvs-import): Code factored out to new functions in types.lisp, which
1898     are also used by add.lisp.
1899    
1900     2002-02-17 Kaz Kylheku <kaz@ashi.footprints.net>
1901    
1902 kaz 1.41 * print.lisp: New file.
1903     (print-assoc-list): New function.
1904     * types.lisp: Use print-assoc-list to nicely print the types.
1905     * import.lisp (mcvs-import): Don't bother getting user to
1906     edit the types if the type list is empty. In fact, don't
1907     even create the file.
1908    
1909     2002-02-17 Kaz Kylheku <kaz@ashi.footprints.net>
1910    
1911     * add.lisp (mcvs-add): Use new form of mapping-generate-name.
1912    
1913     2002-02-17 Kaz Kylheku <kaz@ashi.footprints.net>
1914    
1915 kaz 1.40 * import.lisp (mcvs-import): Fix broken restart for re-editing
1916     the types file.
1917     (*types-comments*): Drastically shorten the help text.
1918    
1919 kaz 1.38 2002-02-16 Kaz Kylheku <kaz@ashi.footprints.net>
1920    
1921 kaz 1.39 Support for filetypes in import.
1922    
1923     * posix.lisp (suffix): Separator character parameter is optional;
1924     multiple occurences of character lead to one big suffix like
1925     ".tar.gz" instead of ".gz". A leading dot means it's not a suffix but
1926     a hidden file like ".exrc".
1927     (edit-file): New function, brings up text editor for specified file.
1928    
1929     * clisp-linux.lisp (env-lookup): New function for environment
1930     variable lookup.
1931    
1932     * types.lisp: New source file.
1933     (*mcvs-types-name*, *mcvs-types*): New constants for TYPES filename.
1934     (types-read, types-write, types-sanity-check,
1935     types-to-import-wrapper-args): New functions.
1936    
1937     * import.lisp (*types-comments*): New constant.
1938     (mcvs-import): Restructured to build up list of file suffixes,
1939     allow the user to edit the file which determines how they
1940     are treated, filter out ignored files and pass -W options to cvs import
1941     to handle the rest. Failed cvs import is turned into restartable
1942     condition.
1943    
1944     * mapping.lisp (mapping-generate-name): Takes a suffix parameter.
1945     The F-files now carry a suffix obtained from the original file,
1946     because I have concluded that this was the only reasonable way
1947     to integrate with CVS.
1948    
1949     2002-02-16 Kaz Kylheku <kaz@ashi.footprints.net>
1950    
1951 kaz 1.38 * add.lisp (mcvs-add): Last change completely broke add due
1952     to not breaking out of the retry loop.
1953    
1954 kaz 1.36 2002-02-13 Kaz Kylheku <kaz@ashi.footprints.net>
1955    
1956 kaz 1.37 * move.lisp (mcvs-move): If the mapping-update operation returns
1957     nil, or terminates by a non-local jump, restore the filemap.
1958     * mapping.lisp (mapping-update): When returning normally,
1959     return t. When returning after doing a rollback, return nil.
1960    
1961     2002-02-13 Kaz Kylheku <kaz@ashi.footprints.net>
1962    
1963 kaz 1.36 * error.lisp (mcvs-error-handler): Bugfix. We were closing over
1964     a binding of the iteration variable of a dolist, which has only
1965     one binding over the entire loop.
1966    
1967     * mapping.lisp (mapping-update): Gathers up info all local
1968     clobbered files, and then throw the error. Provides restart
1969     which allows user to print the list of clobbered files, and
1970     a restart which allows the user to have those files clobbered.
1971    
1972     2002-02-13 Kaz Kylheku <kaz@ashi.footprints.net>
1973    
1974     * checkout.lisp (mcvs-checkout-wrapper): Bugfix for last bugfix.
1975    
1976 kaz 1.35 2002-02-11 Kaz Kylheku <kaz@ashi.footprints.net>
1977    
1978     * checkout.lisp (mcvs-checkout-wrapper): Bugfix for bad
1979     destructuring-bind if there are no arguments.
1980    
1981 kaz 1.30 2002-02-10 Kaz Kylheku <kaz@ashi.footprints.net>
1982    
1983 kaz 1.34 * mapping.lisp (mapping-difference): Reformatted documentation string.
1984     (mapping-update): Implemented a continue restart which rolls back
1985     the changes done to the local filesystem.
1986    
1987     2002-02-10 Kaz Kylheku <kaz@ashi.footprints.net>
1988    
1989 kaz 1.31 * error.lisp (mcvs-error-handler): Rearranging the menu,
1990     so "T" is clumped with the main options, and any special restarts
1991 kaz 1.32 are clearly separated. Changed wording.
1992 kaz 1.31
1993     2002-02-10 Kaz Kylheku <kaz@ashi.footprints.net>
1994    
1995 kaz 1.30 * update.lisp (mcvs-update): Re-print the "Invoking CVS" chatter
1996     if the user re-tries the error.
1997    
1998     * add.lisp (mcvs-add): CVS failure is now a restartable error;
1999 kaz 1.33 user can decide whether to roll back the effects or retry the
2000     CVS add, or terminate to keep the effects anyway despite
2001     the failed add.
2002 kaz 1.30
2003     2002-02-10 Kaz Kylheku <kaz@ashi.footprints.net>
2004    
2005     * install.sh: Stop the script if there are compilation errors.
2006    
2007 kaz 1.24 2002-02-09 Kaz Kylheku <kaz@ashi.footprints.net>
2008    
2009 kaz 1.29 * error.lisp (*mcvs-errors-occured-p*): New special variable.
2010     (mcvs-error-handler): Set *mcvs-errors-occured-p* to T.
2011     * mcvs-main.lisp (mcvs): Take *mcvs-errors-occured-p* into
2012     account in computing termination status.
2013    
2014     2002-02-09 Kaz Kylheku <kaz@ashi.footprints.net>
2015    
2016 kaz 1.28 * update.lisp: Remove spurious newlines from error messages.
2017     * add.lisp: Likewise.
2018     * options.lisp: Likewise.
2019     * mapping.lisp: Likewise.
2020    
2021     2002-02-09 Kaz Kylheku <kaz@ashi.footprints.net>
2022    
2023 kaz 1.27 Adding some restarts around cvs update.
2024    
2025     * posix.lisp (execute-command-xargs): Bail with nil return
2026     value if any command line fails.
2027    
2028     * update.lisp (mcvs-update): Tests return value of execute-program
2029     and signal condition if it's nil. Provides a continue restart
2030     as well as a retry restart to try the command again.
2031    
2032     * error.lisp (mcvs-error-handler): Show retry restarts as
2033     a special menu item "R".
2034    
2035     2002-02-09 Kaz Kylheku <kaz@ashi.footprints.net>
2036    
2037 kaz 1.26 Added a much improved error handling routine in anticipation
2038     of better use of restarts.
2039    
2040     * error.lisp: New file
2041     (restart-destructure): New macro.
2042     (*mcvs-error-treatment*): Special variable, moved here from
2043     mcvs-main.
2044     (mcvs-error-handler): New function.
2045    
2046     * mcvs-main.lisp (mcvs-top-error-handler): Function removed.
2047     (mcvs-execute): Bind error to new mcvs-error-handler instad
2048     of mcvs-top-error-handler.
2049    
2050     2002-02-09 Kaz Kylheku <kaz@ashi.footprints.net>
2051    
2052 kaz 1.25 * mcvs-main.lisp (*mcvs-command-table*): The "stat" abbreviation
2053     for status command added.
2054    
2055     2002-02-09 Kaz Kylheku <kaz@ashi.footprints.net>
2056    
2057 kaz 1.24 Hooking conversion tool into command structure.
2058    
2059     * mcvs-main.lisp (*convert-options*): New constant.
2060     (*mcvs-command-table*): New entry for mcvs-convert-wrapper.
2061     * convert.lisp (mcvs-convert): Fix reference to nonexistent variable.
2062     (mcvs-convert-wrapper): New function.
2063    
2064 kaz 1.22 2002-02-08 Kaz Kylheku <kaz@ashi.footprints.net>
2065    
2066 kaz 1.23 Beginning work on repository conversion utility.
2067    
2068     * convert.lisp: New file. Contains conversion utility
2069     to make an Meta-CVS repository from an ordinary CVS repository,
2070     while preserving all history, tags and branches.
2071     (remove-attic-component, classify-tags, read-tags,
2072     mcvs-convert): New functions.
2073    
2074     * posix.lisp (suffix): New function. Computes suffix of file.
2075     (execute-program-xargs): New optional parameter, for specifying
2076     fixed part added at the end of each generated command line.
2077    
2078     * mapping.lisp (*mcvs-map-name*, *mcvs-local-map-name*): New constants.
2079     (*mcvs-map*, *mcvs-map-local*): Redefined in terms of new constants.
2080     (mapping-generate-name): New key parameter no-dir for not adding
2081     the directory prefix.
2082    
2083     2002-02-08 Kaz Kylheku <kaz@ashi.footprints.net>
2084    
2085 kaz 1.22 * checkout.lisp (mcvs-checkout): Ensure local mapping is
2086     sorted when written out, for easier comparisons.
2087    
2088 kaz 1.21 2002-02-07 Kaz Kylheku <kaz@ashi.footprints.net>
2089    
2090     * sync.lisp (synchronize-files): Return :dir symbol when either
2091     argument is a directory.
2092     * mapping.lisp (mapping-synchronize): Chatter output messages
2093     are shorter. Handles :dir return value from synchronize-files.
2094     (mapping-update): New sanity checks for moved and added
2095     files, to avoid clobbering local files. Removed redundant
2096     call to ensure-directories-exit in move logic, because
2097     synchronize-files will do it anyway. Chatter messages reordered
2098     to occur before their corresponding action is done.
2099    
2100     2002-02-07 Kaz Kylheku <kaz@ashi.footprints.net>
2101    
2102     Improve error handling, and builtin ``debug shell''.
2103    
2104     * mcvs-main.lisp (*mcvs-error-treatment*): Special variable
2105     can have new domain value, namely :decline.
2106     (mcvs-top-error-handler): Print error message when terminating
2107     non-restartable error. Handle new :decline treatment by
2108     simply returning.
2109     (mcvs-debug-shell): Set *mcvs-error-treatment* to :decline
2110     so that errors are caught by debugger.
2111    
2112 kaz 1.20 2002-02-04 Kaz Kylheku <kaz@ashi.footprints.net>
2113    
2114     * mapping.lisp (mapping-sort): Removed function.
2115     (mapping-write): Sort written map by F- file names,
2116     not by path names. This is far better for merging, because
2117     files stay in the same place when they are renamed.
2118    
2119 kaz 1.17 2002-02-03 Kaz Kylheku <kaz@ashi.footprints.net>
2120    
2121 kaz 1.19 Added status, log and annotate.
2122    
2123     * mcvs-main.lisp: (*log-options*, *status-options*,
2124     *annotate-options*): New constants.
2125     (*mcvs-command-table*): Add new entries.
2126    
2127     * generic-lisp (mcvs-log-wrapper, mcvs-status-wrapper,
2128     mcvs-annotate-wrapper): New functions.
2129    
2130     2002-02-03 Kaz Kylheku <kaz@ashi.footprints.net>
2131    
2132 kaz 1.18 Added tag command.
2133    
2134     * diff.lisp: File renamed to generic.lisp.
2135     (mcvs-diff): Function renamed to mcvs-generic.
2136    
2137     * generic.lisp (mcvs-generic): Function no longer dedicated to
2138     diffing only; takes CVS command to execute as an argument,
2139     also takes arguments and files as separate lists.
2140     (mcvs-diff-wrapper): Modified to invoke mcvs-generic properly.
2141     (mcvs-tag-wrapper): New function, uses mcvs-generic to implement
2142     tag command.
2143    
2144     * mcvs-main.lisp (*tag-options*): New constant.
2145     (*mcvs-command-table*): New entry for tag command.
2146    
2147     2002-02-03 Kaz Kylheku <kaz@ashi.footprints.net>
2148    
2149 kaz 1.17 Added workaround for operating system argument passing limitations,
2150     resembling the Unix xargs utility. Also, trimmed some fat
2151     from the basename function.
2152    
2153     * clisp-linux.lisp: (*argument-limit*): New constant added.
2154     (arglist-to-command-string): Function removed.
2155     (execute-program): Function removed.
2156     (shell-interpreter): New function, wrapper for CLISP's shell
2157     function, turns exit status into T (success) or NIL (failure).
2158    
2159     * diff.lisp (mcvs-diff): Uses execute-program-xargs instead
2160     of execute-program.
2161    
2162     * posix.lisp (basename): Does not canonicalize path name. This
2163     turns out to be an unnecessary performance hit in some cases.
2164     (arglist-to-command-string): New function. Similar to what was
2165     removed from clisp-linux, but this one properly escapes all
2166     shell metacharacters.
2167     (execute-program): New function, calls shell-interpreter.
2168     (execute-program-xargs): New function. Takes two argument lists.
2169     Forms one or more command lines by combining the first argument list
2170     with one or more pieces of the second argument list, and
2171     executes each command. The length of the pieces is determined
2172     by the argument passing limit.
2173    
2174     * dirwalk.lisp (ensure-directories-gone): Add use of
2175     canonicalize-path because basename doesn't do it.
2176    
2177 kaz 1.12 2002-02-02 Kaz Kylheku <kaz@ashi.footprints.net>
2178    
2179 kaz 1.16 Algorithmic efficiency improvements. No longer using
2180     abstract set operations to update file structure or find
2181     duplicates in the maps. Could still streamline the sorting.
2182    
2183     * mapping.lisp (mapping-sort): Express more succinctly using key.
2184     (mapping-dupe-check): Rewrite using loop over sorted lists.
2185     (mapping-difference): New function for computing mapping change.
2186     (mapping-update): Modify to use mapping-difference.
2187    
2188     2002-02-02 Kaz Kylheku <kaz@ashi.footprints.net>
2189    
2190 kaz 1.15 * mapping.lisp (mapping-update): When moving files, ensure
2191     that the target is unlinked if it exists.
2192    
2193     * move.lisp (simple-rename): No longer do target unlinking
2194     here. Also bugfix: it wasn't handling renames of directories
2195     containing just one file.
2196    
2197     2002-02-02 Kaz Kylheku <kaz@ashi.footprints.net>
2198    
2199 kaz 1.13 * mapping.lisp (mapping-dupe-check): New function for
2200     detecting duplicate objects or paths in a mapping.
2201     (mapping-sane-p): Function removed.
2202     (mapping-read): Use mapping-dupe-check to verify a map
2203     when asked by the sanity-check keyword.
2204     (mapping-update): Specify sanity check when reading MCVS/MAP.
2205    
2206 kaz 1.14 * checkout.lisp (mcvs-checkout): Checkout also performs
2207     sanity check.
2208    
2209 kaz 1.13 2002-02-02 Kaz Kylheku <kaz@ashi.footprints.net>
2210    
2211 kaz 1.12 * mcvs-main.lisp (mcvs): Use CLISP's exit function correctly
2212     to establish proper termination status.
2213    
2214 kaz 1.8 2002-01-31 Kaz Kylheku <kaz@ashi.footprints.net>
2215    
2216 kaz 1.10 * mcvs-main.lisp (mcvs-execute): Parse command-specific options
2217     properly based on knowledge of each command's set of options.
2218     (parse-args): Function removed.
2219    
2220 kaz 1.11 * options.lisp (parse-opt): Correctly process long options with
2221     arguments. Argument is part of the string, separated by = symbol.
2222    
2223 kaz 1.10 2002-01-31 Kaz Kylheku <kaz@ashi.footprints.net>
2224    
2225 kaz 1.9 * options.lisp (parse-opt): When multiple options characters are
2226     bunched up into one argument, and one of them other than the
2227     last one takes an argument, then the remaining ones are
2228     considered to constitute a string which is an argument to that
2229     option. For instance -y32 means -y 32, not -y -3 -2, assuming
2230     that y is an option that requires an argument.
2231    
2232     2002-01-31 Kaz Kylheku <kaz@ashi.footprints.net>
2233    
2234     Top level handler terminates by non-local exit back to
2235     mcvs function, rather than by calling (exit).
2236    
2237     * mcvs-main.lisp (mcvs-top-error-handler): Restructured
2238     to call (throw 'mcvs-exit t).
2239     (mcvs-execute): Ensure that NIL is returned by normal exit.
2240     (mcvs): Catches 'mcvs-exit throw, and calls (exit 0) or (exit 1)
2241     accordingly.
2242    
2243    
2244     2002-01-31 Kaz Kylheku <kaz@ashi.footprints.net>
2245    
2246 kaz 1.8 Renamed all ``filemap-'' functions to ``mapping-'' prefix.
2247    
2248     * mapping.lisp (filemap-generate-name, filemap-sort,
2249     filemap-extract-paths, filemap-lookup, filemap-prefix-lookup,
2250     filemap-prefix-matches, filemap-object-lookup,
2251     filemap-same-object-p, filemap-same-path-p, filemap-moved-p,
2252     filemap-rename-files, filemap-sane-p): Old names removed.
2253     (mapping-generate-name, mapping-sort,
2254     mapping-extract-paths, mapping-lookup, mapping-prefix-lookup,
2255     mapping-prefix-matches, mapping-object-lookup,
2256     mapping-same-object-p, mapping-same-path-p, mapping-moved-p,
2257     mapping-rename-files, mapping-sane-p): New names created.
2258     (mapping-read, mapping-write, mapping-synchronize,
2259     mapping-update): Edit calls to renamed functions.
2260     * add.lisp (mcvs-add): Likewise.
2261     * diff.lisp (mcvs-diff): Likewise.
2262     * filt.lisp (mcvs-filt): Likewise.
2263     * import.lisp (mcvs-import): Likewise.
2264     * move.lisp (simple-rename, simple-move-to-dir, move-guts): Likewise.
2265     * remove.lisp (mcvs-remove): Likewise.
2266    
2267 kaz 1.6 2002-01-30 Kaz Kylheku <kaz@ashi.footprints.net>
2268    
2269 kaz 1.7 Factored out repeated code for reading and writing of the MAP and
2270     MAP-LOCAL files.
2271    
2272     * mapping.lisp (mapping-read, mapping-write): New functions.
2273     (mapping-synchronize, mapping-update): Use new functions.
2274     * move.lisp (mcvs-move): Likewise.
2275     * filt.lisp (mcvs-filt): Likewise.
2276     * add.lisp (mcvs-add): Likewise.
2277     * remove.lisp (mcvs-remove): Likewise.
2278     * checkout.lisp (mcvs-checkout): Likewise.
2279     * diff.lisp (mcvs-diff): Likewise.
2280     * import.lisp (mcvs-import): Likewise.
2281    
2282     2002-01-30 Kaz Kylheku <kaz@ashi.footprints.net>
2283    
2284 kaz 1.6 * filt.lisp (mcvs-filt): use *mcvs-dir* variable instead of
2285     hard coding "MCVS" string.
2286    
2287     2002-01-30 Kaz Kylheku <kaz@ashi.footprints.net>
2288    
2289     * MCVS-PAPER: Renamed to Meta-CVS-PAPER
2290    
2291     * README: Change all references to MCVS to Meta-CVS, the
2292     new official name of the program.
2293     * add.lisp: Likewise
2294     * chatter.lisp: Likewise
2295     * checkout.lisp: Likewise
2296     * clisp-linux.lisp: Likewise
2297     * commit.lisp: Likewise
2298     * diff.lisp: Likewise
2299     * dirwalk.lisp: Likewise
2300     * filt.lisp: Likewise
2301     * import.lisp: Likewise
2302     * INSTALL: Likewise
2303     * mapping.lisp: Likewise
2304     * mcvs-main.lisp: Likewise
2305     * Meta-CVS-PAPER: Likewise
2306     * move.lisp: Likewise
2307     * options.lisp: Likewise
2308     * posix.lisp: Likewise
2309     * RELEASE-NOTES: Likewise
2310     * remove.lisp: Likewise
2311     * restart.lisp: Likewise
2312     * seqfuncs.lisp: Likewise
2313     * split.lisp: Likewise
2314     * sync.lisp: Likewise
2315     * system.lisp: Likewise
2316     * update.lisp: Likewise
2317    
2318 kaz 1.4 2002-01-28 Kaz Kylheku <kaz@ashi.footprints.net>
2319    
2320 kaz 1.5 * move.lisp (move-guts): test the actual filesystem as well
2321     as the map for existence of a directory or file. This makes
2322     the move operation behave better. Files can be moved to an
2323     existing directory that is not known to MCVS, and a file
2324     can properly clobber a target file that is not known to MCVS.
2325    
2326     * clisp-linux.lisp (directory-p, regular-p, symlink-p): define
2327     methods for these generic functions for a NIL argument, such
2328     that they return NIL.
2329    
2330     2002-01-28 Kaz Kylheku <kaz@ashi.footprints.net>
2331    
2332 kaz 1.4 * move.lisp (simple-move-to-dir): eliminated a bunch of code
2333     with the result that mcvs mv now works more like the Unix mv
2334     when moving a directory to another directory.
2335    
2336     * mcvs-main.lisp (mcvs-execute): fix bogus error message
2337     when options are given but no command.
2338    
2339     * README: don't use -z3 in example because this style of
2340     specifying an argument to an option doesn't work.
2341    
2342 kaz 1.1 2002-01-27 Kaz Kylheku <kaz@ashi.footprints.net>
2343    
2344     * add.lisp (mcvs-add): Remove bogus test for NIL or T; allow
2345     recursivep to be a generalized boolean variable. This allows
2346     mcvs add -R to work properly.
2347 kaz 1.2
2348     * mcvs-main.lisp (*cvs-command-options-arg*): add support
2349     for -u parameter, useful in cvs diff.
2350 kaz 1.3 (*mcvs-command-table*): Add "fi" shorthand for "filt".

  ViewVC Help
Powered by ViewVC 1.1.5