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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.5