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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.5