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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


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

Support -k CVS option in merge and remerge commands.
Reported by Jamie Wellnitz.

* code/mcvs-main.lisp (*merge-options*, *remerge-options*): Add
one argument -k option.

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

  ViewVC Help
Powered by ViewVC 1.1.5