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

  ViewVC Help
Powered by ViewVC 1.1.5