/[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.43 - (hide annotations)
Thu Jan 30 11:04:43 2003 UTC (11 years, 2 months ago) by kaz
Branch: mcvs-1-0-branch
CVS Tags: mcvs-1-0-1
Changes since 1.205.2.42: +9 -0 lines
* code/posix.lisp: Move some (declaim inline) to the correct
location, before the function to be inlined.

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

  ViewVC Help
Powered by ViewVC 1.1.5