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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.5