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

  ViewVC Help
Powered by ViewVC 1.1.5