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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.5