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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.167 - (hide annotations)
Sun Sep 8 01:34:53 2002 UTC (11 years, 7 months ago) by kaz
Branch: MAIN
Changes since 1.166: +9 -0 lines
Eliminate inappropriate pluralization in messages.

* code/grab.lisp (mcvs-grab): Use ~:p to substitute a 's'
if the parameter is other than 1.

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

  ViewVC Help
Powered by ViewVC 1.1.5