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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.224 - (hide annotations)
Thu Oct 31 04:46:39 2002 UTC (11 years, 5 months ago) by kaz
Branch: MAIN
Changes since 1.223: +5 -0 lines
Merging from mcvs-1-0-branch.

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

  ViewVC Help
Powered by ViewVC 1.1.5