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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.198 - (hide annotations)
Sun Oct 6 08:17:28 2002 UTC (11 years, 6 months ago) by kaz
Branch: MAIN
Changes since 1.197: +9 -0 lines
* code/remap.lisp (mcvs-remap): Preserve property lists of
mapping entries, and pick up changes in execute permission.

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

  ViewVC Help
Powered by ViewVC 1.1.5