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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.5