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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.5