/[meta-cvs]/meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3
ViewVC logotype

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.234 - (hide annotations)
Fri Dec 27 23:45:50 2002 UTC (11 years, 3 months ago) by kaz
Branch: MAIN
Changes since 1.233: +5 -0 lines
Merging from mcvs-1-0-branch.

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

  ViewVC Help
Powered by ViewVC 1.1.5