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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.5