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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.5