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

  ViewVC Help
Powered by ViewVC 1.1.5