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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.250 - (hide annotations)
Sun Feb 23 18:59:33 2003 UTC (11 years, 2 months ago) by kaz
Branch: MAIN
Changes since 1.249: +5 -0 lines
Merging from mcvs-1-0-branch.

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

  ViewVC Help
Powered by ViewVC 1.1.5