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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.237 - (hide annotations)
Tue Jan 14 05:46:15 2003 UTC (11 years, 3 months ago) by kaz
Branch: MAIN
Changes since 1.236: +6 -0 lines
Merging from mcvs-1-0-branch.

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

  ViewVC Help
Powered by ViewVC 1.1.5