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

  ViewVC Help
Powered by ViewVC 1.1.5