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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.157.2.2 - (hide annotations)
Sun Aug 25 16:07:04 2002 UTC (11 years, 7 months ago) by kaz
Branch: symlink-branch
Changes since 1.157.2.1: +46 -0 lines
Support for symbolic links added to the mapping module.  The format of
the map file has changed to accomodate this.  The new format of the
list entries is (:keyword "id" "path" ...) where the keyword is either
:file or :symlink (for now, extensible obviously), "id" is a unique
identifier (for regular files, it is their MCVS/F-* name) and "path" is
the sandbox path. Other things can follow; for symlinks, there is a
string representing the symlink target.  Internally, a new data type
called mapping-entry is used; this is a struct. So the functions which
read and write maps now convert between the struct format and the above
format.

* code/unix-bindings/unix.lisp (unix-funcs:readlink): New function.

* code/unix-bindings/impl.c (impl_readlink): New function.

* code/clisp-unix.lisp (readlink-error): New condition.
(initialize-instance readlink-error): New method for
initialize-instance generic function, specialized for readlink-error.
(readlink): New function.

* code/mapping.lisp (mapping-entry): New struct, with slots
file, id, path and target.
(mapping-same-object-p): Renamed to mapping-same-id-p.
(mapping-object-lookup, mapping-moved-p): Unused functions removed.
(mapping-extract-paths, mapping-lookup, mapping-prefix-lookup,
mapping-prefix-matches, mapping-same-path-p, mapping-rename-files,
mapping-removed-files): Functions updated to use the new data
structure.
(mapping-dupe-checks): Rewritten for new data structure, and to
use hashes rather than silly sorting.
(mapping-convert-old-style-in, mapping-convert-in,
mapping-convert-out): New functions.
(mapping-read): Handle new and old style representations,
handle conversion to internal representation.
(mapping-write): Convert to new-style external representation
before writing out.
(mapping-synchronize): Handle symbolic links. If a link is missing,
create it. If it's present but different from what it should be,
erase it and re-create it.
(mapping-update): Use new data structure. Handle symbolic links.

* code/remove.lisp (mcvs-remove): Refer to new function
name, mapping-same-id-p.
1 kaz 1.157.2.2 2002-08-24 Kaz Kylheku <kaz@ashi.footprints.net>
2    
3     Support for symbolic links added to the mapping module. The format of
4     the map file has changed to accomodate this. The new format of the
5     list entries is (:keyword "id" "path" ...) where the keyword is either
6     :file or :symlink (for now, extensible obviously), "id" is a unique
7     identifier (for regular files, it is their MCVS/F-* name) and "path" is
8     the sandbox path. Other things can follow; for symlinks, there is a
9     string representing the symlink target. Internally, a new data type
10     called mapping-entry is used; this is a struct. So the functions which
11     read and write maps now convert between the struct format and the above
12     format.
13    
14     * code/unix-bindings/unix.lisp (unix-funcs:readlink): New function.
15    
16     * code/unix-bindings/impl.c (impl_readlink): New function.
17    
18     * code/clisp-unix.lisp (readlink-error): New condition.
19     (initialize-instance readlink-error): New method for
20     initialize-instance generic function, specialized for readlink-error.
21     (readlink): New function.
22    
23     * code/mapping.lisp (mapping-entry): New struct, with slots
24     file, id, path and target.
25     (mapping-same-object-p): Renamed to mapping-same-id-p.
26     (mapping-object-lookup, mapping-moved-p): Unused functions removed.
27     (mapping-extract-paths, mapping-lookup, mapping-prefix-lookup,
28     mapping-prefix-matches, mapping-same-path-p, mapping-rename-files,
29     mapping-removed-files): Functions updated to use the new data
30     structure.
31     (mapping-dupe-checks): Rewritten for new data structure, and to
32     use hashes rather than silly sorting.
33     (mapping-convert-old-style-in, mapping-convert-in,
34     mapping-convert-out): New functions.
35     (mapping-read): Handle new and old style representations,
36     handle conversion to internal representation.
37     (mapping-write): Convert to new-style external representation
38     before writing out.
39     (mapping-synchronize): Handle symbolic links. If a link is missing,
40     create it. If it's present but different from what it should be,
41     erase it and re-create it.
42     (mapping-update): Use new data structure. Handle symbolic links.
43    
44     * code/remove.lisp (mcvs-remove): Refer to new function
45     name, mapping-same-id-p.
46    
47 kaz 1.157.2.1 2002-08-23 Kaz Kylheku <kaz@ashi.footprints.net>
48    
49     * code/clisp-unix.lisp (link-error): New slot, kind. Holds
50     the string "symbolic" or "hard".
51     (initialize-instance link-error): Use new slot in constructing
52     message.
53     (link): Specify "hard" value for :kind slot of condition.
54     (symlink): New function.
55    
56     * code/clisp-linux.lisp: Likewise.
57    
58 kaz 1.156 2002-08-17 Kaz Kylheku <kaz@ashi.footprints.net>
59    
60 kaz 1.157.2.1 * code/posix.lisp (execute-program): Function removed.
61     * code/clisp-linux.lisp (execute-program): Function added. Works
62 kaz 1.157 in terms of CLISP's run-program function rather than the shell
63     function, thus eliminating the need to build a command string
64     and escape shell characters.
65     * clisp-unix.lisp (excecute-program): Likewise.
66    
67     2002-08-17 Kaz Kylheku <kaz@ashi.footprints.net>
68    
69 kaz 1.157.2.1 * code/posix.lisp (edit-file): Function renamed to invoke-file-on,
70 kaz 1.156 because this name clashes with a standard Common Lisp symbol.
71 kaz 1.157.2.1 * code/types.lisp (types-let-user-edit): Updated to use new name.
72 kaz 1.156
73 kaz 1.155 2002-08-05 Kaz Kylheku <kaz@ashi.footprints.net>
74    
75     Use getcwd to to implement mcvs-locate.
76    
77     * code/unix-bindings/unix.lisp (getcwd): New call out,
78     invokes impl_getcwd.
79    
80     * code/unix-bindings/impl.c (impl_getcwd): New function,
81     use getcwd() to obtain current working directory, resizing dynamic
82     buffer if necessary to get the entire path.
83    
84     * code/clisp-unix.lisp (getcwd): New wrapper function.
85    
86     * code/dirwalk.lisp (go-up): Function removed.
87    
88     * code/mapping.lisp (mcvs-locate): Rewritten to obtain
89     path using getcwd, then try looking for MCVS directory
90     in successively shorter prefixes of that path.
91    
92 kaz 1.152 2002-08-04 Kaz Kylheku <kaz@ashi.footprints.net>
93    
94 kaz 1.154 Working back support for CLISP 2.27.
95    
96     * code/install.sh: Bogus *null-pointer* hack is no longer added
97     to the generated mcvs script, since we have our own FFI functions for
98     doing the test.
99    
100     * code/unix-bindings/unix.lisp (unix-funcs:null-pointer-p): New
101     function, tests a C pointer for null, returns T or NIL.
102     * code/unix-bindings/impl.c (impl_null_pointer_p): New function,
103     C implementation of unix-funcs:null-pointer-p.
104    
105     * code/clisp-unix.lisp (pointer-null): New macro, uses
106     ffi:foreign-address-null under CLISP 2.28 or greater, or
107     unix-funcs:null-pointer-p, under an older CLISP.
108    
109     2002-08-04 Kaz Kylheku <kaz@ashi.footprints.net>
110    
111 kaz 1.153 Fixes to get clean build from fresh checkout.
112    
113     * code/unix-bindings/link.sh: Remove test for presence of unix.c;
114     this was causing the failure to add the unix module to the module
115     list, which caused it to generate an empty modules.h file under
116     code/unix-bindings-linking-set, resulting in a bad build of lisp.run.
117    
118     * code/unix-bindings/Makefile: Add ``clean'' target, so we
119     can do a make clean here.
120    
121     2002-08-04 Kaz Kylheku <kaz@ashi.footprints.net>
122    
123 kaz 1.152 Retargetting CVS with new system call bindings that are not GNU/Linux
124     specific.
125    
126     * code/install.sh: The way Meta-CVS is installed changes now.
127     The argument is now a prefix above a bin and lib directory.
128     Invokes clisp-link to build a new CLISP linking set in the
129     directory code/unix-bindings-linking-set. The lisp executable
130     (lisp.run) is copied to $TARGET/lib/clisp/meta-cvs/ and the Meta-CVS
131     memory image is also copied there under the name lispinit.mem.
132     The mcvs script is then generated in $TARGET/bin, correctly referring
133     to these images.
134    
135     * code/system.lisp: Choose the new clisp-unix module, if running
136     under a CLISP image which has the new bindings loaded. Otherwise fall
137     back on the old clisp-linux, which uses the linuxlibc6 module.
138    
139     * code/clisp-unix.lisp: New file, closely based on clisp-linux.lisp,
140     but targetting new bindings in the unix-funcs package.
141    
142     * code/clisp-link: New file. Script borrowed from CLISP distribution,
143     needed for building CLISP executables with custom modules added.
144    
145     * code/linkkit: New directory. This is needed by by clisp-link.
146     * code/linkkit/modules.c: Borrowed file from CLISP, needed
147     by clisp-link.
148     * code/linkkit/clisp.h: Likewise.
149     * code/linkkit/modules.d: Likewise.
150    
151     * code/unix-bindings: New directory. This is a module kit used
152     by clisp-link to extend the Lisp executable and memory image
153     with new C functions.
154    
155     * code/unix-bindings/link.sh: Definitions of variables needed
156     by clisp-link.
157    
158     * code/unix-bindings/unix.lisp: The glue module which defines the Lisp
159     interface to the external C functions. Most of the functions call
160     directly into the system's C library, but a few call to wrapper
161     functions. Compiling unix.lisp produces a unix.c file which is
162     compiled and linked into the CLISP executable, and a unix.fas which
163     contains the Lisp interface bits that are loaded as part of the Lisp
164     image.
165    
166     * code/unix-bindings/Makefile: Rules for compiling the module, invoked by clisp-link.
167    
168     * code/unix-bindings/impl.c: Some special functions that help
169     implement the binding.
170    
171 kaz 1.149 2002-07-31 Kaz Kylheku <kaz@ashi.footprints.net>
172    
173 kaz 1.150 More changes to syntax of grab command. Now -A must be
174     specified to do a grab onto main trunk.
175    
176     * code/mcvs-main.lisp (*grab-options*): -A option added.
177    
178     * code/grab.lisp (mcvs-grab): Test for presence of -A
179     option. Check that either -A or -r is present, but not both.
180    
181     2002-07-31 Kaz Kylheku <kaz@ashi.footprints.net>
182    
183 kaz 1.149 Syntax of grab command changed. The branch is no longer
184     specified as an argument after the module name. Rather,
185     it is specified using the -r option.
186    
187     * code/mcvs-main.lisp (*grab-options*): -r added to list.
188    
189     * code/grab.lisp (mcvs-grab, mcvs-grab-wrapper): Argument
190     syntax change, support -r option.
191 kaz 1.152
192     * INSTALL: Instructions change, since building the GNU/Linux libc
193     into CLISP is no longer required.
194 kaz 1.149
195 kaz 1.147 2002-07-27 Kaz Kylheku <kaz@ashi.footprints.net>
196    
197 kaz 1.148 * docs/meta-cvs.latex: Rewrote most of Introduction.
198    
199     2002-07-27 Kaz Kylheku <kaz@ashi.footprints.net>
200    
201 kaz 1.147 New scripts for building LaTeX document. These do the right thing
202     to minimize the number of times latex is run. Make proved useless.
203    
204     * docs/generate.sh: New file.
205     * docs/cleanup.sh: New file.
206    
207 kaz 1.146 2002-07-20 Kaz Kylheku <kaz@ashi.footprints.net>
208    
209     * INSTALL: Revising CLISP installation instructions to the
210     easier method using --build.
211    
212 kaz 1.145 2002-07-18 Kaz Kylheku <kaz@ashi.footprints.net>
213    
214     * README: Renaming file to QUICK-GUIDE.
215    
216     2002-07-17 Kaz Kylheku <kaz@ashi.footprints.net>
217 kaz 1.142
218 kaz 1.144 * code/generic.lisp (mcvs-generic): Support new keyword,
219     :no-fix-empty-file-list. Specifies that if no files are passed,
220     and the --metaonly option is not present, the CVS command is to be
221     executed without any file arguments.
222     (mcvs-commit-wrapper): Specify :no-fix-empty-file-list t when
223     calling mcvs-generic. Thus commit now has the behavior that
224     when it is passed no file arguments, it does a true global commit.
225    
226     2002-07-16 Kaz Kylheku <kaz@ashi.footprints.net>
227    
228 kaz 1.143 * code/restore.lisp (mcvs-restore): Work properly with
229     partial sandboxes; that is, move things to lost+found
230     directory at the top of the partial sandbox, rather than
231     the abstract root.
232    
233     2002-07-16 Kaz Kylheku <kaz@ashi.footprints.net>
234    
235 kaz 1.142 * code/mcvs-main.lisp (usage): Updated to describe restore
236     command.
237    
238 kaz 1.139 2002-07-14 Kaz Kylheku <kaz@ashi.footprints.net>
239    
240 kaz 1.141 * code/grab.lisp (mcvs-grab): If there are only added files
241     or only removed files, don't bother scanning any files,
242     since there are no moves to compute.
243    
244     2002-07-14 Kaz Kylheku <kaz@ashi.footprints.net>
245    
246 kaz 1.140 * code/find-bind.lisp (vector-bind): New macro, binds symbols
247 kaz 1.139 to elements of a vector.
248     (find-bind-extract-vals): Rewrite using vectors. Fixes
249     a bug: the old version was not handling duplicate keys
250     properly.
251     (find-bind): Integrate with new find-bind-extract-vals.
252    
253 kaz 1.138 2002-07-11 Kaz Kylheku <kaz@ashi.footprints.net>
254    
255     Directory structure rearrangement; source files are moved
256     under code/ subdirectory. A documentation directory is added.
257    
258 kaz 1.133 2002-07-07 Kaz Kylheku <kaz@ashi.footprints.net>
259    
260 kaz 1.137 * move.lisp (move-guts): When moving multiple sources to
261     a target directory, provide a restart to skip a bad source.
262    
263     2002-07-07 Kaz Kylheku <kaz@ashi.footprints.net>
264    
265 kaz 1.136 * seqfuncs.lisp (intersection-difference): Support a new
266     keyword parameter :squash-nil.
267    
268     * mapping.lisp (mapping-difference): Filter non-moved pairs
269     directly in intersection-difference call using :squash-nil,
270     eliminating the need to do a second remove-if pass.
271    
272     2002-07-07 Kaz Kylheku <kaz@ashi.footprints.net>
273    
274 kaz 1.135 * mapping.lisp (mapping-difference): Rewrite using
275     intersection-difference.
276    
277     2002-07-07 Kaz Kylheku <kaz@ashi.footprints.net>
278    
279 kaz 1.134 * grab.lisp (added-removed): Function removed.
280     (mcvs-grab): Use new intersection-difference function
281     instead of added-removed.
282    
283     2002-07-07 Kaz Kylheku <kaz@ashi.footprints.net>
284    
285 kaz 1.133 * seqfuncs.lisp (intersection-difference): New function.
286    
287 kaz 1.131 2002-07-06 Kaz Kylheku <kaz@ashi.footprints.net>
288    
289 kaz 1.132 * grab.lisp (mcvs-grab): Upgraded to work with partial sandbox.
290     Extra parameter added to specify subdirectory. File analysis
291     is only done on visible files.
292     (mcvs-grab-wrapper): Take optional parameter to specify
293     subdirectory.
294    
295     2002-07-06 Kaz Kylheku <kaz@ashi.footprints.net>
296    
297     * mapping.lisp (mapping-update): If no-delete-removed is
298     true, nevertheless print the ``* removing...'' messages
299     to show that removal from the mapping is going on.
300    
301     2002-07-06 Kaz Kylheku <kaz@ashi.footprints.net>
302    
303     * remap.lisp (mcvs-remap): Remap only the visible sandbox,
304     and combine resulting map with the invisible portion.
305    
306     2002-07-06 Kaz Kylheku <kaz@ashi.footprints.net>
307    
308     * remove.lisp (mcvs-remove): Added path conversions to support
309     partial sandboxes.
310    
311     2002-07-06 Kaz Kylheku <kaz@ashi.footprints.net>
312    
313     * generic.lisp (mcvs-generic): Added path conversions to support
314     partial sandboxes.
315    
316     2002-07-06 Kaz Kylheku <kaz@ashi.footprints.net>
317    
318     * add.lisp (mcvs-add): Added path conversions to support
319     partial sandboxes.
320    
321     2002-07-06 Kaz Kylheku <kaz@ashi.footprints.net>
322    
323 kaz 1.131 * grab.lisp (mcvs-grab): Bugfix: determination of common words
324     was failing on small file sets because the min function was
325     used instead of the max to compute the threshold.
326 kaz 1.132
327     2002-07-05 Kaz Kylheku <kaz@ashi.footprints.net>
328    
329     * move.lisp (source-check): Use real source path for checking
330     against MCVS/ area.
331     (mcvs-move): Ditto for destination path.
332    
333     2002-07-05 Kaz Kylheku <kaz@ashi.footprints.net>
334    
335     * mapping.lisp (mapping-update): Make sure only those files
336     are processed which are visible in the sandbox. If a file
337     is moved out of or into visibility, this is indicated in the
338     diagnostic output.
339    
340     2002-07-05 Kaz Kylheku <kaz@ashi.footprints.net>
341    
342     * mapping.lisp (real-path-exists): Use path-prefix-equal, because
343     that handles all the tricky cases.
344     (abstract-to-real-path): Handle the case when abstract path
345     is the same as the path prefix, with or without the trailing
346     slash.
347    
348     2002-07-05 Kaz Kylheku <kaz@ashi.footprints.net>
349    
350     Start of experimental ``partial sandbox'' work.
351    
352     * mapping.lisp (*mcvs-displaced-name*, *mcvs-displaced*): New
353     constants, hold name of administrative file MCVS/DISPLACED which stores
354     the displaced path prefix.
355     (*displaced-path-prefix*): New special variable, holds displaced
356     path prefix read from MCVS/DISPLACED.
357     (*displaced-path-length*): New special variable, holds length
358     of string stored in *displaced-path-prefix*.
359     (real-path-exists, abstract-to-real-path, real-to-abstract-path):
360     New functions for mapping between actual sandbox path, and
361     the abstract sandbox path stored in the mapping.
362     (in-sandbox-root-dir): Macro modified to read *mcvs-displaced*
363     administrative file, and set up the new special variables.
364     (mapping-synchronize): Only operate on files that are present
365     in the sandbox; i.e. that have real paths corresponding to their
366     abstract paths. Convert to the real path when calling lower
367     level file manipulation functions.
368     (mapping-update): Likewise, but this conversion is not complete.
369     (displaced-path-read, displaced-path-write): New functions for
370     reading and writing MCVS/DISPLACED.
371    
372     * checkout.lisp (mcvs-checkout): One extra optional parameter.
373     Specifies the subdirectory for executing a partial checkout.
374     (mcvs-checkout-wrapper): Parse out optional parameter.
375    
376     * grab.lisp (mcvs-grab): For now, when calling mcvs-checkout,
377     specify the new parameter as nil. Eventually, grab will work
378     over partial checkouts.
379    
380     * move.lisp: Upgraded to work with partial sandboxes.
381     (source-check): Convert source parameter to real path for
382     existence check.
383     (move-guts): Convert destination parameter to real path before
384     invoking (stat ...) on it.
385     (mcvs-move): Map all path arguments to abstract paths.
386 kaz 1.131
387 kaz 1.130 2002-07-04 Kaz Kylheku <kaz@ashi.footprints.net>
388    
389     * find-bind.lisp (find-bind-extract-vals): Rewrite for
390     efficiency. No impact on Meta-CVS, just done for the sake of improving
391     the quality of this highly reusable code. There is specialized
392     code now depending on whether the input sequence is a list or
393     a vector. A single pass is made over the sequence, with multiple
394     passes over the search values. The sequence could be large,
395     whereas the list of search values is typically going to be small.
396     (find-bind): Modified to reflect slight interface change
397     in find-bind-extract-vals.
398    
399 kaz 1.129 2002-07-03 Kaz Kylheku <kaz@ashi.footprints.net>
400    
401     * mcvs-main.lisp (*usage*): Describe --meta and --metaonly options.
402    
403 kaz 1.127 2002-07-02 Kaz Kylheku <kaz@ashi.footprints.net>
404    
405 kaz 1.128 * purge.lisp (mcvs-purge): Factor out code for computing
406     deleted files.
407    
408     * mapping.lisp (mapping-removed-files): New function, contains
409     code factored from mcvs-purge.
410    
411     * restore.lisp: New file.
412     (mcvs-restore, mcvs-restore-wrapper): New functions.
413    
414     2002-07-02 Kaz Kylheku <kaz@ashi.footprints.net>
415    
416 kaz 1.127 * checkout.lisp (mcvs-checkout): Don't delete the MCVS directory
417     of an existing checkout.
418    
419 kaz 1.125 2002-07-01 Kaz Kylheku <kaz@ashi.footprints.net>
420    
421 kaz 1.126 Adding purge command.
422    
423     * mcvs-main.lisp (*purge-options*): New constant.
424     (*mcvs-command-table*): New entry.
425     (*usage*): Update.
426    
427     * purge.lisp: New file.
428     (mcvs-purge, mcvs-purge-wrapper): New functions.
429    
430     2002-07-01 Kaz Kylheku <kaz@ashi.footprints.net>
431    
432 kaz 1.125 Grab no longer synchronizes to recreate deleted files immediately
433     before blowing them away.
434    
435     * grab.lisp (mcvs-grab): Specify :no-sync t when calling mcvs-remove.
436    
437     * remove.lisp (mcvs-remove): Support new no-sync keyword. This tells
438     mcvs-remove that the files being removed from the mapping,
439     don't exist in the sandbox. So it's not necessary to call
440     mapping-synchronize, and mapping-update can be told via
441     :no-delete-removed t not to try to remove deleted files.
442    
443     * mapping.lisp (mapping-update): New no-delete-removed keyword
444     parameter.
445    
446 kaz 1.121 2002-06-29 Kaz Kylheku <kaz@ashi.footprints.net>
447 kaz 1.120
448 kaz 1.123 * create.lisp (mcvs-create): Take out vendor branch parameter,
449     use "Created-by-Meta-CVS" as the vendor tag.
450     (mcvs-create-wrapper): Take out vendor branch parameter.
451    
452     2002-06-29 Kaz Kylheku <kaz@ashi.footprints.net>
453    
454 kaz 1.122 * generic.lisp (mcvs-tag-wrapper): This one needs to include
455     meta files by default.
456    
457     2002-06-29 Kaz Kylheku <kaz@ashi.footprints.net>
458    
459 kaz 1.120 Moving toward sane, user-friendly handling of meta-files.
460     Two new options are added --meta and --metaonly.
461     All reporting commands---diff, log, annotate---default to
462     not including the meta files. The update command remains special.
463     It does not include meta files if given filename arguments.
464     If invoked with no arguments, it does a global CVS up.
465     The commit command defaults to including the meta files.
466     The three options simply override default behavior.
467    
468 kaz 1.124 * options.lisp (*nometa-option*): Eliminated useless docstring.
469 kaz 1.120 (*meta-option*): New variable.
470     (*nometa-option*): New variable.
471     (filter-global-options): Clean rewrite using find-bind.
472    
473     * generic.lisp (mcvs-generic): New keyword parameters
474     default-include-meta-files, need-update-after. Implements new logic
475     related to the new options. Performs (mapping-update) if
476     need-update-after is true and metafiles were subject to cvs update.
477     (mcvs-commit-wrapper): Calls mcvs-generic with
478     :default-include-meta-files t.
479    
480     * update.lisp (mcvs-update): No longer overrides the *nometa-option*
481     special variable. Passes :need-update-after t to mcvs-generic.
482    
483     * mcvs-main.lisp (*cvs-options*): New options entered into list.
484    
485 kaz 1.121 2002-06-28 Kaz Kylheku <kaz@ashi.footprints.net>
486 kaz 1.114
487 kaz 1.119 * memoize.lisp (memoize-expander): Use ordinary hash for memoizing
488     monadic functions.
489    
490 kaz 1.121 2002-06-28 Kaz Kylheku <kaz@ashi.footprints.net>
491 kaz 1.119
492 kaz 1.117 Word comparisons are case-insensitive in mcvs grab now.
493     Also, common words are determined and eliminated from the correlation.
494     Common words are those that appear in at least 5 of the
495     added or removed files, or 20% of them, whichever is greater.
496    
497     Noticed some unnecessary use of string-lessp on F-file names in
498     mapping.lisp.
499    
500     * grab.lisp (read-word-hash): Use #'equalp test for case-insensitive
501     string comparisons.
502     (added-removed): Use string< instead of string-lessp for comparing
503     paths.
504     (determine-common-words, eliminate-common-words): New functions.
505 kaz 1.118 (move-candidates): Acceptance threshold reduced to 30%, since
506 kaz 1.117 elimination of common words reduces the similarity correlation.
507     (mcvs-grab): Use string< instead of string-lessp when sorting paths.
508     Do the common words computation.
509    
510     * mapping.lisp (mapping-dupe-check, mapping-write,
511     mapping-difference): Use string< instead of string-lessp.
512    
513 kaz 1.121 2002-06-28 Kaz Kylheku <kaz@ashi.footprints.net>
514 kaz 1.117
515 kaz 1.116 * memoize.lisp (factor-memo-labels): New function, rips apart
516     functions generated by memoize-expander, in order to factor
517     out the multi-hash defining let blocks.
518     (memoized-labels): Interface corrected. Also, use new function to
519     generate a labels block that allows for mutually recursive memoized
520     functions which preserve hash contents across arbitrarily mutually
521     recursive calls. This is done by enclosing the functions in one big
522     let block which binds all the hashes.
523    
524 kaz 1.121 2002-06-28 Kaz Kylheku <kaz@ashi.footprints.net>
525 kaz 1.116
526 kaz 1.115 * seqfuncs.lisp (lcs-list): Specify #'eq test for memoization
527     parameters.
528    
529 kaz 1.121 2002-06-28 Kaz Kylheku <kaz@ashi.footprints.net>
530 kaz 1.115
531 kaz 1.114 Adding some cool code: a multi-hash datatype which implements
532     multi-dimensional sparse arrays using a tree of hash tables,
533     and a function memoizer which uses multi hash to index on
534     function arguments.
535    
536     * multi-hash.lisp (multi-hash): New class.
537     (initialize-instance): New method on multi-hash.
538     (multi-hash-common-code): New macro.
539     (get-multi-hash, set-multi-hash): New functions.
540    
541     * memoize.lisp (define-memoized-function,
542     memoized-labels): New macros.
543     (remove-key-aux-rest strip-lambda-list, extract-tests,
544     remove-tests, memoize-expander): New functions.
545    
546     * seqfuncs.lisp (lcs-list): Function is now correctly
547     memoized using define-memoized-function.
548    
549 kaz 1.113 2002-06-26 Kaz Kylheku <kaz@ashi.footprints.net>
550    
551     * grab.lisp (read-word-hash): Memory use optimizations: use smaller
552     initial size for tokens; re-use the same token object when the
553     hash already contains a duplicate.
554     (correlate): Renamed to correlate-word-hashes.
555     (correlate-paths): New function; computes a confidence-reducing
556     factor based on the differences between two paths.
557     (move-candidates): Use correlate-paths to lower the confidence
558     for distant moves. This could help sort out ambiguities when
559     projects contain very similar or duplicate files which are subject
560     to parallel moves.
561    
562     * seqfuncs.lisp (lcs-list, lcs-vector,
563     longest-common-subsequence): New functions.
564    
565 kaz 1.112 2002-06-25 Kaz Kylheku <kaz@ashi.footprints.net>
566    
567     New feature: grab command. Takes snapshot of code and imports
568     it to a branch, trying to determine which of the added and
569     removed files are actually moves.
570    
571     * grab.lisp: New file.
572     (read-word-hash, word-hash-file, correlate, added-removed,
573     move-candidates, mcvs-grab, mcvs-grab-wrapper): New functions.
574    
575     * mcvs-main.lisp (*grab-options*): New constant.
576     (*mcvs-command-table*): New entry.
577     (*usage*): New text.
578    
579     * checkout.lisp (mcvs-checkout): Write out MAP-LOCAL even
580     if :no-generate t is specified.
581    
582 kaz 1.110 2002-06-24 Kaz Kylheku <kaz@ashi.footprints.net>
583    
584 kaz 1.111 * checkout.lisp (mcvs-checkout): New key parameter, no-generate.
585     Tells the checkout function not to unpack the MCVS directory.
586     This will be useful when mcvs-checkout is used as a subfunction
587     of the new grab command. Failed CVS call is now turned into
588     an error. The MCVS subdirectory is *always* deleted, even if the
589     checkout did not create the checkout directory.
590    
591     2002-06-24 Kaz Kylheku <kaz@ashi.footprints.net>
592    
593 kaz 1.110 * dirwalk.lisp (dirwalk-fi): Bugfix: top call was not
594     passing down keyword parameters to recursive call.
595    
596 kaz 1.107 2002-06-23 Kaz Kylheku <kaz@ashi.footprints.net>
597    
598 kaz 1.109 * posix.lisp (canonicalize-path): Use concatenate-string
599     instead of format.
600    
601     2002-06-23 Kaz Kylheku <kaz@ashi.footprints.net>
602    
603 kaz 1.108 * posix.lisp (parse-posix-namestring): Clean rewrite.
604    
605     2002-06-23 Kaz Kylheku <kaz@ashi.footprints.net>
606    
607 kaz 1.107 The ``import'' command is renamed to ``create''.
608    
609     * mcvs.main (*create-options*): Renamed to *import-options*.
610     (*mcvs-command-table*): Updated.
611     (*usage*): Updated.
612    
613     * import.lisp: File renamed to create.lisp.
614     (mcvs-import): Renamed to mcvs-create; some arguments renamed.
615     (mcvs-import-wrapper): Renamed to mcvs-create-wrapper.
616    
617     * README: Updated.
618    
619 kaz 1.104 2002-06-22 Kaz Kylheku <kaz@ashi.footprints.net>
620    
621 kaz 1.106 * split.lisp (split-fields): Optimized to extract tokens directly
622     from the input string using subseq rather than construct them
623     character by character.
624 kaz 1.105
625     2002-06-22 Kaz Kylheku <kaz@ashi.footprints.net>
626    
627 kaz 1.104 * find-bind.lisp (find-bind): Use #'values instead of #'(lambda (x) x).
628    
629 kaz 1.102 2002-06-21 Kaz Kylheku <kaz@ashi.footprints.net>
630    
631 kaz 1.103 * clisp-linux.sh (:clisp-old): Added to *features*
632     for CLISP 2.28 or higher.
633     (*null-pointer*): Only defined when :clisp-old is present.
634     (pointer-null): Use new ffi:foreign-pointer-null if :clisp-old
635     feature is not present.
636    
637     * install.sh: Don't do *null-pointer* workaround hack
638     unless :clisp-old feature is present in the memory image.
639    
640     2002-06-21 Kaz Kylheku <kaz@ashi.footprints.net>
641    
642 kaz 1.102 * types.lisp (types-make-cvs-adds): Serious bugfix. Forgot
643     to strip MCVS/ prefix from those F- files which don't match
644     any type entries. This caused cvs add to fail for unsuffixed
645     files.
646    
647 kaz 1.101 2002-06-08 Kaz Kylheku <kaz@ashi.footprints.net>
648    
649     * types.lisp (types-to-import-wrapper-args): Don't use backquote
650     template to generate a list that will be destructively catenated
651     by mapcan.
652    
653 kaz 1.100 2002-05-22 Kaz Kylheku <kaz@ashi.footprints.net>
654    
655     * checkout.lisp (mcvs-checkout): If a checkout directory is
656     created and then the CVS checkout fails, the directory is
657     then removed.
658    
659 kaz 1.97 2002-05-20 Kaz Kylheku <kaz@ashi.footprints.net>
660    
661 kaz 1.100 * find-bind.lisp (find-bind-extract-vals, find-bind): Process default
662 kaz 1.99 values in find-bind-extract-vals, instead of in the expansion of
663     find-bind, thereby reducing some macro bloat.
664    
665     2002-05-20 Kaz Kylheku <kaz@ashi.footprints.net>
666    
667 kaz 1.98 * remap.lisp (mcvs-remap): Loads MAP as well as MAP-LOCAL.
668     If it the mappings differ, an error is signaled. The user can choose
669     to ignore the error, in which case MAP is clobbered.
670    
671     2002-05-20 Kaz Kylheku <kaz@ashi.footprints.net>
672    
673 kaz 1.97 Adding mcvs remap command.
674    
675     * dirwalk.lisp (dirwalk-fi, dirwalk, for-each-file-info): Default
676     behavior is now preorder (visit directory before its entries).
677     A keyword is provided to select the old postorder behavior.
678     A catch is provided in dirwalk-fi that allows the caller to
679     skip processing the currently traversed directory. The for-each-*
680     macros provide a local function called (skip) to do this.
681     (delete-recursive): This function depends on postorder behavior
682     in for-each-file-info, so it explicitly selects it now.
683    
684     * mcvs.lisp (*remap-options*): New constant.
685     (*mcvs-command-table*): Add entry for new function.
686     (*usage*): Describes new function.
687    
688     * remap.lisp: New file.
689     (mcvs-remap, mcvs-remap-wrapper): New functions.
690    
691 kaz 1.96 2002-05-15 Kaz Kylheku <kaz@ashi.footprints.net>
692    
693     * sync.lisp (synchronize-files): Signal an error when the two files
694     to be synchronized have the same time stamp. Provide two restarts
695     for doing the synchronization either way.
696    
697 kaz 1.95 2002-05-06 Kaz Kylheku <kaz@ashi.footprints.net>
698    
699     * mapping.lisp (in-sandbox-root-dir): Fix symbol macro
700     sandbox-down-path; it was referring to the (quote #:DOWNPATH-NNN)
701     rather than #:DOWNPATH-NNN.
702    
703 kaz 1.93 2002-05-04 Kaz Kylheku <kaz@ashi.footprints.net>
704    
705 kaz 1.94 * import.lisp (mcvs-import): Specify -I ! argument to cvs import
706     so that it does not ignore any F- files.
707    
708     2002-05-04 Kaz Kylheku <kaz@ashi.footprints.net>
709    
710 kaz 1.93 * mapping.lisp (mapping-update): Provide restart that allows
711     user to ignore file removal error.
712    
713 kaz 1.92 2002-04-19 Kaz Kylheku <kaz@ashi.footprints.net>
714    
715     Porting to CMUCL.
716    
717     * system.lisp: Conditionally load new module cmucl-unix.
718    
719     * mapping.lisp (mapping-dupe-check, mapping-write,
720     mapping-difference): Fixes related to sort function; we were
721     relying on CLISP's preservation of the cons cell order.
722    
723     * cmucl-unix.lisp: New file.
724    
725 kaz 1.89 2002-04-17 Kaz Kylheku <kaz@ashi.footprints.net>
726    
727 kaz 1.90 * checkout.lisp (mcvs-checkout): Allow -d to specify current
728     directory as the checkout directory. Do not complain if the
729 kaz 1.91 target directory exists, just try to use it anyway,
730     unless it is the root of an existing Meta-CVS sandbox. Use
731 kaz 1.90 the mapping-update function to update the sandbox.
732     These changes allow a Meta-CVS sandbox to blend with an existing
733     directory structure, a useful feature.
734    
735     2002-04-17 Kaz Kylheku <kaz@ashi.footprints.net>
736    
737 kaz 1.89 * generic.lisp (mcvs-generic): Change how empty file argument list
738     is handled. Rather than rewriting it to '(".") we do a proper
739     map-prefix-lookup. Synchronizing and invoking CVS is elided
740     if the resulting list of files to process is empty and the --nometa
741     option is specified.
742    
743 kaz 1.87 2002-04-16 Kaz Kylheku <kaz@ashi.footprints.net>
744    
745 kaz 1.88 * branch.lisp (parse-sticky): New function.
746     (read-cvs-entries): New function.
747     (same-tag-check): New function.
748     (what-tag-are-we-on): Renamed to what-are-we-sticky-to. Calls
749     parse-sticky to return structured tag.
750     (mcvs-merge): Make use of structured tags.
751     (mcvs-list-branches): Make use of structured tags. Indicate
752     when sandbox is inconsistently sticky.
753    
754     2002-04-16 Kaz Kylheku <kaz@ashi.footprints.net>
755    
756 kaz 1.87 * remove.lisp (mcvs-remove): Corrected careless bracketing
757     introduced on 2002-03-15 that rendered this function ineffective.
758    
759 kaz 1.85 2002-04-04 Kaz Kylheku <kaz@ashi.footprints.net>
760 kaz 1.82
761 kaz 1.86 Absolute paths resolved against sandbox root.
762    
763     * posix.lisp (path-absolute-p): New function. Predicate to
764     test whether a path is absolute.
765    
766     * mapping.lisp (in-sandbox-root-dir): sandbox-translate-paths
767     function detects absolute path, and treats it as relative to
768     sandbox root.
769    
770     2002-04-04 Kaz Kylheku <kaz@ashi.footprints.net>
771    
772 kaz 1.84 New switch command added, plus sticky tag related
773     bugfixes and enhancement of mcvs list-branches.
774    
775     mcvs-main.lisp (*switch-options*): New constant.
776     (*mcvs-command-table*): New entries.
777     (*usage*): New help text.
778    
779     branch.lisp (what-branch-are-we-on): Function renamed to
780     what-tag-are-we-on. Tests the first letter which is T or N; if
781     it is not T, then it's not a branch tag. If there is a tag,
782     it returns two values; the second value is NIL if it is not
783     a branch tag, T otherwise.
784     (mcvs-merge): Modified to use what-tag-are-we-on.
785     (mcvs-list-branches): Show additional information about the
786     current sticky tag.
787     (mcvs-merge-wrapper): Fix wrong parenthesization introduced
788     earlier today.
789     (mcvs-switch-wrapper): New function.
790    
791 kaz 1.85 2002-04-04 Kaz Kylheku <kaz@ashi.footprints.net>
792 kaz 1.84
793 kaz 1.83 * branch.lisp (branch-tag-check): Check reserved symbol HEAD.
794    
795 kaz 1.85 2002-04-04 Kaz Kylheku <kaz@ashi.footprints.net>
796 kaz 1.83
797 kaz 1.82 New command to list branches.
798    
799     * mcvs-main.lisp (*list-branches-options*): New constant.
800     (*mcvs-command-table*): Entries for new command added.
801     (*usage*): Help text added.
802    
803     * branch.lisp (mcvs-list-branches,
804     mcvs-list-branches-wrapper): New functions.
805    
806 kaz 1.80 2002-04-03 Kaz Kylheku <kaz@ashi.footprints.net>
807    
808 kaz 1.81 * branch.lisp (where-is-the-repository): New function.
809     (cvs-make-or-advance-tag): Pass down CVSROOT to cvs rtag using
810     the -d global option.
811    
812     2002-04-03 Kaz Kylheku <kaz@ashi.footprints.net>
813    
814 kaz 1.80 * branch.lisp (what-module-is-this): New function.
815     (cvs-make-or-advance-tag): Use rtag rather than tag for tagging
816     the branch being merged. This fixes the failure to merge added files.
817     (mcvs-merge): Use mcvs-update rather than directly using cvs.
818    
819 kaz 1.78 2002-04-02 Kaz Kylheku <kaz@ashi.footprints.net>
820    
821 kaz 1.79 Implemented remerge command; redo a merge without moving
822     around any tags.
823    
824     * branch.lisp (mcvs-merge): New keyword parameter remerge-p
825     to indicate that a re-merge should be done, plus logic for
826     doing so.
827     (mcvs-remerge-wrapper): New function.
828    
829     * mcvs-main.lisp (*remerge-options*): New constant.
830     (*mcvs-command-table*): New entry for remerge command.
831    
832     2002-04-02 Kaz Kylheku <kaz@ashi.footprints.net>
833    
834 kaz 1.78 First cut at implementing more automated branching and merging.
835    
836     * mcvs-main.lisp (*branch-options*, *merge-options*): New constants.
837     (*mcvs-command-table*): New entries for branch and merge commands.
838     (*usage*): New help text.
839    
840     * branch.lisp: New file.
841     (*branch-char*): New constant.
842     (tags-from-cvs-log, what-branch-are-we-on, branch-tag-check,
843     mcvs-branch, mcvs-branch-wrapper, cvs-make-or-advance-tag, mcvs-merge,
844     mcvs-merge-wrapper): New functions.
845    
846 kaz 1.87 2002-04-01 Kaz Kylheku <kaz@ashi.footprints.net>
847 kaz 1.77
848     checkout.lisp (mcvs-checkout): Emit informational message
849     when checkout completes, because it's not obvious what directory
850     was just created.
851    
852 kaz 1.76 2002-02-38 Kaz Kylheku <kaz@ashi.footprints.net>
853    
854     Error checking added to mcvs move: verifies that all
855     sources exist and are known to Meta-CVS.
856    
857     * move.lisp (source-check): New function.
858     (simple-rename, simple-move-to-dir): Use new function.
859    
860 kaz 1.74 2002-03-20 Kaz Kylheku <kaz@ashi.footprints.net>
861    
862 kaz 1.75 * rcsparse.lisp: File renamed to rcs-utils.lisp.
863     (rcs-delta): New slot, delta-hash.
864     (rcs-make-delta-hash): New function.
865     (rcs-parse): Calls rcs-make-delta-hash to set up new slot.
866    
867     * convert.lisp: require changed to match file rename.
868    
869     2002-03-20 Kaz Kylheku <kaz@ashi.footprints.net>
870    
871 kaz 1.74 Some new macros for slot access.
872    
873     * slot-refs.lisp: New file.
874     (with-slot-refs): New macro.
875     (with-multi-slot-refs): New macro.
876    
877     * rcsparse.lisp (rcs-parse-newphrases, rcs-parse-admin,
878     rcs-parse-delta): Replace uses
879     of symbol-macrolet by with-slot-refs and with-multi-slot-refs.
880    
881 kaz 1.73 2002-03-19 Kaz Kylheku <kaz@ashi.footprints.net>
882    
883     Adding delta parsing to RCS parser.
884    
885     * rcsparse.lisp (rcs-delta): New struct.
886     (rcs-file): New slot, deltas.
887     (rcs-parse-newphrases): New function, factors out parsing of
888     ``newphrases'' syntactic element out of rcs-parse-admin.
889     (rcs-parse-admin): Use rcs-parse-newphrases.
890     (rcs-parse-delta, rcs-parse-deltas): New functions.
891     (rcs-parse): Parse both admin and deltas; store deltas in new
892     rcs-file slot.
893    
894 kaz 1.72 2002-03-18 Kaz Kylheku <kaz@ashi.footprints.net>
895    
896     * posix.lisp (parse-posix-namestring): New function. Converts POSIX
897     path to CL Path object.
898 kaz 1.73
899     * rcsparse.lisp: New file, implements RCS version file parser.
900 kaz 1.72 (rcs-admin, rcs-file, rcs-token, rcs-token-stream): New structs.
901     (rcs-peek-token, rcs-read-token): New generic functions.
902     (rcs-extract-id-sym-or-num, rcs-extract-string,
903     rcs-match-optional, rcs-match-token, rcs-parse, rcs-parse-admin,
904     rcs-special-p): New functions.
905    
906     * convert.lisp (classify-tags): Work with association list rather
907     than raw strings.
908     (mcvs-convert): Use rcs-parse to extract tags. Fix call to
909     mapping-generate name. Use parse-posix-namestring when opening
910     version file. Generate informative chatter.
911    
912 kaz 1.69 2002-03-15 Kaz Kylheku <kaz@ashi.footprints.net>
913    
914 kaz 1.71 * remove.lisp (mcvs-remove): More detailed error checking.
915     Checks for remove attempts against MCVS/ area, removes of local
916     files not versioned under Meta-CVS, and nonexistent files.
917    
918     2002-03-15 Kaz Kylheku <kaz@ashi.footprints.net>
919    
920 kaz 1.70 * add.lisp (mcvs-add): Error message changed to tell user to use
921     -R to add directory.
922    
923     * remove.lisp (mcvs-remove): New generalized boolean parameter
924     indicates to do a recursive remove. This is controlled by the
925     -R option which already exists. Behavior changed to not act
926     on directories unless recursion is explicitly requested.
927     (mcvs-remove-wrapper): Extract "R" option, pass down new boolean
928     to mcvs-remove.
929    
930     2002-03-15 Kaz Kylheku <kaz@ashi.footprints.net>
931    
932 kaz 1.69 * remove.lisp (mcvs-remove-wrapper): Remove bogus error check.
933    
934 kaz 1.66 2002-03-14 Kaz Kylheku <kaz@ashi.footprints.net>
935    
936 kaz 1.68 * checkout.lisp (mcvs-checkout): Bugfix: must use checkout-dir, not
937     module, when testing whether directory exists or was created properly.
938    
939     2002-03-14 Kaz Kylheku <kaz@ashi.footprints.net>
940    
941 kaz 1.67 Update takes file arguments now.
942    
943     * update.lisp (mcvs-update): If filename arguments are given, then
944     just call mcvs-generic to do the work, but suppress the operation on
945     meta files. If no filename arguments are given, then update everything.
946     If the -p option is present, no synchronization is needed, before or
947     after.
948     (mcvs-update-wrapper): Pass command arguments down to mcvs-update.
949    
950     * mcvs-main.lisp (*update-options*): Add "p" option.
951    
952     * generic.lisp (mcvs-generic): New keyword parameter need-sync-after,
953     a generalized boolean which can tell the function to do a
954     mapping-synchronize after executing the CVS command.
955    
956     2002-03-14 Kaz Kylheku <kaz@ashi.footprints.net>
957    
958 kaz 1.66 * filt.lisp (filt-select-map): Do allow a date and revision to be
959     specified; the revision could be a branch tag.
960    
961 kaz 1.62 2002-03-13 Kaz Kylheku <kaz@ashi.footprints.net>
962    
963 kaz 1.65 * mapping.lisp (malformed-map): New function.
964     (mapping-dupe-check): Perform extra error checks when reading
965     mapping, and turn them into a condition with a ``nice'' error message.
966    
967     2002-03-13 Kaz Kylheku <kaz@ashi.footprints.net>
968    
969 kaz 1.64 * mcvs-filt.lisp (filt-select-map): Handle error gracefully
970     when reading map. It's easy to give CVS is a nonexistent tag.
971    
972     2002-03-13 Kaz Kylheku <kaz@ashi.footprints.net>
973    
974 kaz 1.63 The filt command takes arguments to select alternate revision
975     of map.
976    
977     * mcvs-main.lisp (*filt-options*): New constant.
978     (*mcvs-command-table*): Updated with new options.
979     (mcvs-debug-shell): Restart name changed during debugging of filt
980     changes.
981    
982     * filt.lisp (filt-select-map): New function. Loads either the
983     local mapping, or retrieves an alternate mapping from CVS based
984     on command line options.
985     (mcvs-filt): Use filt-select-map rather than mapping-read.
986    
987     2002-03-13 Kaz Kylheku <kaz@ashi.footprints.net>
988    
989 kaz 1.62 * generic.lisp (mcvs-generic): Add .cvsignore to the list of
990     metafiles.
991    
992 kaz 1.53 2002-03-12 Kaz Kylheku <kaz@ashi.footprints.net>
993    
994 kaz 1.61 * import.lisp (mcvs-import): Create a .cvsignore file for ignoring
995     MAP-LOCAL.
996    
997     2002-03-12 Kaz Kylheku <kaz@ashi.footprints.net>
998    
999 kaz 1.60 Fix trailing slash bug in mcvs mv.
1000    
1001     * move.lisp (simple-move-to-dir): Canonicalize path after catenating
1002     destination and file base name. This nukes a double slash if
1003     we move to a name with a trailing slash.
1004     (move-guts): Treat a destination name that has a trailing slash
1005     as a directory, unless it exists already as a non-directory.
1006    
1007     2002-03-12 Kaz Kylheku <kaz@ashi.footprints.net>
1008    
1009 kaz 1.59 * mcvs-main.lisp (*cvs-options*): Added "error-terminate" and
1010     "error-continue".
1011     (*usage*): Update and reformat help text.
1012     (mcvs-execute): Process "error-terminate" and "error-continue"
1013     options.
1014    
1015     2002-03-12 Kaz Kylheku <kaz@ashi.footprints.net>
1016    
1017 kaz 1.58 * mapping.lisp (mapping-update): Messages related to moving,
1018     adding or removing files promoted to terse level, so only -Q
1019     can suppress them.
1020    
1021     2002-03-12 Kaz Kylheku <kaz@ashi.footprints.net>
1022    
1023 kaz 1.57 * update.lisp (mcvs-update): Changing level of chatter messages.
1024     * move.lisp (mcvs-move): Likewise.
1025     * add.lisp (mcvs-add): Likewise.
1026     * remove.lisp (mcvs-remove): Likewise.
1027     * checkout.lisp (mcvs-checkout): Likewise.
1028     * generic.lisp (mcvs-generic): Likewise.
1029     * import.lisp (mcvs-import): Likewise.
1030     * mapping.lisp (mapping-dupe-check): Likewise.
1031     (mapping-update): Likewise.
1032    
1033     2002-03-12 Kaz Kylheku <kaz@ashi.footprints.net>
1034    
1035 kaz 1.56 Support for -q, -Q and -e global options.
1036    
1037     * posix.lisp (*editor*): New special variable.
1038     (edit-file): Check *editor* variable; if not nil, use it.
1039    
1040     * mcvs-main.lisp (*usage*): Update help text.
1041     (mcvs-execute): Set *mcvs-chatter-level* according to -q or -Q.
1042     Set *editor* if -e is specified.
1043    
1044     2002-03-12 Kaz Kylheku <kaz@ashi.footprints.net>
1045    
1046 kaz 1.55 * mcvs-main.lisp (*cvs-options*): Remove obsolete "a".
1047     (*cvs-options-arg*): Add missing "r".
1048     (*usage*): New constant, help text.
1049     (mcvs-execute): Process help and version command line options.
1050    
1051     2002-03-12 Kaz Kylheku <kaz@ashi.footprints.net>
1052    
1053 kaz 1.54 * options.lisp (parse-opt): Make error messages more consistent.
1054    
1055     2002-03-12 Kaz Kylheku <kaz@ashi.footprints.net>
1056    
1057 kaz 1.53 * find-bind.lisp (find-bind): Make rem-var optional; sometimes
1058     the user might not care about the remaining unmatched list.
1059    
1060 kaz 1.49 2002-03-11 Kaz Kylheku <kaz@ashi.footprints.net>
1061    
1062 kaz 1.52 * find-bind.lisp (find-bind): Documentation string change. Clarify
1063     that default values are substituted whenever a variable would
1064     otherwise be bound to the value NIL, even through an explicit
1065     match.
1066    
1067     2002-03-11 Kaz Kylheku <kaz@ashi.footprints.net>
1068    
1069 kaz 1.51 Sane filtering of -d option in checkout.
1070    
1071     * find-bind.lisp (find-bind): Variable bindings can specify
1072     a third element, which provides a default value for any variables
1073     that turn out NIL.
1074    
1075     * checkout.lisp (mcvs-checkout): Filter out the -d dir option,
1076     and use it to override the name of the checkout directory,
1077     the way CVS checkout does it.
1078    
1079     2002-03-11 Kaz Kylheku <kaz@ashi.footprints.net>
1080    
1081 kaz 1.50 Bugfix: mcvs add was not processing existing :ignore's in MCVS/TYPES.
1082    
1083     * add.lisp (mcvs-add): Use old types as well as new types
1084     to filter for ignores.
1085    
1086     2002-03-11 Kaz Kylheku <kaz@ashi.footprints.net>
1087    
1088 kaz 1.49 * find-bind.lisp: New file.
1089     (find-bind-extract-vals): New function.
1090     (find-bind): New macro.
1091    
1092     * error.lisp (restart-destructure): Macro removed.
1093     (mcvs-error-handler): Uses generic find-bind instead of
1094     restart-destructure.
1095    
1096 kaz 1.43 2002-03-09 Kaz Kylheku <kaz@ashi.footprints.net>
1097    
1098 kaz 1.48 * filt.lisp (mcvs-filt): Bugfix: do not stop processing line
1099     if F- file name is not found in hash table.
1100    
1101     2002-03-09 Kaz Kylheku <kaz@ashi.footprints.net>
1102    
1103 kaz 1.47 Commit is handled through mcvs-generic, so it can take
1104     filename arguments, and honor --nometa.
1105    
1106     * commit.lisp: File removed.
1107     (mcvs-commit): Function removed.
1108     (mcvs-commit-wrapper): Moved to generic.lisp.
1109    
1110     * generic.lisp (mcvs-commit-wrapper): Moved from commit.lisp,
1111     changed to invoke mcvs-generic.
1112     (mcvs-generic): Only add TYPES file to list if it actually
1113     exists.
1114    
1115     2002-03-09 Kaz Kylheku <kaz@ashi.footprints.net>
1116    
1117 kaz 1.46 New --nometa command line option.
1118    
1119     * mcvs-main.lisp (*cvs-options*): Add "nometa" to list.
1120     (mcvs-execute): Filter global options to recognize
1121     Meta-CVS-specific ones.
1122    
1123     * options.lisp (*nometa-option*): New special variable.
1124     (filter-global-options): New function.
1125    
1126     * generic.lisp (mcvs-generic): Honor *nometa-option* special
1127     variable.
1128    
1129     2002-03-09 Kaz Kylheku <kaz@ashi.footprints.net>
1130    
1131 kaz 1.45 * generic.lisp (mcvs-generic): Make sure TYPES file is
1132     included in list of files.
1133    
1134     2002-03-09 Kaz Kylheku <kaz@ashi.footprints.net>
1135    
1136 kaz 1.44 * mcvs-main.lisp (*add-options*): Support -R option for add.
1137     Thus, recursive add works now.
1138    
1139     2002-03-09 Kaz Kylheku <kaz@ashi.footprints.net>
1140    
1141 kaz 1.43 Fix mcvs filt so it handles suffixed F- files properly.
1142    
1143     * filt.lisp (make-filt-hash): New function.
1144     (mcvs-filt): After matching hex digits, also check for
1145     a suffix match.
1146    
1147 kaz 1.40 2002-02-17 Kaz Kylheku <kaz@ashi.footprints.net>
1148    
1149 kaz 1.42 Support for file type keyword treatment under mcvs add.
1150    
1151     * add.lisp (mcvs-add): Restructured to build up list of new file
1152     suffixes, allow the user to edit the file which determines how
1153     they are treated, filter out ignored files and pass -k options
1154     to multiple cvs adds.
1155    
1156     * types.lisp (*mcvs-new-types*): New constant.
1157     (*types-comments*): Constant moved here from import.lisp.
1158     (types-remove-ignores): New function. Code factored out from
1159     mcvs-import.
1160     (types-let-user-edit): Likewise.
1161     (types-make-cvs-adds): New function.
1162    
1163     * import.lisp (*types-comments*): Constant removed. Moved to
1164     types.lisp
1165     (mcvs-import): Code factored out to new functions in types.lisp, which
1166     are also used by add.lisp.
1167    
1168     2002-02-17 Kaz Kylheku <kaz@ashi.footprints.net>
1169    
1170 kaz 1.41 * print.lisp: New file.
1171     (print-assoc-list): New function.
1172     * types.lisp: Use print-assoc-list to nicely print the types.
1173     * import.lisp (mcvs-import): Don't bother getting user to
1174     edit the types if the type list is empty. In fact, don't
1175     even create the file.
1176    
1177     2002-02-17 Kaz Kylheku <kaz@ashi.footprints.net>
1178    
1179     * add.lisp (mcvs-add): Use new form of mapping-generate-name.
1180    
1181     2002-02-17 Kaz Kylheku <kaz@ashi.footprints.net>
1182    
1183 kaz 1.40 * import.lisp (mcvs-import): Fix broken restart for re-editing
1184     the types file.
1185     (*types-comments*): Drastically shorten the help text.
1186    
1187 kaz 1.38 2002-02-16 Kaz Kylheku <kaz@ashi.footprints.net>
1188    
1189 kaz 1.39 Support for filetypes in import.
1190    
1191     * posix.lisp (suffix): Separator character parameter is optional;
1192     multiple occurences of character lead to one big suffix like
1193     ".tar.gz" instead of ".gz". A leading dot means it's not a suffix but
1194     a hidden file like ".exrc".
1195     (edit-file): New function, brings up text editor for specified file.
1196    
1197     * clisp-linux.lisp (env-lookup): New function for environment
1198     variable lookup.
1199    
1200     * types.lisp: New source file.
1201     (*mcvs-types-name*, *mcvs-types*): New constants for TYPES filename.
1202     (types-read, types-write, types-sanity-check,
1203     types-to-import-wrapper-args): New functions.
1204    
1205     * import.lisp (*types-comments*): New constant.
1206     (mcvs-import): Restructured to build up list of file suffixes,
1207     allow the user to edit the file which determines how they
1208     are treated, filter out ignored files and pass -W options to cvs import
1209     to handle the rest. Failed cvs import is turned into restartable
1210     condition.
1211    
1212     * mapping.lisp (mapping-generate-name): Takes a suffix parameter.
1213     The F-files now carry a suffix obtained from the original file,
1214     because I have concluded that this was the only reasonable way
1215     to integrate with CVS.
1216    
1217     2002-02-16 Kaz Kylheku <kaz@ashi.footprints.net>
1218    
1219 kaz 1.38 * add.lisp (mcvs-add): Last change completely broke add due
1220     to not breaking out of the retry loop.
1221    
1222 kaz 1.36 2002-02-13 Kaz Kylheku <kaz@ashi.footprints.net>
1223    
1224 kaz 1.37 * move.lisp (mcvs-move): If the mapping-update operation returns
1225     nil, or terminates by a non-local jump, restore the filemap.
1226     * mapping.lisp (mapping-update): When returning normally,
1227     return t. When returning after doing a rollback, return nil.
1228    
1229     2002-02-13 Kaz Kylheku <kaz@ashi.footprints.net>
1230    
1231 kaz 1.36 * error.lisp (mcvs-error-handler): Bugfix. We were closing over
1232     a binding of the iteration variable of a dolist, which has only
1233     one binding over the entire loop.
1234    
1235     * mapping.lisp (mapping-update): Gathers up info all local
1236     clobbered files, and then throw the error. Provides restart
1237     which allows user to print the list of clobbered files, and
1238     a restart which allows the user to have those files clobbered.
1239    
1240     2002-02-13 Kaz Kylheku <kaz@ashi.footprints.net>
1241    
1242     * checkout.lisp (mcvs-checkout-wrapper): Bugfix for last bugfix.
1243    
1244 kaz 1.35 2002-02-11 Kaz Kylheku <kaz@ashi.footprints.net>
1245    
1246     * checkout.lisp (mcvs-checkout-wrapper): Bugfix for bad
1247     destructuring-bind if there are no arguments.
1248    
1249 kaz 1.30 2002-02-10 Kaz Kylheku <kaz@ashi.footprints.net>
1250    
1251 kaz 1.34 * mapping.lisp (mapping-difference): Reformatted documentation string.
1252     (mapping-update): Implemented a continue restart which rolls back
1253     the changes done to the local filesystem.
1254    
1255     2002-02-10 Kaz Kylheku <kaz@ashi.footprints.net>
1256    
1257 kaz 1.31 * error.lisp (mcvs-error-handler): Rearranging the menu,
1258     so "T" is clumped with the main options, and any special restarts
1259 kaz 1.32 are clearly separated. Changed wording.
1260 kaz 1.31
1261     2002-02-10 Kaz Kylheku <kaz@ashi.footprints.net>
1262    
1263 kaz 1.30 * update.lisp (mcvs-update): Re-print the "Invoking CVS" chatter
1264     if the user re-tries the error.
1265    
1266     * add.lisp (mcvs-add): CVS failure is now a restartable error;
1267 kaz 1.33 user can decide whether to roll back the effects or retry the
1268     CVS add, or terminate to keep the effects anyway despite
1269     the failed add.
1270 kaz 1.30
1271     2002-02-10 Kaz Kylheku <kaz@ashi.footprints.net>
1272    
1273     * install.sh: Stop the script if there are compilation errors.
1274    
1275 kaz 1.24 2002-02-09 Kaz Kylheku <kaz@ashi.footprints.net>
1276    
1277 kaz 1.29 * error.lisp (*mcvs-errors-occured-p*): New special variable.
1278     (mcvs-error-handler): Set *mcvs-errors-occured-p* to T.
1279     * mcvs-main.lisp (mcvs): Take *mcvs-errors-occured-p* into
1280     account in computing termination status.
1281    
1282     2002-02-09 Kaz Kylheku <kaz@ashi.footprints.net>
1283    
1284 kaz 1.28 * update.lisp: Remove spurious newlines from error messages.
1285     * add.lisp: Likewise.
1286     * options.lisp: Likewise.
1287     * mapping.lisp: Likewise.
1288    
1289     2002-02-09 Kaz Kylheku <kaz@ashi.footprints.net>
1290    
1291 kaz 1.27 Adding some restarts around cvs update.
1292    
1293     * posix.lisp (execute-command-xargs): Bail with nil return
1294     value if any command line fails.
1295    
1296     * update.lisp (mcvs-update): Tests return value of execute-program
1297     and signal condition if it's nil. Provides a continue restart
1298     as well as a retry restart to try the command again.
1299    
1300     * error.lisp (mcvs-error-handler): Show retry restarts as
1301     a special menu item "R".
1302    
1303     2002-02-09 Kaz Kylheku <kaz@ashi.footprints.net>
1304    
1305 kaz 1.26 Added a much improved error handling routine in anticipation
1306     of better use of restarts.
1307    
1308     * error.lisp: New file
1309     (restart-destructure): New macro.
1310     (*mcvs-error-treatment*): Special variable, moved here from
1311     mcvs-main.
1312     (mcvs-error-handler): New function.
1313    
1314     * mcvs-main.lisp (mcvs-top-error-handler): Function removed.
1315     (mcvs-execute): Bind error to new mcvs-error-handler instad
1316     of mcvs-top-error-handler.
1317    
1318     2002-02-09 Kaz Kylheku <kaz@ashi.footprints.net>
1319    
1320 kaz 1.25 * mcvs-main.lisp (*mcvs-command-table*): The "stat" abbreviation
1321     for status command added.
1322    
1323     2002-02-09 Kaz Kylheku <kaz@ashi.footprints.net>
1324    
1325 kaz 1.24 Hooking conversion tool into command structure.
1326    
1327     * mcvs-main.lisp (*convert-options*): New constant.
1328     (*mcvs-command-table*): New entry for mcvs-convert-wrapper.
1329     * convert.lisp (mcvs-convert): Fix reference to nonexistent variable.
1330     (mcvs-convert-wrapper): New function.
1331    
1332 kaz 1.22 2002-02-08 Kaz Kylheku <kaz@ashi.footprints.net>
1333    
1334 kaz 1.23 Beginning work on repository conversion utility.
1335    
1336     * convert.lisp: New file. Contains conversion utility
1337     to make an Meta-CVS repository from an ordinary CVS repository,
1338     while preserving all history, tags and branches.
1339     (remove-attic-component, classify-tags, read-tags,
1340     mcvs-convert): New functions.
1341    
1342     * posix.lisp (suffix): New function. Computes suffix of file.
1343     (execute-program-xargs): New optional parameter, for specifying
1344     fixed part added at the end of each generated command line.
1345    
1346     * mapping.lisp (*mcvs-map-name*, *mcvs-local-map-name*): New constants.
1347     (*mcvs-map*, *mcvs-map-local*): Redefined in terms of new constants.
1348     (mapping-generate-name): New key parameter no-dir for not adding
1349     the directory prefix.
1350    
1351     2002-02-08 Kaz Kylheku <kaz@ashi.footprints.net>
1352    
1353 kaz 1.22 * checkout.lisp (mcvs-checkout): Ensure local mapping is
1354     sorted when written out, for easier comparisons.
1355    
1356 kaz 1.21 2002-02-07 Kaz Kylheku <kaz@ashi.footprints.net>
1357    
1358     * sync.lisp (synchronize-files): Return :dir symbol when either
1359     argument is a directory.
1360     * mapping.lisp (mapping-synchronize): Chatter output messages
1361     are shorter. Handles :dir return value from synchronize-files.
1362     (mapping-update): New sanity checks for moved and added
1363     files, to avoid clobbering local files. Removed redundant
1364     call to ensure-directories-exit in move logic, because
1365     synchronize-files will do it anyway. Chatter messages reordered
1366     to occur before their corresponding action is done.
1367    
1368     2002-02-07 Kaz Kylheku <kaz@ashi.footprints.net>
1369    
1370     Improve error handling, and builtin ``debug shell''.
1371    
1372     * mcvs-main.lisp (*mcvs-error-treatment*): Special variable
1373     can have new domain value, namely :decline.
1374     (mcvs-top-error-handler): Print error message when terminating
1375     non-restartable error. Handle new :decline treatment by
1376     simply returning.
1377     (mcvs-debug-shell): Set *mcvs-error-treatment* to :decline
1378     so that errors are caught by debugger.
1379    
1380 kaz 1.20 2002-02-04 Kaz Kylheku <kaz@ashi.footprints.net>
1381    
1382     * mapping.lisp (mapping-sort): Removed function.
1383     (mapping-write): Sort written map by F- file names,
1384     not by path names. This is far better for merging, because
1385     files stay in the same place when they are renamed.
1386    
1387 kaz 1.17 2002-02-03 Kaz Kylheku <kaz@ashi.footprints.net>
1388    
1389 kaz 1.19 Added status, log and annotate.
1390    
1391     * mcvs-main.lisp: (*log-options*, *status-options*,
1392     *annotate-options*): New constants.
1393     (*mcvs-command-table*): Add new entries.
1394    
1395     * generic-lisp (mcvs-log-wrapper, mcvs-status-wrapper,
1396     mcvs-annotate-wrapper): New functions.
1397    
1398     2002-02-03 Kaz Kylheku <kaz@ashi.footprints.net>
1399    
1400 kaz 1.18 Added tag command.
1401    
1402     * diff.lisp: File renamed to generic.lisp.
1403     (mcvs-diff): Function renamed to mcvs-generic.
1404    
1405     * generic.lisp (mcvs-generic): Function no longer dedicated to
1406     diffing only; takes CVS command to execute as an argument,
1407     also takes arguments and files as separate lists.
1408     (mcvs-diff-wrapper): Modified to invoke mcvs-generic properly.
1409     (mcvs-tag-wrapper): New function, uses mcvs-generic to implement
1410     tag command.
1411    
1412     * mcvs-main.lisp (*tag-options*): New constant.
1413     (*mcvs-command-table*): New entry for tag command.
1414    
1415     2002-02-03 Kaz Kylheku <kaz@ashi.footprints.net>
1416    
1417 kaz 1.17 Added workaround for operating system argument passing limitations,
1418     resembling the Unix xargs utility. Also, trimmed some fat
1419     from the basename function.
1420    
1421     * clisp-linux.lisp: (*argument-limit*): New constant added.
1422     (arglist-to-command-string): Function removed.
1423     (execute-program): Function removed.
1424     (shell-interpreter): New function, wrapper for CLISP's shell
1425     function, turns exit status into T (success) or NIL (failure).
1426    
1427     * diff.lisp (mcvs-diff): Uses execute-program-xargs instead
1428     of execute-program.
1429    
1430     * posix.lisp (basename): Does not canonicalize path name. This
1431     turns out to be an unnecessary performance hit in some cases.
1432     (arglist-to-command-string): New function. Similar to what was
1433     removed from clisp-linux, but this one properly escapes all
1434     shell metacharacters.
1435     (execute-program): New function, calls shell-interpreter.
1436     (execute-program-xargs): New function. Takes two argument lists.
1437     Forms one or more command lines by combining the first argument list
1438     with one or more pieces of the second argument list, and
1439     executes each command. The length of the pieces is determined
1440     by the argument passing limit.
1441    
1442     * dirwalk.lisp (ensure-directories-gone): Add use of
1443     canonicalize-path because basename doesn't do it.
1444    
1445 kaz 1.12 2002-02-02 Kaz Kylheku <kaz@ashi.footprints.net>
1446    
1447 kaz 1.16 Algorithmic efficiency improvements. No longer using
1448     abstract set operations to update file structure or find
1449     duplicates in the maps. Could still streamline the sorting.
1450    
1451     * mapping.lisp (mapping-sort): Express more succinctly using key.
1452     (mapping-dupe-check): Rewrite using loop over sorted lists.
1453     (mapping-difference): New function for computing mapping change.
1454     (mapping-update): Modify to use mapping-difference.
1455    
1456     2002-02-02 Kaz Kylheku <kaz@ashi.footprints.net>
1457    
1458 kaz 1.15 * mapping.lisp (mapping-update): When moving files, ensure
1459     that the target is unlinked if it exists.
1460    
1461     * move.lisp (simple-rename): No longer do target unlinking
1462     here. Also bugfix: it wasn't handling renames of directories
1463     containing just one file.
1464    
1465     2002-02-02 Kaz Kylheku <kaz@ashi.footprints.net>
1466    
1467 kaz 1.13 * mapping.lisp (mapping-dupe-check): New function for
1468     detecting duplicate objects or paths in a mapping.
1469     (mapping-sane-p): Function removed.
1470     (mapping-read): Use mapping-dupe-check to verify a map
1471     when asked by the sanity-check keyword.
1472     (mapping-update): Specify sanity check when reading MCVS/MAP.
1473    
1474 kaz 1.14 * checkout.lisp (mcvs-checkout): Checkout also performs
1475     sanity check.
1476    
1477 kaz 1.13 2002-02-02 Kaz Kylheku <kaz@ashi.footprints.net>
1478    
1479 kaz 1.12 * mcvs-main.lisp (mcvs): Use CLISP's exit function correctly
1480     to establish proper termination status.
1481    
1482 kaz 1.8 2002-01-31 Kaz Kylheku <kaz@ashi.footprints.net>
1483    
1484 kaz 1.10 * mcvs-main.lisp (mcvs-execute): Parse command-specific options
1485     properly based on knowledge of each command's set of options.
1486     (parse-args): Function removed.
1487    
1488 kaz 1.11 * options.lisp (parse-opt): Correctly process long options with
1489     arguments. Argument is part of the string, separated by = symbol.
1490    
1491 kaz 1.10 2002-01-31 Kaz Kylheku <kaz@ashi.footprints.net>
1492    
1493 kaz 1.9 * options.lisp (parse-opt): When multiple options characters are
1494     bunched up into one argument, and one of them other than the
1495     last one takes an argument, then the remaining ones are
1496     considered to constitute a string which is an argument to that
1497     option. For instance -y32 means -y 32, not -y -3 -2, assuming
1498     that y is an option that requires an argument.
1499    
1500     2002-01-31 Kaz Kylheku <kaz@ashi.footprints.net>
1501    
1502     Top level handler terminates by non-local exit back to
1503     mcvs function, rather than by calling (exit).
1504    
1505     * mcvs-main.lisp (mcvs-top-error-handler): Restructured
1506     to call (throw 'mcvs-exit t).
1507     (mcvs-execute): Ensure that NIL is returned by normal exit.
1508     (mcvs): Catches 'mcvs-exit throw, and calls (exit 0) or (exit 1)
1509     accordingly.
1510    
1511    
1512     2002-01-31 Kaz Kylheku <kaz@ashi.footprints.net>
1513    
1514 kaz 1.8 Renamed all ``filemap-'' functions to ``mapping-'' prefix.
1515    
1516     * mapping.lisp (filemap-generate-name, filemap-sort,
1517     filemap-extract-paths, filemap-lookup, filemap-prefix-lookup,
1518     filemap-prefix-matches, filemap-object-lookup,
1519     filemap-same-object-p, filemap-same-path-p, filemap-moved-p,
1520     filemap-rename-files, filemap-sane-p): Old names removed.
1521     (mapping-generate-name, mapping-sort,
1522     mapping-extract-paths, mapping-lookup, mapping-prefix-lookup,
1523     mapping-prefix-matches, mapping-object-lookup,
1524     mapping-same-object-p, mapping-same-path-p, mapping-moved-p,
1525     mapping-rename-files, mapping-sane-p): New names created.
1526     (mapping-read, mapping-write, mapping-synchronize,
1527     mapping-update): Edit calls to renamed functions.
1528     * add.lisp (mcvs-add): Likewise.
1529     * diff.lisp (mcvs-diff): Likewise.
1530     * filt.lisp (mcvs-filt): Likewise.
1531     * import.lisp (mcvs-import): Likewise.
1532     * move.lisp (simple-rename, simple-move-to-dir, move-guts): Likewise.
1533     * remove.lisp (mcvs-remove): Likewise.
1534    
1535 kaz 1.6 2002-01-30 Kaz Kylheku <kaz@ashi.footprints.net>
1536    
1537 kaz 1.7 Factored out repeated code for reading and writing of the MAP and
1538     MAP-LOCAL files.
1539    
1540     * mapping.lisp (mapping-read, mapping-write): New functions.
1541     (mapping-synchronize, mapping-update): Use new functions.
1542     * move.lisp (mcvs-move): Likewise.
1543     * filt.lisp (mcvs-filt): Likewise.
1544     * add.lisp (mcvs-add): Likewise.
1545     * remove.lisp (mcvs-remove): Likewise.
1546     * checkout.lisp (mcvs-checkout): Likewise.
1547     * diff.lisp (mcvs-diff): Likewise.
1548     * import.lisp (mcvs-import): Likewise.
1549    
1550     2002-01-30 Kaz Kylheku <kaz@ashi.footprints.net>
1551    
1552 kaz 1.6 * filt.lisp (mcvs-filt): use *mcvs-dir* variable instead of
1553     hard coding "MCVS" string.
1554    
1555     2002-01-30 Kaz Kylheku <kaz@ashi.footprints.net>
1556    
1557     * MCVS-PAPER: Renamed to Meta-CVS-PAPER
1558    
1559     * README: Change all references to MCVS to Meta-CVS, the
1560     new official name of the program.
1561     * add.lisp: Likewise
1562     * chatter.lisp: Likewise
1563     * checkout.lisp: Likewise
1564     * clisp-linux.lisp: Likewise
1565     * commit.lisp: Likewise
1566     * diff.lisp: Likewise
1567     * dirwalk.lisp: Likewise
1568     * filt.lisp: Likewise
1569     * import.lisp: Likewise
1570     * INSTALL: Likewise
1571     * mapping.lisp: Likewise
1572     * mcvs-main.lisp: Likewise
1573     * Meta-CVS-PAPER: Likewise
1574     * move.lisp: Likewise
1575     * options.lisp: Likewise
1576     * posix.lisp: Likewise
1577     * RELEASE-NOTES: Likewise
1578     * remove.lisp: Likewise
1579     * restart.lisp: Likewise
1580     * seqfuncs.lisp: Likewise
1581     * split.lisp: Likewise
1582     * sync.lisp: Likewise
1583     * system.lisp: Likewise
1584     * update.lisp: Likewise
1585    
1586 kaz 1.4 2002-01-28 Kaz Kylheku <kaz@ashi.footprints.net>
1587    
1588 kaz 1.5 * move.lisp (move-guts): test the actual filesystem as well
1589     as the map for existence of a directory or file. This makes
1590     the move operation behave better. Files can be moved to an
1591     existing directory that is not known to MCVS, and a file
1592     can properly clobber a target file that is not known to MCVS.
1593    
1594     * clisp-linux.lisp (directory-p, regular-p, symlink-p): define
1595     methods for these generic functions for a NIL argument, such
1596     that they return NIL.
1597    
1598     2002-01-28 Kaz Kylheku <kaz@ashi.footprints.net>
1599    
1600 kaz 1.4 * move.lisp (simple-move-to-dir): eliminated a bunch of code
1601     with the result that mcvs mv now works more like the Unix mv
1602     when moving a directory to another directory.
1603    
1604     * mcvs-main.lisp (mcvs-execute): fix bogus error message
1605     when options are given but no command.
1606    
1607     * README: don't use -z3 in example because this style of
1608     specifying an argument to an option doesn't work.
1609    
1610 kaz 1.1 2002-01-27 Kaz Kylheku <kaz@ashi.footprints.net>
1611    
1612     * add.lisp (mcvs-add): Remove bogus test for NIL or T; allow
1613     recursivep to be a generalized boolean variable. This allows
1614     mcvs add -R to work properly.
1615 kaz 1.2
1616     * mcvs-main.lisp (*cvs-command-options-arg*): add support
1617     for -u parameter, useful in cvs diff.
1618 kaz 1.3 (*mcvs-command-table*): Add "fi" shorthand for "filt".

  ViewVC Help
Powered by ViewVC 1.1.5