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

  ViewVC Help
Powered by ViewVC 1.1.5