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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.163 - (hide annotations)
Fri Sep 6 03:19:07 2002 UTC (11 years, 7 months ago) by kaz
Branch: MAIN
Changes since 1.162: +15 -0 lines
Be transparent with respect to mapping entry property lists:
preserve unrecognized indicators and values.

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

  ViewVC Help
Powered by ViewVC 1.1.5