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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.172 - (hide annotations)
Thu Sep 12 02:36:03 2002 UTC (11 years, 7 months ago) by kaz
Branch: MAIN
Changes since 1.171: +11 -0 lines
Revamping help system to support more detailed help
for individual commands.

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

  ViewVC Help
Powered by ViewVC 1.1.5