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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.291 - (hide annotations)
Fri Nov 24 04:08:24 2006 UTC (7 years, 4 months ago) by kaz
Branch: MAIN
Changes since 1.290: +24 -0 lines
Rewrote the CLISP bindings. The CLISP FFI is used to directly
access the glibc shared library on Linux. This completely eliminates
the need to create a custom linking set. Meta-CVS can now be built
without any C development tools. The downside is that the the FFI
definitions are not portable, since they depend on the glibc ABI.
Support for other C libraries has to be hacked in the clisp-ffi.lisp
module now. The main() hack is gone now too.

* code/unix-bindings/link.sh: Removed.
* code/unix-bindings/Makefile: Likewise.
* code/unix-bindings/wrap.c: Likewise.

* code/unix-bindings/unix.lisp: Renamed to
code/unix-bindings/clisp-ffi.lisp. Contains revamped FFI definitions
targetting Linux glibc.

* code/install.sh: Substantially simplified. No longer builds a CLISP
linking set. No longer builds the mcvs-upgrade tool, which is not
useful any longer. Error tests eliminated with use of ``set -e''.

* code/mcvs.lisp: Updated to load everything properly.
1 kaz 1.291 2006-11-23 Kaz Kylheku <kkylheku@gmail.com>
2    
3     Rewrote the CLISP bindings. The CLISP FFI is used to directly
4     access the glibc shared library on Linux. This completely eliminates
5     the need to create a custom linking set. Meta-CVS can now be built
6     without any C development tools. The downside is that the the FFI
7     definitions are not portable, since they depend on the glibc ABI.
8     Support for other C libraries has to be hacked in the clisp-ffi.lisp
9     module now. The main() hack is gone now too.
10    
11     * code/unix-bindings/link.sh: Removed.
12     * code/unix-bindings/Makefile: Likewise.
13     * code/unix-bindings/wrap.c: Likewise.
14    
15     * code/unix-bindings/unix.lisp: Renamed to
16     code/unix-bindings/clisp-ffi.lisp. Contains revamped FFI definitions
17     targetting Linux glibc.
18    
19     * code/install.sh: Substantially simplified. No longer builds a CLISP
20     linking set. No longer builds the mcvs-upgrade tool, which is not
21     useful any longer. Error tests eliminated with use of ``set -e''.
22    
23     * code/mcvs.lisp: Updated to load everything properly.
24    
25 kaz 1.290 2004-12-16 Kaz Kylheku <kaz@ashi.footprints.net>
26    
27     Add hack to get our own main() function which calls the one
28     inside CLISP.
29    
30     * code/unix-bindings/link.sh: Add objcopy hack.
31    
32     * code/unix-bindings/wrap.c (main): New function.
33    
34 kaz 1.289 2004-12-10 Kaz Kylheku <kaz@ashi.footprints.net>
35    
36     Get rid of CLISP 2.27 support.
37    
38     * code/unix-bindings/unix.lisp (null-pointer-p): Function removed.
39    
40     * code/clisp-unix.lisp: The :clisp-old symbol no longer conditionally
41     pushed onto *features*
42     (pointer-null): Just version of the macro present; no more
43     read-time switch.
44    
45 kaz 1.288 2004-07-25 Kaz Kylheku <kaz@ashi.footprints.net>
46    
47     * code/unix-bindings/unix.lisp: Get rid of bogus version check
48     which assumes that the version can be read as a floating point
49     number! Rather than rely on the version, check for the specific
50     features.
51    
52 kaz 1.285 2004-03-07 Kaz Kylheku <kaz@ashi.footprints.net>
53    
54 kaz 1.287 * code/install.sh: Generated mcvs-upgrade script cleans away
55     old Meta-CVS package and does garbage collection.
56    
57     2004-03-07 Kaz Kylheku <kaz@ashi.footprints.net>
58    
59 kaz 1.285 Revamped loading system. Got rid of require/provide in all
60     Lisp source files.
61    
62     * code/mcvs.lisp: New file. Responsible for compiling and loading
63     everything in the right order.
64    
65     * code/mcvs-main.lisp: File renamed to main.lisp.
66    
67     * code/mcvs-package.lisp: File renamed to package.lisp.
68    
69     * code/system.lisp: File removed.
70    
71 kaz 1.286 * code/install.sh: Use module mcvs for compiling and loading.
72    
73 kaz 1.284 2004-02-03 Kaz Kylheku <kaz@ashi.footprints.net>
74    
75     * docs/Meta-CVS-PAPER.txt: Revising and editing.
76    
77 kaz 1.283 2004-02-02 Kaz Kylheku <kaz@ashi.footprints.net>
78    
79     * code/convert.lisp (mcvs-convert): Ensure that the converted
80     project has TYPES and .cvsignore files, not just a MAP, and that
81     these have all the branch and version tags. This is important,
82     because users might end up independently adding these on branches
83     and end up with merge problems.
84    
85 kaz 1.281 2004-01-31 Kaz Kylheku <kaz@ashi.footprints.net>
86    
87 kaz 1.282 * code/clisp-unix.lisp (current-dir-restore): An inner macro
88     called in-original-dir is now visible to the body enclosed in
89     current-dir-restore. This allows the current directory to be
90     temporarily escaped back to the original directory.
91    
92     * code/convert.lisp (mcvs-convert): Fixed to no longer assume
93     that the target directory is a sibling of the source. The two can be
94     located anywhere.
95     (*convert-help*): Revise text.
96 kaz 1.281
97 kaz 1.282 2004-01-31 Kaz Kylheku <kaz@ashi.footprints.net>
98    
99     * code/remap.lisp (mcvs-remap): Provide a restart for continuing
100     in the case when an F- file is referenced in the MAP, but no
101     working copy of it exists. By continuing through all these
102     errors, the MAP is cleaned of the nonexistent entries, which
103     provies a way to clean up after the naive ``mcvs convert''
104     algorithm.
105    
106     * code/convert.lisp (*convert-help*): Add text recommending the use
107 kaz 1.281 of ``mcvs remap'' to clean up.
108    
109     2004-01-31 Kaz Kylheku <kaz@ashi.footprints.net>
110    
111 kaz 1.282 * code/convert.lisp (mcvs-convert): RCS files that are in an Attic
112 kaz 1.281 subdirectory in the source CVS project end up in the Attic
113     directory of the target Meta-CVS project.
114     (remove-attic-component): Return second value that indicates
115     whether the Attic component was stripped.
116    
117 kaz 1.278 2004-01-28 Kaz Kylheku <kaz@ashi.footprints.net>
118    
119 kaz 1.282 * code/convert.lisp (mcvs-convert): Skip CVS directories.
120 kaz 1.280 In the repository, these contain things like watcher and editor lists,
121     which probably should not be be replicated in the Meta-CVS sandbox.
122     Sort the newly created MAP properly.
123     (remove-attic-component): If input is "Attic", produce ".".
124    
125     2004-01-28 Kaz Kylheku <kaz@ashi.footprints.net>
126    
127 kaz 1.279 More convert-related changes.
128    
129 kaz 1.282 * code/mcvs-main.lisp (*mcvs-command-table*): Add *convert-help*.
130 kaz 1.279
131 kaz 1.282 * code/convert.lisp (mcvs-convert): Bugfix: failure to increment
132 kaz 1.279 branch number by two to generate unique branch tags.
133     Bugfix: paths going into MAP must be canonicalized.
134     (*convert-help*): New string constant.
135    
136     2004-01-28 Kaz Kylheku <kaz@ashi.footprints.net>
137    
138 kaz 1.278 * code/execute.lisp (execute-program-xargs): In the case that
139     there are no variable args passed, the fixed trailing args should
140     still be passed to the command.
141    
142     2004-01-28 Kaz Kylheku <kaz@ashi.footprints.net>
143    
144     Fixes to convert command to make it useable.
145    
146     * code/posix.lisp (suffix): Return dir name as additional value.
147    
148     * code/convert.lisp (remove-attic-component): Rewrite with
149     different semantics.
150     (mcvs-convert): Fix path handling bug whereby basenames
151     instead of full paths were written to MAP file.
152     Don't call rcs to make tags when there are none.
153     Extra tracing to tell user what is going on.
154    
155 kaz 1.276 2004-01-26 Kaz Kylheku <kaz@ashi.footprints.net>
156    
157 kaz 1.277 * code/grab.lisp (mcvs-grab): Bugfixes to repeated grab over
158     partial sandbox: abstract path instead of real path used for
159     reading new symbolic link targets, and execute permissions.
160    
161     2004-01-26 Kaz Kylheku <kaz@ashi.footprints.net>
162    
163 kaz 1.276 * code/branch.lisp (equal-sticky): Add missing cases for handling
164     the valid tag value NIL.
165    
166 kaz 1.273 2004-01-08 Kaz Kylheku <kaz@ashi.footprints.net>
167    
168 kaz 1.275 * code/link.lisp (*link-help*): Grammar fix.
169    
170     2004-01-08 Kaz Kylheku <kaz@ashi.footprints.net>
171    
172 kaz 1.274 * code/options.lisp (process-cvs-options): Update
173     --version copyright message to 2004.
174    
175     2004-01-08 Kaz Kylheku <kaz@ashi.footprints.net>
176    
177 kaz 1.273 Parsing directory sticky tag from CVS/Tag requires
178     slightly different logic from the sticky tags in CVS/Entries.
179     CVS/Entries doesn't distinguish branch and version
180     sticky tags.
181    
182     This change gets rid of the incorrect warning about
183     not all files being on the same tag when the working
184     copy is sticky to a version tag.
185    
186     * code/branch.lisp (parse-sticky): Function renamed to
187     parse-dir-sticky.
188     (parse-entries-sticky): New function.
189     (equal-sticky): New function.
190     (read-cvs-entries): Use parse-entries-sticky.
191     (same-tag-check): Use equal-sticky instead of equal.
192     (what-are-we-sticky-to): Use parse-dir-sticky.
193    
194     2004-01-08 Kaz Kylheku <kaz@ashi.footprints.net>
195    
196     Cleanup.
197    
198     * code/grab.lisp (*grab-help*): Spelling error.
199    
200     * code/system.lisp: Require posix module before clisp-unix,
201     which wants it.
202    
203     * code/clisp-unix.lisp: Don't bother requiring posix,
204     since it comes from system.
205     Require "chatter" rather than "chatter.lisp"; this is why
206     were not getting the compiled version of this module
207     into the images.
208    
209     2004-01-08 Kaz Kylheku <kaz@ashi.footprints.net>
210    
211     Upgrade to CLISP 2.32.
212    
213     * code/unix-bindings/unix.lisp: If the CLISP version is
214     newer than 2.31 then set the variables ffi::*output-c-functions*
215     and ffi::*output-c-variables* to get the old translator
216     behavior.
217    
218     * code/rcs-utils.lisp: We can't use #s read syntax for
219     specifying an rcs-token structure literal, because
220     we have not specialized make-load-form. This used to
221     work anyway but now breaks under CLISP 2.32.
222    
223 kaz 1.272 2003-07-15 Kaz Kylheku <kaz@ashi.footprints.net>
224    
225     * code/mcvs-generic.lisp (mcvs-generic): Removed
226     the default-include-meta-files keyword parameter.
227     (mcvs-tag, mcvs-commit): Remove use of keyword parameter.
228     This fixes the silly behavior of including meta files
229     even when the command line specifies a file list.
230     Also, bugfix: *nometa-option* now works when
231     global-if-empty-file-list is true, and there are no files.
232    
233     * code/update.lisp (mcvs-update): Remove use of keyword
234     parameter in call to mcvs-generic.
235    
236 kaz 1.270 2003-07-06 Kaz Kylheku <kaz@ashi.footprints.net>
237    
238 kaz 1.271 Based on a patch from Walter C. Pelissero <walter@pelissero.de>
239    
240 kaz 1.270 * code/mcvs-main.lisp (with-open-file-ignore-errors): New macro.
241     (mcvs-execute): Use new macro to properly handle opening the
242     controlling terminal when there are errors other than
243     the non-existence of the object.
244    
245     2003-06-12 Kaz Kylheku <kaz@ashi.footprints.net>
246    
247     * code/mcvs-main.lisp (mcvs-help): Move some special declarations
248     out of the function to the top level.
249    
250 kaz 1.269 2003-05-25 Kaz Kylheku <kaz@ashi.footprints.net>
251    
252     * code/filt.lisp (mcvs-filt-loop): Do not filter F- names that
253     are embedded in paths (preceded by a slash). This supersedes
254     the old behavior which was to avoid filtering F- names preceded
255     by "MCVS/".
256    
257 kaz 1.268 2003-04-30 Kaz Kylheku <kaz@ashi.footprints.net>
258    
259     * code/generic.lisp (mcvs-generic): The after-synchronization
260     was going in both directions rather than just MCVS -> tree.
261    
262     2003-04-30 Kaz Kylheku <kaz@ashi.footprints.net>
263    
264     * code/mcvs-main.lisp (mcvs-execute): If not able to open controlling
265     tty, emit some warning messages that interactive error handling is
266     disabled. This alerts users to problems, like missing /dev directory
267     on Cygwin.
268    
269 kaz 1.267 2003-04-24 Kaz Kylheku <kaz@ashi.footprints.net>
270    
271     * docs/generate.sh: Use valid shell syntax for identifiers.
272    
273     2003-04-24 Kaz Kylheku <kaz@ashi.footprints.net>
274    
275     * code/mcvs-main.lisp (mcvs-execute): Bugfix: add missing OPEN
276     option to avoid trying to create the controlling terminal device
277     if it does not exist, and yield NIL as expected.
278    
279 kaz 1.265 2003-04-23 Kaz Kylheku <kaz@ashi.footprints.net>
280    
281 kaz 1.266 New commands, sync-from-cvs and sync-to-cvs.
282    
283     * code/mcvs-main.lisp (*sync-to-cvs-options*, *sync-from-cvs-options*):
284     New option constants.
285     (*mcvs-command-table*): New entries.
286     (*usage*): New help text.
287    
288     * code/generic.lisp (mcvs-generic): New keyword parameter
289     no-invoke-cvs.
290     (mcvs-sync-to-wrapper, mcvs-sync-from-wrapper): New functions.
291    
292     2003-04-23 Kaz Kylheku <kaz@ashi.footprints.net>
293    
294 kaz 1.265 Improved error handling again in a flash of sanity. The whole
295     idea of ``bail'' as a restart is gone. All code which must perform
296     some complex cleanup action does so as part of normal unwinding.
297     And so termination becomes safe.
298    
299     * code/update.lisp (mcvs-update): Change bail restart to continue.
300    
301     * code/mcvs-main.lisp (*global-options*): Remove "error-bail".
302     (*usage*): Remove description of --error-bail.
303     (mcvs-execute): Bind *mcvs-error-treatment* to :terminate rather
304     than :bail if controlling TTY cannot be opened.
305    
306     * code/move.lisp (mcvs-move): Change "Undoing move" error message
307     to "Undoing changes to map".
308    
309     * code/add.lisp (mcvs-add): Get rid of bail restart; move cleanup
310     code into unwind-protect block.
311    
312     * code/error.lisp (*mcvs-error-treatment*): Touch up docstring.
313     (mcvs-error-handler): Remove anything having to do with :bail.
314     Change description of `T' command to suggest that it is safe.
315    
316     * code/options.lisp (filter-mcvs-options): Remove handling of
317     "error-bail" option.
318    
319     * code/mapping.lisp (mapping-update): Get rid of outermost
320     restart-case, which had just a bail restart. Replace it with
321     unwind-protect block which does exactly the same restoration.
322    
323 kaz 1.264 2003-04-22 Kaz Kylheku <kaz@ashi.footprints.net>
324    
325     Improved error handling. Use of tty for user interaction, plus
326     new global option for selecting non-interactive bail behavior.
327    
328     * code/mcvs-main.lisp (*global-options*): add --error-bail option.
329     (*usage*): Describe new option.
330     (mcvs-execute): Dynamically bind *interactive-error-io* variable
331     to a stream formed by opening the controlling tty.
332     Send error message to *error-output* rather than *standard-output*.
333    
334     * code/unix-bindings/unix.lisp (unix-funcs:ctermid): New function,
335     FFI interface to mcvs_ctermid.
336    
337     * code/unix-bindings/wrap.c (mcvs_ctermid): New function.
338    
339     * code/chatter.lisp (chatter): Chatter now goes to *error-output*
340     rather than *standard-output*.
341    
342     * code/error.lisp (*interactive-error-io*): New special variable,
343     holds stream open to controlling tty.
344     (mcvs-terminate): New function.
345     (mcvs-error-handler): Use *interactive-error-io* to print menu
346     and obtain user input. Support the :bail value of
347     *mcvs-error-treatment* Plus some cosmetic changes.
348    
349     * code/options.lisp (filter-mcvs-options): Support --error-bail option.
350    
351     * code/filt.lisp (mcvs-filt-loop): Bugfix, (read-line t ...)
352     should be (read-line *standard-input* ...) because t stands
353     for *terminal-io* rather than *standard-io*, unlike in the
354     format function!
355    
356     * code/rcs-utils.lisp (rcs-read-token): Read from *standard-input*
357     rather than *terminal-io*.
358    
359    
360 kaz 1.263 2003-04-21 Kaz Kylheku <kaz@ashi.footprints.net>
361    
362     Slightly redesigned error handling protocol.
363    
364     * code/update.lisp (mcvs-update): Change continue restart to bail.
365    
366     * code/add.lisp (mcvs-add): Likewise.
367    
368     * code/error.lisp (mcvs-error-handler): Specially recognize two
369     additional restart symbols, bail and info. A bail restart performs
370     any rolling back and cleanup and terminates. Continuation is now
371     properly reserved for actions that proceed boldly to finish
372     the job, possibly irretrievably clobbering precious data.
373     The info restart is now a standard way to indicate that more
374     details about the error can be obtained, so this does not have
375     to be represented as a special action with an ad-hoc restart.
376    
377     * code/create.lisp (mcvs-create): Change show restart to info.
378    
379     * code/remap.lisp (mcvs-remap): Change ignore restart to continue.
380    
381     * code/mapping.lisp (mapping-update): Change ignore and do-clobber
382     restarts to continue, and print-clobbers restart to info.
383     Change continue restart to bail.
384    
385 kaz 1.262 2003-04-14 Kaz Kylheku <kaz@ashi.footprints.net>
386    
387     New command, remote-filt.
388    
389     * code/mcvs-main.lisp (*remote-filt-options*): New option constant.
390     (*mcvs-command-table*): Entries for new command added.
391     (*usage*): Help text added.
392    
393     * code/filt.lisp (filt-select-map): New keyword parameter for
394     specifing repository module. CVS up -p or co -p command generated
395     accordingly. Also, little glitch fixed: the local case descends
396     into the MCVS directory, to avoid a warning message that occurs
397     when CVS is used in server mode.
398     (mcvs-filt-loop): New function, contains most of the old mcvs-filt
399     function body.
400     (mcvs-filt): Calls new mcvs-filt-loop to do actual filtering work.
401     (mcvs-remote-filt, mcvs-remote-filt-wrapper): New functions.
402    
403     * code/clisp-unix.lisp (with-input-from-program): Macro changed
404     to include debug tracing of the invoked command.
405    
406 kaz 1.261 2003-04-13 Kaz Kylheku <kaz@ashi.footprints.net>
407    
408     * code/grab.lisp (read-word-hash): Convert each token to a simple
409     string object. This can save a lot of memory when large numbers
410     of files have to be analyzed.
411    
412 kaz 1.260 2003-04-12 Kaz Kylheku <kaz@ashi.footprints.net>
413    
414     * code/mapping.lisp (mapping-read): Provide a restart for
415     file errors, which lets the user interactively substitute an
416     empty map if the file can't be read. This is intended to handle
417     the case when MCVS/MAP is missing; for example, the user
418     updated to a sticky date for which no revision of the MAP
419     exists. The effect of continuing will be that all files
420     will disappear.
421    
422     2003-04-12 Kaz Kylheku <kaz@ashi.footprints.net>
423    
424     Revamped the synchronization logic. Synchronization now happens
425     in a specific direction. For example, if we are doing a diff,
426     we just need to push changes from the tree to the MCVS directory,
427     not the other way around. Or: before an update or commit, we push from
428     the tree to MCVS, then after the update, in the other direction.
429    
430     * code/update.lisp (mcvs-update): The before update is done
431     in the :left direction only, and the after update in the :right.
432    
433     * code/move.lisp (mcvs-move): The just-in-case sync is done
434     in the :left direction only.
435    
436     * code/link.lisp (mcvs-link): Likewise.
437    
438     * code/remove.lisp (mcvs-remove): Likewise.
439    
440     * code/add.lisp (mcvs-add): Get rid of mapping-synchronize call;
441     it's completely unnecessary, since the new files are not even
442     in the MAP-LOCAL, and the add logic explicitly links them into
443     the MCVS directory.
444    
445     * code/generic.lisp (mcvs-generic): New keyword parameter,
446     need-sync-before. Before-synchronization done in :left direction,
447     after-synchronization in :right direction. Before-synchronization
448     is now not done by default; need-sync-before must be specified.
449     (mcvs-commit-wrapper): Specify before and after sync.
450     (mcvs-diff-wrapper, mcvs-status-wrapper,
451     mcvs-edit-wrapper): Explicitly specify before sync.
452     (mcvs-tag-wrapper, mcvs-annotate-wrapper): Implicitly specify no sync.
453     (mcvs-unedit-wrapper): Add before sync.
454    
455     * code/sync.lisp (synchronize-files): New key parameter :direction,
456     values can be :left, :right or :either. Default is :either.
457     If the value is :left or :right, then a sync is done only in that
458     direction, otherwise the value :no-sync is returned.
459     Behavior change: if the left file is missing (F- file in MCVS
460     directory) it is not re-created, but rather :no-sync is returned.
461     Also, if both files exist, have the same timestamp, and are
462     distinct objects, if the direction is :left or :right, then
463     the appropriate restart is automatically chosen. So this will
464     do the right thing on filesystems where link() is performed by
465     copying, without bothering the user with the error.
466    
467     * code/mapping.lisp (mapping-synchronize): New :direction key
468     parameter, passed down to synchronize-filed. The new :no-sync
469     return value from synchronize-files is handled.
470     (mapping-update): Select the :right direction for synchronizing
471     moves, adds or rollbacks.
472    
473 kaz 1.259 2003-04-06 Kaz Kylheku <kaz@ashi.footprints.net>
474    
475     * code/execute.lisp (execute-program-xargs): Fix again: perform
476     all of the split command lines, even if some of them fail.
477     The returned status is a logical AND combination; if all of the
478     subcommands succeeded then it's T, otherwise NIL.
479    
480    
481 kaz 1.258 2003-03-31 Kaz Kylheku <kaz@ashi.footprints.net>
482    
483     * code/execute.lisp (execute-program-xargs): Bugfix: if program
484     execution fails, then bail out of the entire function, not just
485     the inner loop. Otherwise the program is wrongly run again,
486     on a bogus file list.
487    
488 kaz 1.257 2003-03-04 Kaz Kylheku <kaz@ashi.footprints.net>
489    
490     * code/update.lisp (mcvs-update): Simplified restart code.
491    
492     2003-03-04 Kaz Kylheku <kaz@ashi.footprints.net>
493    
494     * code/restart.lisp (parse-restart-case-keywords): New function.
495     (super-restart-case-expander): Some logic factored out
496     into new function.
497    
498 kaz 1.256 2003-03-03 Kaz Kylheku <kaz@ashi.footprints.net>
499    
500     * code/mapping.lisp (mapping-update): Rewrite restart-bind
501     block using super-restart-case.
502    
503 kaz 1.254 2003-03-01 Kaz Kylheku <kaz@ashi.footprints.net>
504    
505 kaz 1.255 * code/restart.lisp (super-restart-case-expander): Roll the
506     functionality of :report-format into :report.
507     (super-restart-case): Slight rearrangement of the tagbody
508     to eliminate the skip around the out-code.
509    
510     2003-03-01 Kaz Kylheku <kaz@ashi.footprints.net>
511    
512 kaz 1.254 * code/restart.lisp (super-restart-case-expander): New function.
513     (super-restart-case): New macro.
514    
515     * code/create.lisp (mcvs-create): Rewrite a restart-bind
516     construct more succinctly using super-restart-case.
517    
518 kaz 1.253 2003-02-26 Kaz Kylheku <kaz@ashi.footprints.net>
519    
520     * code/create.lisp (mcvs-create): After the TYPES file is
521     edited, scan the MCVS directory for unexpected files.
522     The intent is to detect text editor backups. If any are
523     found, some interactive error handling lets the user acknowledge
524     their deletion. If they are not deleted, then cvs import will
525     bring them into the repository. This behavior was discovered
526     by Johannes Grødem who suggested that it could be handled.
527    
528 kaz 1.252 2003-02-25 Kaz Kylheku <kaz@ashi.footprints.net>
529    
530     * code/unix-bindings/wrap.c (mcvs_spawn): One more waitpid() bug!
531     The SIGCHLD signal handler was being set in the child process only,
532     so although we fixed the waitpid() behavior in the CVS child
533     process, we did not fix it in the Meta-CVS process. The ECHILD
534     problem was sporadically reproduced by Johannes Grødem on a fast
535     Athlon machine; it requires CVS to exit before Meta-CVS reaches
536     the waitpid() call.
537    
538 kaz 1.251 2003-02-24 Kaz Kylheku <kaz@ashi.footprints.net>
539    
540     * code/options.lisp (format-opt): Some one-argument options of
541     CVS must appear as one command parameter, with no separation
542     between the option letter and the argument characters.
543     For example, ``cvs log -r foo::bar'' is invalid, it must
544     be ``cvs log -rfoo::bar''. The format-opt function now
545     formats *all* one-letter options that have one argument
546     as one string.
547    
548 kaz 1.250 2003-02-23 Kaz Kylheku <kaz@ashi.footprints.net>
549    
550     * code/mcvs-main.lisp (*usage*): Add help text for --up option.
551    
552    
553 kaz 1.249 2003-02-20 Kaz Kylheku <kaz@ashi.footprints.net>
554    
555     Fix remaining occurences of SIG_IGN action for SIGCHLD being
556     passed to child processes.
557    
558     * code/unix-bindings/unix.lisp (unix-funcs:default-sigchld): New call
559     out function.
560    
561     * code/clisp-unix.lisp (with-input-from-program,
562     with-output-to-program): Call the new default-sigchild function
563     to set SIGCHILD signal handler to SIG_DFL just before creating
564     the pipe.
565    
566     * code/unix-bindings/wrap.c (mcvs_default_sigchld): New function.
567    
568 kaz 1.248 2003-02-17 Kaz Kylheku <kaz@ashi.footprints.net>
569    
570     Fix portability mistakes.
571    
572     * code/grab.lisp (read-word-hash): Use the standard code-char
573     function instead of the int-char CLISP extension.
574    
575     * code/branch.lisp (parse-sticky, mcvs-list-branches): Use the
576     portable subseq function instead of CLISP's ext::substring.
577    
578 kaz 1.246 2003-02-12 Kaz Kylheku <kaz@ashi.footprints.net>
579    
580 kaz 1.247 New --up option added for escaping out of nested sandboxes.
581    
582     * code/mcvs-main.lisp (*cvs-options*): Added "up" 1 arg option.
583    
584     * code/options.lisp (*nesting-escape-option*): New global,
585     default value 0.
586     (filter-mcvs-options): Filter new option, parse out and validate
587     integer argument.
588    
589     * code/mapping.lisp (mcvs-locate): When searching for MCVS
590     directory, skip N matches, where N is the value of
591     *nesting-escape-option*.
592    
593     2003-02-12 Kaz Kylheku <kaz@ashi.footprints.net>
594    
595     * code/mcvs-main.lisp (*cvs-options*): Constant renamed
596     to *global-options*.
597    
598     2003-02-12 Kaz Kylheku <kaz@ashi.footprints.net>
599    
600 kaz 1.246 * code/unix-bindings/wrap.c (mcvs-spawn): In the child process,
601     reset the signal handler for SIGCHLD to SIG_DFL before exec-ing
602     the new image. This is needed because CLISP set it to SIG_IGN,
603     which causes child reaping problems in spawned programs.
604     This should fix the ``No child processes'' problem when running
605     CVS from Meta-CVS.
606    
607 kaz 1.245 2003-02-11 Kaz Kylheku <kaz@ashi.footprints.net>
608    
609     * code/memoize.lisp (remove-key-aux-rest, strip-lambda-list,
610     extract-tests, remove-tests, memoize-expander, factor-memo-labels,
611     define-memoized-function, memoized-labels): Documentation strings
612     added to this cryptic code.
613    
614 kaz 1.244 2003-02-02 Kaz Kylheku <kaz@ashi.footprints.net>
615    
616     Make tag command work on whole tree if no arguments are given,
617     just like commit.
618    
619     * code/generic.lisp (mcvs-generic): no-fix-empty-filelist keyword
620     parameter renamed to global-if-empty-file-list, which more closely
621     reveals the purpose.
622     (mcvs-commit-wrapper): Use new keyword name.
623     (mcvs-tag-wrapper): Specify T value for :global-if-empty-filelist
624     argument, so the whole project is tagged by default if no arguments
625     are given.
626    
627 kaz 1.243 2003-02-01 Kaz Kylheku <kaz@ashi.footprints.net>
628    
629     * code/unix-bindings/wrap.c (impl_spawn): Try waitpid again in a loop
630     while it returns -1, and errno is EINTR.
631     Reported by Johannes Grødem <johs@copyleft.no>.
632    
633 kaz 1.242 2003-01-30 Kaz Kylheku <kaz@ashi.footprints.net>
634    
635     * code/paths.lisp: Move some (declaim inline) to the correct
636     location, before the function to be inlined.
637    
638     * code/clisp-unix.lisp: Likewise.
639     * code/cmucl-unix.lisp: Likewise.
640     * code/mapping.lisp: Likewise.
641    
642 kaz 1.240 2003-01-25 Kaz Kylheku <kaz@ashi.footprints.net>
643    
644     * code/unix-bindings/wrap.c (mcvs_getcwd): If getcwd() returns
645     NULL, it only means that the buffer is too small if errno is also
646     set to ERANGE. This second condition was not being tested.
647 kaz 1.241 Reported by Johannes Grødem <johs@copyleft.no>.
648 kaz 1.240
649     * code/clisp-unix.lisp (getcwd-error): New condition.
650     (initialize-instance (getcwd-error)): New method.
651     (getcwd): Raise getcwd-error condition if unix-funcs::getcwd
652     returns NIL.
653    
654 kaz 1.239 2003-01-15 Kaz Kylheku <kaz@ashi.footprints.net>
655    
656     * code/unix-bindings/impl.c: File renamed to wrap.c.
657     (impl_null_pointer_p, impl_get_errno, impl_set_errno, impl_readdir,
658     impl_readlink, impl_stat, impl_lstat, impl_fstat, impl_getcwd,
659     impl_spawn): Prefix changed from ``impl_'' to ``mcvs_''.
660    
661     * code/unix-bindings/link.sh, code/unix-bindings/Makefile,
662     code/unix-bindings/unix.lisp: Updated accordingly.
663    
664 kaz 1.237 2003-01-13 Kaz Kylheku <kaz@ashi.footprints.net>
665    
666 kaz 1.238 Support -k CVS option in merge and remerge commands.
667     Reported by Jamie Wellnitz.
668    
669     * code/mcvs-main.lisp (*merge-options*, *remerge-options*): Add
670     one argument -k option.
671    
672     * code/merge.lisp (mcvs-merge): Support extra argument for passing
673     command options. Pass them down to mcvs-update.
674     (mcvs-merge-wrapper, mcvs-remerge-wrapper): Don't ignore command
675     options but pass them to mcvs-merge.
676    
677     2003-01-13 Kaz Kylheku <kaz@ashi.footprints.net>
678    
679 kaz 1.237 * code/install.sh: More fail-safe way to locate library directory;
680     works even when clisp executable is a symlink. Thanks to Sam
681     Steingold, CLISP maintainer, for tip.
682    
683 kaz 1.236 2003-01-12 Kaz Kylheku <kaz@ashi.footprints.net>
684    
685     Hard link sync optimization.
686    
687     * code/mapping.lisp (mapping-synchronize): New optional parameter,
688     specifies map to use instead of reading *map-local*.
689    
690     * code/mcvs-generic.lisp (mcvs-generic): Pass extra parameter to
691     mapping-synchronize to only sync the selected subset of files.
692    
693 kaz 1.235 2003-01-01 Kaz Kylheku <kaz@ashi.footprints.net>
694    
695     * code/unix-bindings/impl.c (impl_spawn): For Cygwin, re-implemented
696     this function as a wrapper for the spawnvp function. The combination
697     of fork + execvp + waitpid does not work because waitpid is broken;
698     it waits for thep rocess, but then returns -1 and sets errno
699     to ECHILD.
700    
701 kaz 1.234 2002-12-27 Kaz Kylheku <kaz@ashi.footprints.net>
702    
703     * code/options.lisp (process-cvs-options): The version number
704     now has three components.
705    
706 kaz 1.233 2002-12-13 Kaz Kylheku <kaz@ashi.footprints.net>
707    
708     * code/install.sh: Now works under CLISP installations which
709     call the CLISP executable lisp.exe rather than lisp.run.
710     This is the case under Cygwin as of CLISP 2.30 or so.
711    
712 kaz 1.232 2002-12-03 Kaz Kylheku <kaz@ashi.footprints.net>
713    
714     * code/sync.lisp (synchronize-files): Call exec-check using
715     file info object, rather than file name. This cuts in half
716     the number of calls to stat().
717    
718     2002-12-03 Kaz Kylheku <kaz@ashi.footprints.net>
719 kaz 1.231
720     Discontinuing use of CLISP's ext:run-program function in favor
721     of a new workalike which doesn't rely on the shell interpreter.
722    
723     * code/unix-bindings/unix.lisp (unix-funcs:spawn): New C call out
724     function (unix-funcs:run-program): New function, implemented using
725     spawn.
726    
727     * code/unix-bindings/impl.c (impl_spawn): New function; wraps
728     up fork, execvp and waitpid.
729    
730     * code/clisp-unix.lisp: Switch from ext:run-program to
731     unix-funcs:run-program.
732    
733 kaz 1.230 2002-11-20 Kaz Kylheku <kaz@ashi.footprints.net>
734    
735     Some security fixes. Funny I didn't think of this sooner!
736    
737     * code/types.lisp (types-read): Make sure *read-eval* is bound to
738     nil when calling READ.
739    
740     * code/mapping.lisp (mapping-read-raw-map, displaced-path-read):
741     Likewise.
742    
743    
744 kaz 1.228 2002-11-16 Kaz Kylheku <kaz@ashi.footprints.net>
745    
746 kaz 1.229 * code/unix.lisp (invoke-editor-on): Honor the CVSEDITOR and VISUAL
747 kaz 1.228 environment variables, not just EDITOR.
748    
749 kaz 1.227 2002-11-09 Kaz Kylheku <kaz@ashi.footprints.net>
750    
751     * code/link.lisp (mcvs-link): Revamped link command to behave properly
752     when the destination object is a directory. It must create the link in
753     that directory, rather than try to create a link with that name.
754     Plus handles various tricky cases. Trailing slash in destination name,
755     destination that is a directory within target directory, attempted
756     link creation in MCVS etc.
757    
758 kaz 1.226 2002-11-03 Kaz Kylheku <kaz@ashi.footprints.net>
759    
760     More support for -n option.
761    
762     * code/mcvs-main.lisp (*usage*): Document -n option.
763    
764     * code/move.lisp (mcvs-move-wrapper): Remove bogus error check
765     for presence of global options.
766    
767     * code/options.lisp (honor-dry-run): New macro for conditionally
768     not executing some forms if it's a dry run, and logging some
769     debugging information.
770    
771     * code/sync.lisp (synchronize-files): Honor dry run.
772    
773     * code/mapping.lisp (mapping-synchronize, mapping-update): Likewise.
774    
775     2002-11-03 Kaz Kylheku <kaz@ashi.footprints.net>
776    
777     Start of support for global option -n (dry run).
778    
779     * code/options.lisp (*dry-run-option*): New boolean variable.
780     (process-cvs-options): Look for -n and set *dry-run-option*.
781    
782     * code/types.lisp (types-write): Do not write file if *dry-run-option*
783     is true.
784    
785     * code/types.lisp (mapping-write): Likewise.
786    
787     * code/add.lisp (mcvs-add): When calling types-let-user-edit,
788     temporarily disable the dry run option, so that TYPES-NEW can
789     be written. When the dry run option is in effect, do not try
790     to cvs add the TYPES file.
791    
792     2002-11-03 Kaz Kylheku <kaz@ashi.footprints.net>
793    
794     * code/branch.lisp (*branch-help*): New string constant.
795    
796     * code/mcvs-main.lisp (*mcvs-command-table*): *branch-help* hooked in.
797    
798     2002-11-02 Kaz Kylheku <kaz@ashi.footprints.net>
799    
800     * code/mcvs-main (*args*, *options*): Unused variables removed.
801     (mcvs-execute): Global option processing code removed.
802    
803     * code/options.lisp (*print-usage*): New boolean variable; tells
804     mcvs-execute to print usage and terminate.
805     (filter-mcvs-options): New function. Does the job that
806     filter-global-options did.
807     (process-cvs-options): Does the global option processing that
808     was previously in mcvs-execute.
809     (filter-global-options): Now just calls filter-mcvs-options,
810     process-cvs-options.
811    
812 kaz 1.225 2002-11-02 Kaz Kylheku <kaz@ashi.footprints.net>
813    
814     * INSTALL: Include caveat about GCC 3 problems.
815    
816 kaz 1.222 2002-10-30 Kaz Kylheku <kaz@ashi.footprints.net>
817    
818 kaz 1.224 * code/prop.lisp (mcvs-prop): If there are no options specified,
819     don't do anything.
820    
821     2002-10-30 Kaz Kylheku <kaz@ashi.footprints.net>
822    
823 kaz 1.223 * code/mcvs-package.lisp: New file, defines META-CVS package.
824    
825     * code/purge.lisp: Put all symbols in new package.
826     * code/restore.lisp: Likewise.
827     * code/paths.lisp: Likewise.
828     * code/install.sh: Likewise.
829     * code/restart.lisp: Likewise.
830     * code/update.lisp: Likewise.
831     * code/move.lisp: Likewise.
832     * code/grab.lisp: Likewise.
833     * code/unix.lisp: Likewise.
834     * code/slot-refs.lisp: Likewise.
835     * code/prop.lisp: Likewise.
836     * code/multi-hash.lisp: Likewise.
837     * code/rcs-utils.lisp: Likewise.
838     * code/branch.lisp: Likewise.
839     * code/find-bind.lisp: Likewise.
840     * code/execute.lisp: Likewise.
841     * code/link.lisp: Likewise.
842     * code/split.lisp: Likewise.
843     * code/watch.lisp: Likewise.
844     * code/clisp-unix.lisp: Likewise.
845     * code/add.lisp: Likewise.
846     * code/chatter.lisp: Likewise.
847     * code/print.lisp: Likewise.
848     * code/types.lisp: Likewise.
849     * code/remove.lisp: Likewise.
850     * code/convert.lisp: Likewise.
851     * code/error.lisp: Likewise.
852     * code/options.lisp: Likewise.
853     * code/dirwalk.lisp: Likewise.
854     * code/checkout.lisp: Likewise.
855     * code/generic.lisp: Likewise.
856     * code/sync.lisp: Likewise.
857     * code/create.lisp: Likewise.
858     * code/memoize.lisp: Likewise.
859     * code/seqfuncs.lisp: Likewise.
860     * code/cmucl-unix.lisp: Likewise.
861     * code/remap.lisp: Likewise.
862    
863     * code/mapping.lisp: Put symbols in new package. Replace use
864     of CLISP specific substring function with subseq.
865     * code/filt.lisp: Likewise.
866    
867     * code/mcvs-main.lisp: Put symbols in new package. The mcvs
868     function is renamed to main.
869    
870     * code/install.sh: Generate mcvs script that uses qualified name
871     of new startup functiont to start the software.
872    
873     2002-10-30 Kaz Kylheku <kaz@ashi.footprints.net>
874    
875 kaz 1.222 * code/unix-bindings/unix.lisp: Rewrote defpackage to take only
876     selected symbols from CLISP's FFI package rather using the whole
877     thing. FFI, and the packages it uses, are moving targets.
878     The symbol def-c-call-out is interned in unix-funcs.
879     (unix-funcs:def-c-call-out): New internal macro. CLISP says that
880     ffi:def-c-call-out is obsolescent.
881    
882     * code/unix-bindings/Makefile: The ``clean'' target removes
883     unix.lib, not only unix.fas.
884    
885 kaz 1.221 2002-10-27 Kaz Kylheku <kaz@ashi.footprints.net>
886    
887     Bugfix to the directory restructuring code. A clobbering
888     file add was not actually removing the clobbered file, but leaving
889     it up to the synchronization algorithm, so the time-stamp would
890     decide whether the local file gets clobbered by the repository one,
891     or whether it wins.
892    
893     * code/mapping.lisp (mapping-update): Logic for handling added
894     file ensures that a clobbered local file is removed first.
895    
896 kaz 1.218 2002-10-26 Kaz Kylheku <kaz@ashi.footprints.net>
897    
898 kaz 1.220 New link command for creating symlinks.
899    
900     * mcvs-main.lisp (*link-options*): New option constant.
901     (*mcvs-command-table*): Entries for new command added.
902     (*usage*): Help text added.
903    
904     * link.lisp: New file.
905     (mcvs-link, mcvs-link-wrapper): New functions.
906    
907     2002-10-26 Kaz Kylheku <kaz@ashi.footprints.net>
908    
909 kaz 1.219 * code/grab.lisp (*grab-help*): Rewritten.
910    
911     * code/checkout.lisp (*export-help*): Formatted for 80 columns.
912    
913     2002-10-26 Kaz Kylheku <kaz@ashi.footprints.net>
914    
915 kaz 1.218 * code/mcvs-main.lisp (*usage*): Expand tabs to spaces.
916    
917     * code/add.lisp (*add-help*): Likewise.
918    
919     * code/remove.lisp (*remove-help*): Likewise.
920    
921     * code/create.lisp (*create-help*): Likewise.
922    
923     2002-10-26 Kaz Kylheku <kaz@ashi.footprints.net>
924    
925     * code/purge.lisp (mcvs-purge): Get rid the processing of the
926     nonexistent -n option from purge code. The global option -n does an
927     adequate job of implementing a dry run.
928    
929     2002-10-26 Kaz Kylheku <kaz@ashi.footprints.net>
930    
931     * code/mapping.lisp (mapping-removed-files): Skip over the MCVS/CVS
932     directory, which can contain CVS-generated files with F- names and a ,t
933     suffix. These trip up the algorithm.
934    
935 kaz 1.217 2002-10-21 Kaz Kylheku <kaz@ashi.footprints.net>
936    
937     Add help to move command.
938    
939     * code/mcvs-main.lisp (*mcvs-command-table*): Added *move-help*.
940    
941     * code/move.lisp (*mcvs-help*): New constant.
942    
943 kaz 1.216 2002-10-20 Kaz Kylheku <kaz@ashi.footprints.net>
944    
945     Fix broken ``filt -r''.
946    
947     * code/mapping.lisp (mapping-read-raw-map): New function; reads
948     map from stream and does sanity check.
949     (mapping-read): Argument can be a filename or stream. Call to
950     mapping-read-raw-map to factor out common code for both cases.
951    
952     * code/filt.lisp (filt-select-map): This was still just
953     reading the raw structure from the cvs coprocess, which worked under
954     the old map format, when the internal and external representations
955     were the same. Now it calls mapping-read on the stream.
956    
957     2002-10-19 Kaz Kylheku <kaz@ashi.footprints.net>
958    
959     * UPGRADE-EXISTING: New file.
960    
961     2002-10-19 Kaz Kylheku <kaz@ashi.footprints.net>
962    
963     * code/mcvs-main.lisp: Clear out *modules* list before requiring
964     modules. This is needed so that mcvs-upgrade works, because there
965     is already a populated list in the Lisp image.
966    
967 kaz 1.215 2002-10-17 Kaz Kylheku <kaz@ashi.footprints.net>
968    
969     Detect failure to start text editor.
970    
971     * code/unix.lisp (*editor*, invoke-editor-on): Change name of *editor*
972     to *mcvs-editor*, due to name-clash with a CLISP extension!
973    
974     * code/mcvs-main.lisp (mcvs-execute): Likewise.
975    
976     * code/types.lisp (types-let-user-edit): Provide an individual
977     restart-case block around the invocation of the text editor,
978     which lets the user re-try the editor.
979    
980 kaz 1.210 2002-10-13 Kaz Kylheku <kaz@ashi.footprints.net>
981    
982 kaz 1.214 * code/install.sh: generate a script called mcvs-upgrade.
983    
984     2002-10-13 Kaz Kylheku <kaz@ashi.footprints.net>
985    
986 kaz 1.213 * code/prop.lisp (mcvs-prop): Read *mcvs-map*, not *mcvs-map-local*.
987    
988     2002-10-13 Kaz Kylheku <kaz@ashi.footprints.net>
989    
990 kaz 1.212 * code/mcvs-main.lisp (*watchers-options*): New constant.
991     (*edit-options*): Likewise.
992     (*unedit-options*): Likewise.
993     (*editors-options*): Likewise.
994     (*mcvs-command-table*): Added watchers, edit unedit, and editors
995     commands.
996     (*usage*): Updated.
997    
998     * code/generic.lisp (mcvs-watchers-wrapper, mcvs-edit-wrapper,
999     mcvs-unedit-wrapper, mcvs-editors-wrapper): New functions.
1000    
1001     2002-10-13 Kaz Kylheku <kaz@ashi.footprints.net>
1002    
1003 kaz 1.211 * code/mcvs-main.lisp (*usage*): Describe export and watch commands.
1004    
1005     2002-10-13 Kaz Kylheku <kaz@ashi.footprints.net>
1006    
1007     * code/mcvs-main.lisp (*watch-options*): New constant.
1008     (*mcvs-command-table*): New entry for watch command.
1009    
1010     * code/watch.lisp: New file.
1011    
1012     2002-10-13 Kaz Kylheku <kaz@ashi.footprints.net>
1013    
1014 kaz 1.210 * code/mcvs-main.lisp (*export-options*): New constant.
1015     (*mcvs-command-table*): New entries for export command.
1016    
1017 kaz 1.211 * code/checkout.lisp (mcvs-checkout): New keyword to specify export
1018     behavior. This causes cvs export to be run instead of checkout,
1019     and the MCVS directory to be deleted after.
1020 kaz 1.210 (mcvs-checkout-wrapper): Common function factored out into a flet.
1021 kaz 1.211 (mcvs-export-wrapper): New function. Verifies that one of -D and -r
1022     options is present, then runs mcvs-checkout, specifying export
1023     behavior.
1024 kaz 1.210
1025 kaz 1.206 2002-10-12 Kaz Kylheku <kaz@ashi.footprints.net>
1026    
1027 kaz 1.209 * code/mcvs-main.lisp (*update-options*): Added -C option.
1028    
1029     * code/update.lisp (mcvs-update): Fall back on the mcvs-generic
1030     if --metaonly or --nometa is specified to run CVS on specific
1031     files.
1032    
1033     2002-10-12 Kaz Kylheku <kaz@ashi.footprints.net>
1034    
1035 kaz 1.208 * code/filt.lisp (mcvs-filt): Do not filter F- names if
1036     immediately preceded by MCVS/ prefix.
1037    
1038     2002-10-12 Kaz Kylheku <kaz@ashi.footprints.net>
1039    
1040     * code/clisp-unix.lisp (execute-program): Provide debug traces
1041     for command execution.
1042    
1043     2002-10-12 Kaz Kylheku <kaz@ashi.footprints.net>
1044    
1045 kaz 1.207 Rethink some decisions in the previous change. Reusing the
1046     name posix.lisp for a new file will cause problems for people
1047     using mcvs grab to keep up with Meta-CVS patches.
1048    
1049     * code/posix.lisp: Renamed to unix.lisp.
1050    
1051     * code/clisp-posix.lisp: Renamed back to clisp-unix.lisp, for
1052     the sake of consistency.
1053    
1054     * code/system.lisp: Updated.
1055    
1056     * code/cmucl.lisp: Likewise.
1057    
1058     Don't call a new file posix.lisp, because
1059     it can create confusion with the old file that used to be called
1060     posix.lisp,
1061    
1062     2002-10-12 Kaz Kylheku <kaz@ashi.footprints.net>
1063    
1064 kaz 1.206 Minor reorganization.
1065    
1066 kaz 1.207 * code/posix.lisp: File renamed to paths.lisp, module renamed
1067     to "paths".
1068 kaz 1.206 (*editor*): Variable removed.
1069     (arglist-to-command-string, execute-programs-xargs,
1070     invoke-editor-on): Functions removed.
1071    
1072 kaz 1.207 * code/posix.lisp: New file.
1073 kaz 1.206 (*editor*): Variable moved here from paths.lisp.
1074     (arglist-to-command-string, invoke-editor-on): Functions moved here
1075     from paths.lisp.
1076    
1077 kaz 1.207 * code/editor.lisp: New file.
1078 kaz 1.206 (*argument-limit*): Variable definition moved here.
1079     (execute-programs-xargs): Function moved here from paths.lisp.
1080    
1081 kaz 1.207 * code/clisp-unix.lisp: Renamed to clisp-posix.lisp.
1082 kaz 1.206 Requires "posix" module now.
1083     (*argument-limit*): Variable removed.
1084    
1085 kaz 1.207 * code/system.lisp: Remove references to old clisp-linux module.
1086 kaz 1.206 Added requires for new paths and execute modules.
1087    
1088 kaz 1.207 * code/cmucl-unix.lisp (*argument-limit*): Variable definition removed.
1089 kaz 1.206
1090 kaz 1.205 2002-10-09 Kaz Kylheku <kaz@ashi.footprints.net>
1091    
1092     * code/add.lisp (*add-help*): Remove spurious text cut and pasted from
1093     checkout help.
1094    
1095 kaz 1.196 2002-10-06 Kaz Kylheku <kaz@ashi.footprints.net>
1096    
1097 kaz 1.204 * code/prop.lisp (mcvs-prop): Result of real-to-abstract-path
1098     must be canonicalized.
1099    
1100     * code/remove.lisp (mcvs-remove): Likewise.
1101    
1102     * code/generic.lisp (mcvs-generic): Likewise.
1103    
1104     2002-10-06 Kaz Kylheku <kaz@ashi.footprints.net>
1105    
1106 kaz 1.203 * code/move.lisp (move-guts, mcvs-move): Canonicalize the destination
1107     path in mcvs-move, rather than mcvs-guts.
1108    
1109     2002-10-06 Kaz Kylheku <kaz@ashi.footprints.net>
1110    
1111 kaz 1.202 * code/create.lisp (mcvs-create): Add the DISPLACED filename
1112     to the .cvsignore file.
1113    
1114     2002-10-06 Kaz Kylheku <kaz@ashi.footprints.net>
1115    
1116 kaz 1.201 * code/posix.lisp (path-prefix-equal): Handle empty strings.
1117    
1118     2002-10-06 Kaz Kylheku <kaz@ashi.footprints.net>
1119    
1120 kaz 1.200 * code/move.lisp (move-guts): If an error occurs for each
1121     source in a multiple move, and the user skips each source,
1122     generate the error that all sources were skipped.
1123    
1124     2002-10-06 Kaz Kylheku <kaz@ashi.footprints.net>
1125    
1126 kaz 1.199 * code/move.lisp (source-check): Generate error if a move
1127     of the sandbox root is attempted.
1128    
1129     2002-10-06 Kaz Kylheku <kaz@ashi.footprints.net>
1130    
1131 kaz 1.198 * code/remap.lisp (mcvs-remap): Preserve property lists of
1132     mapping entries, and pick up changes in execute permission.
1133    
1134     * code/mapping.lisp (mapping-convert-out): If the mapping entry's
1135     executable flag is nil, then remove the :exec entry from the property
1136     list.
1137    
1138     2002-10-06 Kaz Kylheku <kaz@ashi.footprints.net>
1139    
1140 kaz 1.197 * code/mapping.lisp (equal-filemaps): Repair completely broken
1141     function.
1142    
1143     * code/move.lisp (mcvs-move): Added little hack for turning
1144     no-op moves into errors. Without this the behavior is confusing,
1145     since the program appears to do nothing.
1146    
1147     2002-10-06 Kaz Kylheku <kaz@ashi.footprints.net>
1148    
1149 kaz 1.196 * code/add.lisp (mcvs-add): Provide a continue restart around
1150     the code that builds up the expanded-paths for each iteration of the
1151     loop. Without this, errors in that code cause the program to bail, even
1152     though errors in the rest of the loop body are continuable.
1153    
1154 kaz 1.189 2002-10-05 Kaz Kylheku <kaz@ashi.footprints.net>
1155    
1156 kaz 1.195 * code/dirwalk.lisp (dirwalk): If the argument is not a directory,
1157     the callback must still be invoked. This was done prior to
1158     a 2002-05-20 commit. I can't quite remember why it was changed;
1159     but I seem to recall thinking about the new dirwalk-skip catch,
1160     and how it must be always visible to the callback closure, so
1161     that the (skip) mechanism works.
1162    
1163     2002-10-05 Kaz Kylheku <kaz@ashi.footprints.net>
1164    
1165 kaz 1.194 * code/add.lisp (mcvs-add): Reshuffle restart to a higher nesting
1166     level, so that an error on one item won't abort the whole operation.
1167    
1168     2002-10-05 Kaz Kylheku <kaz@ashi.footprints.net>
1169    
1170 kaz 1.193 * code/convert.lisp (mcvs-convert): Maintenance so that this tool
1171     at least runs, even though it doesn't do anything resembling a
1172     reasonable conversion job.
1173    
1174     2002-10-05 Kaz Kylheku <kaz@ashi.footprints.net>
1175    
1176 kaz 1.192 * code/clisp-unix.lisp (guid-gen): Changes for Cygwin broke the
1177     case when /dev/urandom is available.
1178    
1179     2002-10-05 Kaz Kylheku <kaz@ashi.footprints.net>
1180    
1181 kaz 1.191 * code/find-bind.lisp (find-bind): Allow empty variable list, as
1182     described by the documented syntax.
1183    
1184     2002-10-05 Kaz Kylheku <kaz@ashi.footprints.net>
1185    
1186 kaz 1.190 * code/error.lisp (mcvs-error-handler): Simplify roundabout way
1187     of printing error message.
1188    
1189     * code/mapping.lisp (mapping-write): Incorporate the low level error
1190     message into the more informative error message.
1191    
1192     2002-10-05 Kaz Kylheku <kaz@ashi.footprints.net>
1193    
1194 kaz 1.189 Error messages no longer specify prefixes like "mcvs:" or
1195     "mcvs-remove:".
1196    
1197     When no restarts are available, the error handler now adds the "mcvs:"
1198     prefix when dumping the error text to the standard error stream,
1199     and also adds a terminating newline.
1200    
1201     The inability to write to the MAP file is converted to a more
1202     informative error message.
1203    
1204     New --debug option is supported to set the chatter level to 3.
1205    
1206     * code/chatter.lisp: Use the symbolic constant when defining the
1207     default chatter level value.
1208    
1209     * code/mcvs-main.lisp (*cvs-options*, mcvs-help, mcvs-execute): Added
1210     support for --debug option, and removed of prefixes from error
1211     messages.
1212    
1213     * code/options.lisp (filter-global-options): Support --debug.
1214     (parse-opt): Removed prefixes from error messages.
1215    
1216     * code/mapping.lisp (mapping-rename-files, mapping-dupe-check,
1217     mapping-convert-in, mapping-synchronize, mapping-update): Removed
1218     prefixes from error messages.
1219     (mapping-write): Trap write error and convert to more informative
1220     error message.
1221    
1222     * code/error.lisp (mcvs-error-handler): In the case when no restarts
1223     are available, format the error message by adding the mcvs: prefix
1224     and a terminating newline.
1225    
1226     * code/purge.lisp (mcvs-purge): Removed prefixes from error messages.
1227    
1228     * code/restore.lisp (mcvs-restore): Likewise.
1229    
1230     * code/move.lisp (move-guts, mcvs-move): Likewise.
1231    
1232     * code/grab.lisp (mcvs-grab): Likewise.
1233    
1234     * code/prop.lisp (mcvs-prop): Likewise.
1235    
1236     * code/filt.lisp (filt-select-map, mcvs-filt): Likewise.
1237    
1238     * code/branch.lisp (where-is-the-repository, mcvs-branch,
1239     cvs-make-or-advance-tag, mcvs-merge, mcvs-list-branches,
1240     mcvs-switch-wrapper): Likewise.
1241    
1242     * code/add.lisp (mcvs-add, mcvs-add): Likewise.
1243    
1244     * code/remove.lisp (mcvs-remove): Likewise.
1245    
1246     * code/convert.lisp (classify-tags, mcvs-convert): Likewise.
1247    
1248     * code/checkout.lisp (mcvs-checkout): Likewise.
1249    
1250     * code/generic.lisp (mcvs-generic, mcvs-diff-wrapper): Likewise.
1251    
1252     * code/create.lisp (mcvs-create, mcvs-create): Likewise.
1253    
1254     * code/remap.lisp (mcvs-remap, mcvs-remap): Likewise.
1255    
1256 kaz 1.188 2002-09-25 Kaz Kylheku <kaz@ashi.footprints.net>
1257    
1258     Minimal changes for building on Cygwin.
1259    
1260     * code/install.sh (space_check, dash_check): Function definitions
1261     modified to conform to bash2.
1262    
1263     * code/clisp-unix.lisp (*have-dev-random*, *mcvs-random-state*):
1264     New special variables.
1265     (guid-gen): Rewritten to fall back on the Common Lisp random
1266     function if /dev/urandom is not available.
1267    
1268 kaz 1.180 2002-09-21 Kaz Kylheku <kaz@ashi.footprints.net>
1269    
1270 kaz 1.187 * code/mcvs-main.lisp (*options*): New variable. Gives
1271     scripts access to to some global options. The *args* variable now
1272     holds only the remaining arguments after the options.
1273     (mcvs-execute): Sets up *args* and *options* accordingly.
1274     No longer parses out the --error-continue and --error-terminate
1275     options.
1276    
1277     * code/options.lisp (filter-global-options): The handling of
1278     --error-continue and --error-terminate is done here. This is
1279     the place to handle options that must be removed (not passed
1280     down to CVS) and which do not trigger immediate actions in
1281     mcvs-execute.
1282    
1283     2002-09-21 Kaz Kylheku <kaz@ashi.footprints.net>
1284    
1285 kaz 1.186 * code/mcvs-main.lisp (*args*): New global variable. Gives
1286 kaz 1.185 scripts access to command line.
1287    
1288     2002-09-21 Kaz Kylheku <kaz@ashi.footprints.net>
1289    
1290 kaz 1.184 * code/mcvs-main.lisp (*cvs-options*): Add -i parameter which
1291     takes the name of a script to invoke.
1292     (*usage*): Updated to describe new option.
1293     (mcvs-execute): Parse out -i option and load the specified file.
1294    
1295     2002-09-21 Kaz Kylheku <kaz@ashi.footprints.net>
1296    
1297 kaz 1.183 * code/install.sh: Don't specify -K full option when running
1298     specific, generated CLISP image already. When generating mcvs.mem,
1299     load the compiled version mcvs-main, rather than mcvs-main.lisp.
1300    
1301     2002-09-21 Kaz Kylheku <kaz@ashi.footprints.net>
1302    
1303 kaz 1.182 * code/install.sh: Check that the installation target path won't
1304     look like a command line option to shell commands.
1305    
1306     2002-09-21 Kaz Kylheku <kaz@ashi.footprints.net>
1307    
1308 kaz 1.181 * code/mcvs-main.lisp (*mcvs-command-table*): Added help for remove.
1309    
1310     * code/remove.lisp (*remove-help*): New string constant.
1311    
1312     2002-09-21 Kaz Kylheku <kaz@ashi.footprints.net>
1313    
1314 kaz 1.180 * code/grab.lisp (mcvs-grab): Inspect the execute permissions
1315     of stable and moved files, and update the :EXEC propery of
1316     their mapping entries accordingly. In other words, grab changes
1317     in execute permissions properly.
1318    
1319 kaz 1.179 2002-09-18 Kaz Kylheku <kaz@ashi.footprints.net>
1320    
1321     * code/restore.lisp (mcvs-restore): Was still generating old-style
1322     mapping entries.
1323    
1324     * code/clisp-unix.lisp (executable-p (string)): New method for
1325     executable-p generic function that takes a filename.
1326    
1327 kaz 1.177 2002-09-17 Kaz Kylheku <kaz@ashi.footprints.net>
1328    
1329 kaz 1.178 * code/install.sh: Check that the installation target path
1330     does not contain any spaces. It cannot, because it is used
1331     in the #! line of an interpreter script. As a consequence of
1332     this check, whitespace precautions in the expansion of $TARGET,
1333     $TARGET_LIB and $TARGET_BIN have been removed.
1334    
1335     2002-09-17 Kaz Kylheku <kaz@ashi.footprints.net>
1336    
1337 kaz 1.177 * code/checkout.lisp (mcvs-checkout): If a subdirectory path
1338     is specified, verify that it is relative, and that it points
1339     within the module.
1340    
1341 kaz 1.175 2002-09-16 Kaz Kylheku <kaz@ashi.footprints.net>
1342    
1343 kaz 1.176 * code/mcvs-main.lisp (*checkout-options*): Removed -A and -N
1344     options.
1345     (*mcvs-command-table*): Added help for checkout and add.
1346    
1347     * code/checkout.lisp (*checkout-help*): New string constant.
1348    
1349     * code/add.help (*add-help*): Likewise.
1350    
1351     * code/create.lisp (*create-help*): Mention interactive file
1352     type specification.
1353    
1354     2002-09-16 Kaz Kylheku <kaz@ashi.footprints.net>
1355    
1356 kaz 1.175 * code/mcvs-main.lisp (*mcvs-command-table*): Add *grab-help*.
1357    
1358     * code/grab.lisp (*grab-help*): New string constant.
1359    
1360 kaz 1.172 2002-09-11 Kaz Kylheku <kaz@ashi.footprints.net>
1361    
1362 kaz 1.174 * code/clisp-linux.lisp: File removed.
1363    
1364     2002-09-11 Kaz Kylheku <kaz@ashi.footprints.net>
1365    
1366 kaz 1.173 Implement help text for create command.
1367    
1368     * code/mcvs-main.lisp (mcvs-help): Fixes.
1369     (*mcvs-command-table*): Add *create-help*.
1370    
1371     * code/create.lisp (*create-help*): New string constant.
1372    
1373     2002-09-11 Kaz Kylheku <kaz@ashi.footprints.net>
1374    
1375 kaz 1.172 Revamping help system to support more detailed help
1376     for individual commands.
1377    
1378     * code/mcvs-main.lisp (mcvs-help): New function.
1379     (*help-options*): New constant.
1380     (*mcvs-command-table*): New entry in each sublist element;
1381     this is either nil, or a string containing help text.
1382     (mcvs-execute): Update to use new table structure.
1383    
1384 kaz 1.171 2002-09-10 Kaz Kylheku <kaz@ashi.footprints.net>
1385    
1386     * code/filt.lisp (mcvs-filt): Bugfix: was trying to
1387     use NIL as if it were a mapping-entry struct after an unsuccessful
1388     gethash.
1389    
1390     2002-09-10 Kaz Kylheku <kaz@ashi.footprints.net>
1391    
1392     Fix installation braindamage. The problem is that
1393     the linkkit material is architecture specific; it was
1394     wrong to copy that from CLISP.
1395    
1396     * code/install.sh (CLISP_PATH, CLISP_ROOT, CLISP_LIB): New
1397     variables, dynamically computed from clisp's location.
1398     The script now runs the clisp-link under $CLISP_LIB rather
1399     than using a replica, and uses $CLISP_LIB/linkkit rather
1400     than a replica linkkit.
1401     (CLISP): Variable renamed to LISPRUN.
1402    
1403     * code/clisp-link: File removed.
1404     * code/linkkit/modules.d: Likewise.
1405     * code/linkkit/modules.c: Likewise.
1406     * code/linkkit/clisp.h: Likewise.
1407    
1408 kaz 1.168 2002-09-08 Kaz Kylheku <kaz@ashi.footprints.net>
1409    
1410 kaz 1.170 Fix mistake dating back to April.
1411    
1412     * code/branch.lisp (mcvs-merge): Symbol T was being invoked
1413     as function in the case that merge is invoked on a sandbox
1414     that is sticky to a non-branch tag.
1415    
1416     2002-09-08 Kaz Kylheku <kaz@ashi.footprints.net>
1417    
1418 kaz 1.169 Another stupid error.
1419    
1420     * code/create.lisp (mcvs-create): Fix use to unbound
1421     variable file-info which should be fi.
1422    
1423     2002-09-08 Kaz Kylheku <kaz@ashi.footprints.net>
1424    
1425 kaz 1.168 Fix stupid error.
1426    
1427     * code/mcvs-main.lisp (*move-options*): New constant.
1428     (*mcvs-command-table*): Fix broken entry for "move" and "mv".
1429    
1430 kaz 1.167 2002-09-07 Kaz Kylheku <kaz@ashi.footprints.net>
1431    
1432     Eliminate inappropriate pluralization in messages.
1433    
1434     * code/grab.lisp (mcvs-grab): Use ~:p to substitute a 's'
1435     if the parameter is other than 1.
1436    
1437     * code/options.lisp (parse-opt): Likewise.
1438    
1439 kaz 1.165 2002-09-06 Kaz Kylheku <kaz@ashi.footprints.net>
1440    
1441 kaz 1.166 * code/prop.lisp (mcvs-prop): Support --value option to
1442     associate an arbitrary value with a property indicator.
1443    
1444     * code/mcvs-main.lisp (*usage*): Describe --value and
1445     clarify syntax.
1446    
1447     2002-09-06 Kaz Kylheku <kaz@ashi.footprints.net>
1448    
1449 kaz 1.165 Unify command option parsing, and enable it to handle options with
1450     any number of required parameters.
1451    
1452     * code/options.lisp (parse-opt): Function rewritten. Argument
1453     syntax and semantics have changed. Options are specified
1454     as an association list whose member are string-integer
1455     pairs. The string is the option name, the integer specifies
1456     the number of required parameters.
1457     (option-spec-expand): New function.
1458     (option-spec): New macro.
1459     (define-option-constant): New macro.
1460    
1461     * code/mcvs-main.lisp (*cvs-options-arg*): Constant removed.
1462     (*cvs-options*, *create-options*, *grab-options*, *checkout-options*,
1463     *add-options*, *remove-options*, *update-options*,
1464     *switch-options*, *commit-options*, *diff-options*, *tag-options*,
1465     *log-options*, *status-options*, *annotate-options, *filt-options*,
1466     *convert-options*, *branch-options*, *merge-options*,
1467     *remerge-options*, *list-branches-options*, *remap-options*,
1468     *purge-options*, *restore-options*, *prop-options*): Constant
1469     definitions refactored using define-option-constant macro.
1470     (*mcvs-command-table*): Use , rather than ,@ to insert
1471     option specs.
1472     (*usage*): Suggest cleaner syntax for prop options.
1473     (mcvs-execute): Switch to new parse-opt.
1474    
1475 kaz 1.162 2002-09-05 Kaz Kylheku <kaz@ashi.footprints.net>
1476    
1477 kaz 1.164 New prop command for manipulating property lists.
1478    
1479     * code/mcvs-main.lisp (*prop-options*): New constant.
1480     (*mcvs-command-table*): New entry.
1481     (*usage*): Update.
1482    
1483     * code/mapping.lisp (mapping-entry-parse-plist): Just unconditionally
1484     set execute slot based on :exec property.
1485    
1486     * code/prop.lisp: New file.
1487    
1488     2002-09-05 Kaz Kylheku <kaz@ashi.footprints.net>
1489    
1490 kaz 1.163 Be transparent with respect to mapping entry property lists:
1491     preserve unrecognized indicators and values.
1492    
1493     * code/mapping.lisp (mapping-entry): New slot, raw-plist,
1494     records raw property list from external mapping representation.
1495     (mapping-entry-parse-attributes): Renamed to mapping-entry-parse-plist.
1496     Argument dropped; parses raw-plist slot instead.
1497     (mapping-convert-in): Set raw-plist slot to value of fourth list
1498     element of :FILE entry, or fifth list element of :SYMLINK entry.
1499     (mapping-convert-out): Unify any slot values that are represented as
1500     properties into raw-plist, and insert any non-empty plists into
1501     external representation.
1502    
1503     2002-09-05 Kaz Kylheku <kaz@ashi.footprints.net>
1504    
1505 kaz 1.162 Low level support for versioning executable bit.
1506    
1507     * code/unix-bindings/unix.lisp (unix-funcs:chmod): New callout
1508     function.
1509    
1510     * code/clisp-unix.lisp (executable-p, make-executable,
1511     make-non-executable): New generic functions.
1512     (executable-p (file-info), make-executable (file-info),
1513     make-executable (string), make-non-executable (file-info),
1514     make-non-executable (string)): New methods.
1515    
1516     * code/add.lisp (mcvs-add): Record whether new file is
1517     executable or not, by setting executable slot in mapping-entry.
1518    
1519     * code/create.lisp (mcvs-create): Likewise.
1520    
1521     * code/sync.lisp (synchronize-files): New parameter,
1522     should-be-executable, tells function which way to set
1523     permissions after synchronizing files.
1524    
1525     * code/mapping.lisp (mapping-entry): New slot, executable.
1526     (mapping-entry-parse-attributes): New function, parses
1527     new optional property list from :FILE entries in a mapping.
1528     (mapping-convert-in): Parse property list that may be present in fourth
1529     list element of a :FILE entry.
1530     (mapping-convert-out): Write out executable flag as
1531     :EXEC property, if true.
1532     (mapping-synchronize): Pass executable flag down to synchronize-files.
1533    
1534 kaz 1.161 2002-09-02 Kaz Kylheku <kaz@ashi.footprints.net>
1535    
1536     * code/grab.lisp (determine-moved-files): Rename local
1537     variable for clarity.
1538     (determine-moved-symlinks): Actually compute what symlinks
1539     are moved. Takes one more argument, the stable-files list.
1540     (mcvs-grab): Fix small destructuring-bind bug in symlink
1541     moving code. Also, read the targets of moved symlinks into
1542     the map, like it is already done with stable symlinks.
1543    
1544 kaz 1.160 2002-09-01 Kaz Kylheku <kaz@ashi.footprints.net>
1545    
1546     * code/grab.lisp (mcvs-grab): Iterate over stable symlinks,
1547     and incorporate changed targets into the mapping. In other
1548     words, notice and incorporate retargetted symlinks.
1549    
1550 kaz 1.159 2002-08-31 Kaz Kylheku <kaz@ashi.footprints.net>
1551    
1552     Merging new symbolic link support from symlink-branch.
1553    
1554 kaz 1.160 * code/mapping.lisp (mapping-update): Resolve merge conflict.
1555 kaz 1.159 The branch fixed the 2002-08-24 bug also.
1556    
1557     2002-08-31 Kaz Kylheku <kaz@ashi.footprints.net>
1558    
1559     * code/grab.lisp (move-candidates): Function renamed to
1560     determine-moved-files.
1561     (determine-moved-symlinks): New function, doesn't do anything
1562     yet.
1563     (mcvs-grab): Updated to process symlinks and use new
1564     mapping-entry structure.
1565    
1566     2002-08-26 Kaz Kylheku <kaz@ashi.footprints.net>
1567    
1568     * code/remap.lisp (mcvs-remap): Use new mapping entry structure.
1569     For now, preserve symbolic link entries as they are, processing only
1570     files.
1571    
1572     * code/mapping.lisp (equal-mapping-entries, equal-mappings): New
1573     functions.
1574    
1575     2002-08-25 Kaz Kylheku <kaz@ashi.footprints.net>
1576    
1577     * code/clisp-unix.lisp (initialize-instance link-error): Make
1578     error message less confusing about which path refers to the
1579     object being created, and which path refers to what it links to.
1580    
1581     * code/mapping.lisp (mapping-rename-files): Bugfix: destructuring-bind
1582     appeared in place of with-slots.
1583     (mapping-synchronize): When creating symbolic link, ensure that
1584     its directory exists.
1585     (mapping-update): Likewise.
1586    
1587     2002-08-25 Kaz Kylheku <kaz@ashi.footprints.net>
1588    
1589     * code/add.lisp (mcvs-add): Change to new mapping-entry data structure
1590     and handle symbolic links.
1591    
1592     * code/create.lisp (mcvs-create): Likewise.
1593    
1594     * code/filt.lisp (make-filt-hash, mcvs-filt): Change to new
1595     mapping-entry data structure. Filt does not care about symlinks.
1596    
1597     * code/types.lisp (types-remove-ignores, types-make-cvs-adds):
1598     Change to new mapping-entry data structure.
1599    
1600     * code/mapping.lisp (mapping-generate-name): Renamed to
1601     mapping-generate-id. Interface changes slightly.
1602     (mapping-extract-kind): New function, factored out from mcvs-generic.
1603     (mapping-update): Unlink existing symbolic link before
1604     re-linking it.
1605    
1606     * code/convert.lisp (mcvs-convert): Use new name and interface
1607     of mapping-generate-name function.
1608    
1609     * code/create.lisp (mcvs-create): Likewise.
1610    
1611     * code/generic.lisp (mcvs-generic): Code to extract :file
1612     entries from map factored out to mapping-extract-kind.
1613    
1614    
1615     2002-08-25 Kaz Kylheku <kaz@ashi.footprints.net>
1616    
1617     * code/generic.lisp (mcvs-generic): Use new mapping-entry data structure.
1618     Filter out mapping entries which are other than of the :file type, so
1619     we don't pass to CVS things it doesn't know about, like symbolic
1620     links.
1621    
1622     2002-08-24 Kaz Kylheku <kaz@ashi.footprints.net>
1623    
1624     Support for symbolic links added to the mapping module. The format of
1625     the map file has changed to accomodate this. The new format of the
1626     list entries is (:keyword "id" "path" ...) where the keyword is either
1627     :file or :symlink (for now, extensible obviously), "id" is a unique
1628     identifier (for regular files, it is their MCVS/F-* name) and "path" is
1629     the sandbox path. Other things can follow; for symlinks, there is a
1630     string representing the symlink target. Internally, a new data type
1631     called mapping-entry is used; this is a struct. So the functions which
1632     read and write maps now convert between the struct format and the above
1633     format.
1634    
1635     * code/unix-bindings/unix.lisp (unix-funcs:readlink): New function.
1636    
1637     * code/unix-bindings/impl.c (impl_readlink): New function.
1638    
1639     * code/clisp-unix.lisp (readlink-error): New condition.
1640     (initialize-instance readlink-error): New method for
1641     initialize-instance generic function, specialized for readlink-error.
1642     (readlink): New function.
1643    
1644     * code/mapping.lisp (mapping-entry): New struct, with slots
1645     file, id, path and target.
1646     (mapping-same-object-p): Renamed to mapping-same-id-p.
1647     (mapping-object-lookup, mapping-moved-p): Unused functions removed.
1648     (mapping-extract-paths, mapping-lookup, mapping-prefix-lookup,
1649     mapping-prefix-matches, mapping-same-path-p, mapping-rename-files,
1650     mapping-removed-files): Functions updated to use the new data
1651     structure.
1652     (mapping-dupe-checks): Rewritten for new data structure, and to
1653     use hashes rather than silly sorting.
1654     (mapping-convert-old-style-in, mapping-convert-in,
1655     mapping-convert-out): New functions.
1656     (mapping-read): Handle new and old style representations,
1657     handle conversion to internal representation.
1658     (mapping-write): Convert to new-style external representation
1659     before writing out.
1660     (mapping-synchronize): Handle symbolic links. If a link is missing,
1661     create it. If it's present but different from what it should be,
1662     erase it and re-create it.
1663     (mapping-update): Use new data structure. Handle symbolic links.
1664    
1665     * code/remove.lisp (mcvs-remove): Refer to new function
1666     name, mapping-same-id-p.
1667    
1668 kaz 1.158 2002-08-24 Kaz Kylheku <kaz@ashi.footprints.net>
1669    
1670     * mapping.lisp (mapping-update): Bugfix
1671     in logic which prints clobbering moves. The functions
1672     abstract-to-real-path and second were applied in the wrong order.
1673    
1674 kaz 1.159 2002-08-23 Kaz Kylheku <kaz@ashi.footprints.net>
1675    
1676     * code/clisp-unix.lisp (link-error): New slot, kind. Holds
1677     the string "symbolic" or "hard".
1678     (initialize-instance link-error): Use new slot in constructing
1679     message.
1680     (link): Specify "hard" value for :kind slot of condition.
1681     (symlink): New function.
1682    
1683     * code/clisp-linux.lisp: Likewise.
1684    
1685 kaz 1.156 2002-08-17 Kaz Kylheku <kaz@ashi.footprints.net>
1686    
1687 kaz 1.159 * code/posix.lisp (execute-program): Function removed.
1688     * code/clisp-linux.lisp (execute-program): Function added. Works
1689 kaz 1.157 in terms of CLISP's run-program function rather than the shell
1690     function, thus eliminating the need to build a command string
1691     and escape shell characters.
1692     * clisp-unix.lisp (excecute-program): Likewise.
1693    
1694     2002-08-17 Kaz Kylheku <kaz@ashi.footprints.net>
1695    
1696 kaz 1.159 * code/posix.lisp (edit-file): Function renamed to invoke-file-on,
1697 kaz 1.156 because this name clashes with a standard Common Lisp symbol.
1698 kaz 1.159 * code/types.lisp (types-let-user-edit): Updated to use new name.
1699 kaz 1.156
1700 kaz 1.155 2002-08-05 Kaz Kylheku <kaz@ashi.footprints.net>
1701    
1702     Use getcwd to to implement mcvs-locate.
1703    
1704     * code/unix-bindings/unix.lisp (getcwd): New call out,
1705     invokes impl_getcwd.
1706    
1707     * code/unix-bindings/impl.c (impl_getcwd): New function,
1708     use getcwd() to obtain current working directory, resizing dynamic
1709     buffer if necessary to get the entire path.
1710    
1711     * code/clisp-unix.lisp (getcwd): New wrapper function.
1712    
1713     * code/dirwalk.lisp (go-up): Function removed.
1714    
1715     * code/mapping.lisp (mcvs-locate): Rewritten to obtain
1716     path using getcwd, then try looking for MCVS directory
1717     in successively shorter prefixes of that path.
1718    
1719 kaz 1.152 2002-08-04 Kaz Kylheku <kaz@ashi.footprints.net>
1720    
1721 kaz 1.154 Working back support for CLISP 2.27.
1722    
1723     * code/install.sh: Bogus *null-pointer* hack is no longer added
1724     to the generated mcvs script, since we have our own FFI functions for
1725     doing the test.
1726    
1727     * code/unix-bindings/unix.lisp (unix-funcs:null-pointer-p): New
1728     function, tests a C pointer for null, returns T or NIL.
1729     * code/unix-bindings/impl.c (impl_null_pointer_p): New function,
1730     C implementation of unix-funcs:null-pointer-p.
1731    
1732     * code/clisp-unix.lisp (pointer-null): New macro, uses
1733     ffi:foreign-address-null under CLISP 2.28 or greater, or
1734     unix-funcs:null-pointer-p, under an older CLISP.
1735    
1736     2002-08-04 Kaz Kylheku <kaz@ashi.footprints.net>
1737    
1738 kaz 1.153 Fixes to get clean build from fresh checkout.
1739    
1740     * code/unix-bindings/link.sh: Remove test for presence of unix.c;
1741     this was causing the failure to add the unix module to the module
1742     list, which caused it to generate an empty modules.h file under
1743     code/unix-bindings-linking-set, resulting in a bad build of lisp.run.
1744    
1745     * code/unix-bindings/Makefile: Add ``clean'' target, so we
1746     can do a make clean here.
1747    
1748     2002-08-04 Kaz Kylheku <kaz@ashi.footprints.net>
1749    
1750 kaz 1.152 Retargetting CVS with new system call bindings that are not GNU/Linux
1751     specific.
1752    
1753     * code/install.sh: The way Meta-CVS is installed changes now.
1754     The argument is now a prefix above a bin and lib directory.
1755     Invokes clisp-link to build a new CLISP linking set in the
1756     directory code/unix-bindings-linking-set. The lisp executable
1757     (lisp.run) is copied to $TARGET/lib/clisp/meta-cvs/ and the Meta-CVS
1758     memory image is also copied there under the name lispinit.mem.
1759     The mcvs script is then generated in $TARGET/bin, correctly referring
1760     to these images.
1761    
1762     * code/system.lisp: Choose the new clisp-unix module, if running
1763     under a CLISP image which has the new bindings loaded. Otherwise fall
1764     back on the old clisp-linux, which uses the linuxlibc6 module.
1765    
1766     * code/clisp-unix.lisp: New file, closely based on clisp-linux.lisp,
1767     but targetting new bindings in the unix-funcs package.
1768    
1769     * code/clisp-link: New file. Script borrowed from CLISP distribution,
1770     needed for building CLISP executables with custom modules added.
1771    
1772     * code/linkkit: New directory. This is needed by by clisp-link.
1773     * code/linkkit/modules.c: Borrowed file from CLISP, needed
1774     by clisp-link.
1775     * code/linkkit/clisp.h: Likewise.
1776     * code/linkkit/modules.d: Likewise.
1777    
1778     * code/unix-bindings: New directory. This is a module kit used
1779     by clisp-link to extend the Lisp executable and memory image
1780     with new C functions.
1781    
1782     * code/unix-bindings/link.sh: Definitions of variables needed
1783     by clisp-link.
1784    
1785     * code/unix-bindings/unix.lisp: The glue module which defines the Lisp
1786     interface to the external C functions. Most of the functions call
1787     directly into the system's C library, but a few call to wrapper
1788     functions. Compiling unix.lisp produces a unix.c file which is
1789     compiled and linked into the CLISP executable, and a unix.fas which
1790     contains the Lisp interface bits that are loaded as part of the Lisp
1791     image.
1792    
1793     * code/unix-bindings/Makefile: Rules for compiling the module, invoked by clisp-link.
1794    
1795     * code/unix-bindings/impl.c: Some special functions that help
1796     implement the binding.
1797    
1798 kaz 1.149 2002-07-31 Kaz Kylheku <kaz@ashi.footprints.net>
1799    
1800 kaz 1.150 More changes to syntax of grab command. Now -A must be
1801     specified to do a grab onto main trunk.
1802    
1803     * code/mcvs-main.lisp (*grab-options*): -A option added.
1804    
1805     * code/grab.lisp (mcvs-grab): Test for presence of -A
1806     option. Check that either -A or -r is present, but not both.
1807    
1808     2002-07-31 Kaz Kylheku <kaz@ashi.footprints.net>
1809    
1810 kaz 1.149 Syntax of grab command changed. The branch is no longer
1811     specified as an argument after the module name. Rather,
1812     it is specified using the -r option.
1813    
1814     * code/mcvs-main.lisp (*grab-options*): -r added to list.
1815    
1816     * code/grab.lisp (mcvs-grab, mcvs-grab-wrapper): Argument
1817     syntax change, support -r option.
1818 kaz 1.152
1819     * INSTALL: Instructions change, since building the GNU/Linux libc
1820     into CLISP is no longer required.
1821 kaz 1.149
1822 kaz 1.147 2002-07-27 Kaz Kylheku <kaz@ashi.footprints.net>
1823    
1824 kaz 1.148 * docs/meta-cvs.latex: Rewrote most of Introduction.
1825    
1826     2002-07-27 Kaz Kylheku <kaz@ashi.footprints.net>
1827    
1828 kaz 1.147 New scripts for building LaTeX document. These do the right thing
1829     to minimize the number of times latex is run. Make proved useless.
1830    
1831     * docs/generate.sh: New file.
1832     * docs/cleanup.sh: New file.
1833    
1834 kaz 1.146 2002-07-20 Kaz Kylheku <kaz@ashi.footprints.net>
1835    
1836     * INSTALL: Revising CLISP installation instructions to the
1837     easier method using --build.
1838    
1839 kaz 1.145 2002-07-18 Kaz Kylheku <kaz@ashi.footprints.net>
1840    
1841     * README: Renaming file to QUICK-GUIDE.
1842    
1843     2002-07-17 Kaz Kylheku <kaz@ashi.footprints.net>
1844 kaz 1.142
1845 kaz 1.144 * code/generic.lisp (mcvs-generic): Support new keyword,
1846     :no-fix-empty-file-list. Specifies that if no files are passed,
1847     and the --metaonly option is not present, the CVS command is to be
1848     executed without any file arguments.
1849     (mcvs-commit-wrapper): Specify :no-fix-empty-file-list t when
1850     calling mcvs-generic. Thus commit now has the behavior that
1851     when it is passed no file arguments, it does a true global commit.
1852    
1853     2002-07-16 Kaz Kylheku <kaz@ashi.footprints.net>
1854    
1855 kaz 1.143 * code/restore.lisp (mcvs-restore): Work properly with
1856     partial sandboxes; that is, move things to lost+found
1857     directory at the top of the partial sandbox, rather than
1858     the abstract root.
1859    
1860     2002-07-16 Kaz Kylheku <kaz@ashi.footprints.net>
1861    
1862 kaz 1.142 * code/mcvs-main.lisp (usage): Updated to describe restore
1863     command.
1864    
1865 kaz 1.139 2002-07-14 Kaz Kylheku <kaz@ashi.footprints.net>
1866    
1867 kaz 1.141 * code/grab.lisp (mcvs-grab): If there are only added files
1868     or only removed files, don't bother scanning any files,
1869     since there are no moves to compute.
1870    
1871     2002-07-14 Kaz Kylheku <kaz@ashi.footprints.net>
1872    
1873 kaz 1.140 * code/find-bind.lisp (vector-bind): New macro, binds symbols
1874 kaz 1.139 to elements of a vector.
1875     (find-bind-extract-vals): Rewrite using vectors. Fixes
1876     a bug: the old version was not handling duplicate keys
1877     properly.
1878     (find-bind): Integrate with new find-bind-extract-vals.
1879    
1880 kaz 1.138 2002-07-11 Kaz Kylheku <kaz@ashi.footprints.net>
1881    
1882     Directory structure rearrangement; source files are moved
1883     under code/ subdirectory. A documentation directory is added.
1884    
1885 kaz 1.133 2002-07-07 Kaz Kylheku <kaz@ashi.footprints.net>
1886    
1887 kaz 1.137 * move.lisp (move-guts): When moving multiple sources to
1888     a target directory, provide a restart to skip a bad source.
1889    
1890     2002-07-07 Kaz Kylheku <kaz@ashi.footprints.net>
1891    
1892 kaz 1.136 * seqfuncs.lisp (intersection-difference): Support a new
1893     keyword parameter :squash-nil.
1894    
1895     * mapping.lisp (mapping-difference): Filter non-moved pairs
1896     directly in intersection-difference call using :squash-nil,
1897     eliminating the need to do a second remove-if pass.
1898    
1899     2002-07-07 Kaz Kylheku <kaz@ashi.footprints.net>
1900    
1901 kaz 1.135 * mapping.lisp (mapping-difference): Rewrite using
1902     intersection-difference.
1903    
1904     2002-07-07 Kaz Kylheku <kaz@ashi.footprints.net>
1905    
1906 kaz 1.134 * grab.lisp (added-removed): Function removed.
1907     (mcvs-grab): Use new intersection-difference function
1908     instead of added-removed.
1909    
1910     2002-07-07 Kaz Kylheku <kaz@ashi.footprints.net>
1911    
1912 kaz 1.133 * seqfuncs.lisp (intersection-difference): New function.
1913    
1914 kaz 1.131 2002-07-06 Kaz Kylheku <kaz@ashi.footprints.net>
1915    
1916 kaz 1.132 * grab.lisp (mcvs-grab): Upgraded to work with partial sandbox.
1917     Extra parameter added to specify subdirectory. File analysis
1918     is only done on visible files.
1919     (mcvs-grab-wrapper): Take optional parameter to specify
1920     subdirectory.
1921    
1922     2002-07-06 Kaz Kylheku <kaz@ashi.footprints.net>
1923    
1924     * mapping.lisp (mapping-update): If no-delete-removed is
1925     true, nevertheless print the ``* removing...'' messages
1926     to show that removal from the mapping is going on.
1927    
1928     2002-07-06 Kaz Kylheku <kaz@ashi.footprints.net>
1929    
1930     * remap.lisp (mcvs-remap): Remap only the visible sandbox,
1931     and combine resulting map with the invisible portion.
1932    
1933     2002-07-06 Kaz Kylheku <kaz@ashi.footprints.net>
1934    
1935     * remove.lisp (mcvs-remove): Added path conversions to support
1936     partial sandboxes.
1937    
1938     2002-07-06 Kaz Kylheku <kaz@ashi.footprints.net>
1939    
1940     * generic.lisp (mcvs-generic): Added path conversions to support
1941     partial sandboxes.
1942    
1943     2002-07-06 Kaz Kylheku <kaz@ashi.footprints.net>
1944    
1945     * add.lisp (mcvs-add): Added path conversions to support
1946     partial sandboxes.
1947    
1948     2002-07-06 Kaz Kylheku <kaz@ashi.footprints.net>
1949    
1950 kaz 1.131 * grab.lisp (mcvs-grab): Bugfix: determination of common words
1951     was failing on small file sets because the min function was
1952     used instead of the max to compute the threshold.
1953 kaz 1.132
1954     2002-07-05 Kaz Kylheku <kaz@ashi.footprints.net>
1955    
1956     * move.lisp (source-check): Use real source path for checking
1957     against MCVS/ area.
1958     (mcvs-move): Ditto for destination path.
1959    
1960     2002-07-05 Kaz Kylheku <kaz@ashi.footprints.net>
1961    
1962     * mapping.lisp (mapping-update): Make sure only those files
1963     are processed which are visible in the sandbox. If a file
1964     is moved out of or into visibility, this is indicated in the
1965     diagnostic output.
1966    
1967     2002-07-05 Kaz Kylheku <kaz@ashi.footprints.net>
1968    
1969     * mapping.lisp (real-path-exists): Use path-prefix-equal, because
1970     that handles all the tricky cases.
1971     (abstract-to-real-path): Handle the case when abstract path
1972     is the same as the path prefix, with or without the trailing
1973     slash.
1974    
1975     2002-07-05 Kaz Kylheku <kaz@ashi.footprints.net>
1976    
1977     Start of experimental ``partial sandbox'' work.
1978    
1979     * mapping.lisp (*mcvs-displaced-name*, *mcvs-displaced*): New
1980     constants, hold name of administrative file MCVS/DISPLACED which stores
1981     the displaced path prefix.
1982     (*displaced-path-prefix*): New special variable, holds displaced
1983     path prefix read from MCVS/DISPLACED.
1984     (*displaced-path-length*): New special variable, holds length
1985     of string stored in *displaced-path-prefix*.
1986     (real-path-exists, abstract-to-real-path, real-to-abstract-path):
1987     New functions for mapping between actual sandbox path, and
1988     the abstract sandbox path stored in the mapping.
1989     (in-sandbox-root-dir): Macro modified to read *mcvs-displaced*
1990     administrative file, and set up the new special variables.
1991     (mapping-synchronize): Only operate on files that are present
1992     in the sandbox; i.e. that have real paths corresponding to their
1993     abstract paths. Convert to the real path when calling lower
1994     level file manipulation functions.
1995     (mapping-update): Likewise, but this conversion is not complete.
1996     (displaced-path-read, displaced-path-write): New functions for
1997     reading and writing MCVS/DISPLACED.
1998    
1999     * checkout.lisp (mcvs-checkout): One extra optional parameter.
2000     Specifies the subdirectory for executing a partial checkout.
2001     (mcvs-checkout-wrapper): Parse out optional parameter.
2002    
2003     * grab.lisp (mcvs-grab): For now, when calling mcvs-checkout,
2004     specify the new parameter as nil. Eventually, grab will work
2005     over partial checkouts.
2006    
2007     * move.lisp: Upgraded to work with partial sandboxes.
2008     (source-check): Convert source parameter to real path for
2009     existence check.
2010     (move-guts): Convert destination parameter to real path before
2011     invoking (stat ...) on it.
2012     (mcvs-move): Map all path arguments to abstract paths.
2013 kaz 1.131
2014 kaz 1.130 2002-07-04 Kaz Kylheku <kaz@ashi.footprints.net>
2015    
2016     * find-bind.lisp (find-bind-extract-vals): Rewrite for
2017     efficiency. No impact on Meta-CVS, just done for the sake of improving
2018     the quality of this highly reusable code. There is specialized
2019     code now depending on whether the input sequence is a list or
2020     a vector. A single pass is made over the sequence, with multiple
2021     passes over the search values. The sequence could be large,
2022     whereas the list of search values is typically going to be small.
2023     (find-bind): Modified to reflect slight interface change
2024     in find-bind-extract-vals.
2025    
2026 kaz 1.129 2002-07-03 Kaz Kylheku <kaz@ashi.footprints.net>
2027    
2028     * mcvs-main.lisp (*usage*): Describe --meta and --metaonly options.
2029    
2030 kaz 1.127 2002-07-02 Kaz Kylheku <kaz@ashi.footprints.net>
2031    
2032 kaz 1.128 * purge.lisp (mcvs-purge): Factor out code for computing
2033     deleted files.
2034    
2035     * mapping.lisp (mapping-removed-files): New function, contains
2036     code factored from mcvs-purge.
2037    
2038     * restore.lisp: New file.
2039     (mcvs-restore, mcvs-restore-wrapper): New functions.
2040    
2041     2002-07-02 Kaz Kylheku <kaz@ashi.footprints.net>
2042    
2043 kaz 1.127 * checkout.lisp (mcvs-checkout): Don't delete the MCVS directory
2044     of an existing checkout.
2045    
2046 kaz 1.125 2002-07-01 Kaz Kylheku <kaz@ashi.footprints.net>
2047    
2048 kaz 1.126 Adding purge command.
2049    
2050     * mcvs-main.lisp (*purge-options*): New constant.
2051     (*mcvs-command-table*): New entry.
2052     (*usage*): Update.
2053    
2054     * purge.lisp: New file.
2055     (mcvs-purge, mcvs-purge-wrapper): New functions.
2056    
2057     2002-07-01 Kaz Kylheku <kaz@ashi.footprints.net>
2058    
2059 kaz 1.125 Grab no longer synchronizes to recreate deleted files immediately
2060     before blowing them away.
2061    
2062     * grab.lisp (mcvs-grab): Specify :no-sync t when calling mcvs-remove.
2063    
2064     * remove.lisp (mcvs-remove): Support new no-sync keyword. This tells
2065     mcvs-remove that the files being removed from the mapping,
2066     don't exist in the sandbox. So it's not necessary to call
2067     mapping-synchronize, and mapping-update can be told via
2068     :no-delete-removed t not to try to remove deleted files.
2069    
2070     * mapping.lisp (mapping-update): New no-delete-removed keyword
2071     parameter.
2072    
2073 kaz 1.121 2002-06-29 Kaz Kylheku <kaz@ashi.footprints.net>
2074 kaz 1.120
2075 kaz 1.123 * create.lisp (mcvs-create): Take out vendor branch parameter,
2076     use "Created-by-Meta-CVS" as the vendor tag.
2077     (mcvs-create-wrapper): Take out vendor branch parameter.
2078    
2079     2002-06-29 Kaz Kylheku <kaz@ashi.footprints.net>
2080    
2081 kaz 1.122 * generic.lisp (mcvs-tag-wrapper): This one needs to include
2082     meta files by default.
2083    
2084     2002-06-29 Kaz Kylheku <kaz@ashi.footprints.net>
2085    
2086 kaz 1.120 Moving toward sane, user-friendly handling of meta-files.
2087     Two new options are added --meta and --metaonly.
2088     All reporting commands---diff, log, annotate---default to
2089     not including the meta files. The update command remains special.
2090     It does not include meta files if given filename arguments.
2091     If invoked with no arguments, it does a global CVS up.
2092     The commit command defaults to including the meta files.
2093     The three options simply override default behavior.
2094    
2095 kaz 1.124 * options.lisp (*nometa-option*): Eliminated useless docstring.
2096 kaz 1.120 (*meta-option*): New variable.
2097     (*nometa-option*): New variable.
2098     (filter-global-options): Clean rewrite using find-bind.
2099    
2100     * generic.lisp (mcvs-generic): New keyword parameters
2101     default-include-meta-files, need-update-after. Implements new logic
2102     related to the new options. Performs (mapping-update) if
2103     need-update-after is true and metafiles were subject to cvs update.
2104     (mcvs-commit-wrapper): Calls mcvs-generic with
2105     :default-include-meta-files t.
2106    
2107     * update.lisp (mcvs-update): No longer overrides the *nometa-option*
2108     special variable. Passes :need-update-after t to mcvs-generic.
2109    
2110     * mcvs-main.lisp (*cvs-options*): New options entered into list.
2111    
2112 kaz 1.121 2002-06-28 Kaz Kylheku <kaz@ashi.footprints.net>
2113 kaz 1.114
2114 kaz 1.119 * memoize.lisp (memoize-expander): Use ordinary hash for memoizing
2115     monadic functions.
2116    
2117 kaz 1.121 2002-06-28 Kaz Kylheku <kaz@ashi.footprints.net>
2118 kaz 1.119
2119 kaz 1.117 Word comparisons are case-insensitive in mcvs grab now.
2120     Also, common words are determined and eliminated from the correlation.
2121     Common words are those that appear in at least 5 of the
2122     added or removed files, or 20% of them, whichever is greater.
2123    
2124     Noticed some unnecessary use of string-lessp on F-file names in
2125     mapping.lisp.
2126    
2127     * grab.lisp (read-word-hash): Use #'equalp test for case-insensitive
2128     string comparisons.
2129     (added-removed): Use string< instead of string-lessp for comparing
2130     paths.
2131     (determine-common-words, eliminate-common-words): New functions.
2132 kaz 1.118 (move-candidates): Acceptance threshold reduced to 30%, since
2133 kaz 1.117 elimination of common words reduces the similarity correlation.
2134     (mcvs-grab): Use string< instead of string-lessp when sorting paths.
2135     Do the common words computation.
2136    
2137     * mapping.lisp (mapping-dupe-check, mapping-write,
2138     mapping-difference): Use string< instead of string-lessp.
2139    
2140 kaz 1.121 2002-06-28 Kaz Kylheku <kaz@ashi.footprints.net>
2141 kaz 1.117
2142 kaz 1.116 * memoize.lisp (factor-memo-labels): New function, rips apart
2143     functions generated by memoize-expander, in order to factor
2144     out the multi-hash defining let blocks.
2145     (memoized-labels): Interface corrected. Also, use new function to
2146     generate a labels block that allows for mutually recursive memoized
2147     functions which preserve hash contents across arbitrarily mutually
2148     recursive calls. This is done by enclosing the functions in one big
2149     let block which binds all the hashes.
2150    
2151 kaz 1.121 2002-06-28 Kaz Kylheku <kaz@ashi.footprints.net>
2152 kaz 1.116
2153 kaz 1.115 * seqfuncs.lisp (lcs-list): Specify #'eq test for memoization
2154     parameters.
2155    
2156 kaz 1.121 2002-06-28 Kaz Kylheku <kaz@ashi.footprints.net>
2157 kaz 1.115
2158 kaz 1.114 Adding some cool code: a multi-hash datatype which implements
2159     multi-dimensional sparse arrays using a tree of hash tables,
2160     and a function memoizer which uses multi hash to index on
2161     function arguments.
2162    
2163     * multi-hash.lisp (multi-hash): New class.
2164     (initialize-instance): New method on multi-hash.
2165     (multi-hash-common-code): New macro.
2166     (get-multi-hash, set-multi-hash): New functions.
2167    
2168     * memoize.lisp (define-memoized-function,
2169     memoized-labels): New macros.
2170     (remove-key-aux-rest strip-lambda-list, extract-tests,
2171     remove-tests, memoize-expander): New functions.
2172    
2173     * seqfuncs.lisp (lcs-list): Function is now correctly
2174     memoized using define-memoized-function.
2175    
2176 kaz 1.113 2002-06-26 Kaz Kylheku <kaz@ashi.footprints.net>
2177    
2178     * grab.lisp (read-word-hash): Memory use optimizations: use smaller
2179     initial size for tokens; re-use the same token object when the
2180     hash already contains a duplicate.
2181     (correlate): Renamed to correlate-word-hashes.
2182     (correlate-paths): New function; computes a confidence-reducing
2183     factor based on the differences between two paths.
2184     (move-candidates): Use correlate-paths to lower the confidence
2185     for distant moves. This could help sort out ambiguities when
2186     projects contain very similar or duplicate files which are subject
2187     to parallel moves.
2188    
2189     * seqfuncs.lisp (lcs-list, lcs-vector,
2190     longest-common-subsequence): New functions.
2191    
2192 kaz 1.112 2002-06-25 Kaz Kylheku <kaz@ashi.footprints.net>
2193    
2194     New feature: grab command. Takes snapshot of code and imports
2195     it to a branch, trying to determine which of the added and
2196     removed files are actually moves.
2197    
2198     * grab.lisp: New file.
2199     (read-word-hash, word-hash-file, correlate, added-removed,
2200     move-candidates, mcvs-grab, mcvs-grab-wrapper): New functions.
2201    
2202     * mcvs-main.lisp (*grab-options*): New constant.
2203     (*mcvs-command-table*): New entry.
2204     (*usage*): New text.
2205    
2206     * checkout.lisp (mcvs-checkout): Write out MAP-LOCAL even
2207     if :no-generate t is specified.
2208    
2209 kaz 1.110 2002-06-24 Kaz Kylheku <kaz@ashi.footprints.net>
2210    
2211 kaz 1.111 * checkout.lisp (mcvs-checkout): New key parameter, no-generate.
2212     Tells the checkout function not to unpack the MCVS directory.
2213     This will be useful when mcvs-checkout is used as a subfunction
2214     of the new grab command. Failed CVS call is now turned into
2215     an error. The MCVS subdirectory is *always* deleted, even if the
2216     checkout did not create the checkout directory.
2217    
2218     2002-06-24 Kaz Kylheku <kaz@ashi.footprints.net>
2219    
2220 kaz 1.110 * dirwalk.lisp (dirwalk-fi): Bugfix: top call was not
2221     passing down keyword parameters to recursive call.
2222    
2223 kaz 1.107 2002-06-23 Kaz Kylheku <kaz@ashi.footprints.net>
2224    
2225 kaz 1.109 * posix.lisp (canonicalize-path): Use concatenate-string
2226     instead of format.
2227    
2228     2002-06-23 Kaz Kylheku <kaz@ashi.footprints.net>
2229    
2230 kaz 1.108 * posix.lisp (parse-posix-namestring): Clean rewrite.
2231    
2232     2002-06-23 Kaz Kylheku <kaz@ashi.footprints.net>
2233    
2234 kaz 1.107 The ``import'' command is renamed to ``create''.
2235    
2236 kaz 1.262 * mcvs-main.lisp (*create-options*): Renamed to *import-options*.
2237 kaz 1.107 (*mcvs-command-table*): Updated.
2238     (*usage*): Updated.
2239    
2240     * import.lisp: File renamed to create.lisp.
2241     (mcvs-import): Renamed to mcvs-create; some arguments renamed.
2242     (mcvs-import-wrapper): Renamed to mcvs-create-wrapper.
2243    
2244     * README: Updated.
2245    
2246 kaz 1.104 2002-06-22 Kaz Kylheku <kaz@ashi.footprints.net>
2247    
2248 kaz 1.106 * split.lisp (split-fields): Optimized to extract tokens directly
2249     from the input string using subseq rather than construct them
2250     character by character.
2251 kaz 1.105
2252     2002-06-22 Kaz Kylheku <kaz@ashi.footprints.net>
2253    
2254 kaz 1.104 * find-bind.lisp (find-bind): Use #'values instead of #'(lambda (x) x).
2255    
2256 kaz 1.102 2002-06-21 Kaz Kylheku <kaz@ashi.footprints.net>
2257    
2258 kaz 1.103 * clisp-linux.sh (:clisp-old): Added to *features*
2259     for CLISP 2.28 or higher.
2260     (*null-pointer*): Only defined when :clisp-old is present.
2261     (pointer-null): Use new ffi:foreign-pointer-null if :clisp-old
2262     feature is not present.
2263    
2264     * install.sh: Don't do *null-pointer* workaround hack
2265     unless :clisp-old feature is present in the memory image.
2266    
2267     2002-06-21 Kaz Kylheku <kaz@ashi.footprints.net>
2268    
2269 kaz 1.102 * types.lisp (types-make-cvs-adds): Serious bugfix. Forgot
2270     to strip MCVS/ prefix from those F- files which don't match
2271     any type entries. This caused cvs add to fail for unsuffixed
2272     files.
2273    
2274 kaz 1.101 2002-06-08 Kaz Kylheku <kaz@ashi.footprints.net>
2275    
2276     * types.lisp (types-to-import-wrapper-args): Don't use backquote
2277     template to generate a list that will be destructively catenated
2278     by mapcan.
2279    
2280 kaz 1.100 2002-05-22 Kaz Kylheku <kaz@ashi.footprints.net>
2281    
2282     * checkout.lisp (mcvs-checkout): If a checkout directory is
2283     created and then the CVS checkout fails, the directory is
2284     then removed.
2285    
2286 kaz 1.97 2002-05-20 Kaz Kylheku <kaz@ashi.footprints.net>
2287    
2288 kaz 1.100 * find-bind.lisp (find-bind-extract-vals, find-bind): Process default
2289 kaz 1.99 values in find-bind-extract-vals, instead of in the expansion of
2290     find-bind, thereby reducing some macro bloat.
2291    
2292     2002-05-20 Kaz Kylheku <kaz@ashi.footprints.net>
2293    
2294 kaz 1.98 * remap.lisp (mcvs-remap): Loads MAP as well as MAP-LOCAL.
2295     If it the mappings differ, an error is signaled. The user can choose
2296     to ignore the error, in which case MAP is clobbered.
2297    
2298     2002-05-20 Kaz Kylheku <kaz@ashi.footprints.net>
2299    
2300 kaz 1.97 Adding mcvs remap command.
2301    
2302     * dirwalk.lisp (dirwalk-fi, dirwalk, for-each-file-info): Default
2303     behavior is now preorder (visit directory before its entries).
2304     A keyword is provided to select the old postorder behavior.
2305     A catch is provided in dirwalk-fi that allows the caller to
2306     skip processing the currently traversed directory. The for-each-*
2307     macros provide a local function called (skip) to do this.
2308     (delete-recursive): This function depends on postorder behavior
2309     in for-each-file-info, so it explicitly selects it now.
2310    
2311     * mcvs.lisp (*remap-options*): New constant.
2312     (*mcvs-command-table*): Add entry for new function.
2313     (*usage*): Describes new function.
2314    
2315     * remap.lisp: New file.
2316     (mcvs-remap, mcvs-remap-wrapper): New functions.
2317    
2318 kaz 1.96 2002-05-15 Kaz Kylheku <kaz@ashi.footprints.net>
2319    
2320     * sync.lisp (synchronize-files): Signal an error when the two files
2321     to be synchronized have the same time stamp. Provide two restarts
2322     for doing the synchronization either way.
2323    
2324 kaz 1.95 2002-05-06 Kaz Kylheku <kaz@ashi.footprints.net>
2325    
2326     * mapping.lisp (in-sandbox-root-dir): Fix symbol macro
2327     sandbox-down-path; it was referring to the (quote #:DOWNPATH-NNN)
2328     rather than #:DOWNPATH-NNN.
2329    
2330 kaz 1.93 2002-05-04 Kaz Kylheku <kaz@ashi.footprints.net>
2331    
2332 kaz 1.94 * import.lisp (mcvs-import): Specify -I ! argument to cvs import
2333     so that it does not ignore any F- files.
2334    
2335     2002-05-04 Kaz Kylheku <kaz@ashi.footprints.net>
2336    
2337 kaz 1.93 * mapping.lisp (mapping-update): Provide restart that allows
2338     user to ignore file removal error.
2339    
2340 kaz 1.92 2002-04-19 Kaz Kylheku <kaz@ashi.footprints.net>
2341    
2342     Porting to CMUCL.
2343    
2344     * system.lisp: Conditionally load new module cmucl-unix.
2345    
2346     * mapping.lisp (mapping-dupe-check, mapping-write,
2347     mapping-difference): Fixes related to sort function; we were
2348     relying on CLISP's preservation of the cons cell order.
2349    
2350     * cmucl-unix.lisp: New file.
2351    
2352 kaz 1.89 2002-04-17 Kaz Kylheku <kaz@ashi.footprints.net>
2353    
2354 kaz 1.90 * checkout.lisp (mcvs-checkout): Allow -d to specify current
2355     directory as the checkout directory. Do not complain if the
2356 kaz 1.91 target directory exists, just try to use it anyway,
2357     unless it is the root of an existing Meta-CVS sandbox. Use
2358 kaz 1.90 the mapping-update function to update the sandbox.
2359     These changes allow a Meta-CVS sandbox to blend with an existing
2360     directory structure, a useful feature.
2361    
2362     2002-04-17 Kaz Kylheku <kaz@ashi.footprints.net>
2363    
2364 kaz 1.89 * generic.lisp (mcvs-generic): Change how empty file argument list
2365     is handled. Rather than rewriting it to '(".") we do a proper
2366     map-prefix-lookup. Synchronizing and invoking CVS is elided
2367     if the resulting list of files to process is empty and the --nometa
2368     option is specified.
2369    
2370 kaz 1.87 2002-04-16 Kaz Kylheku <kaz@ashi.footprints.net>
2371    
2372 kaz 1.88 * branch.lisp (parse-sticky): New function.
2373     (read-cvs-entries): New function.
2374     (same-tag-check): New function.
2375     (what-tag-are-we-on): Renamed to what-are-we-sticky-to. Calls
2376     parse-sticky to return structured tag.
2377     (mcvs-merge): Make use of structured tags.
2378     (mcvs-list-branches): Make use of structured tags. Indicate
2379     when sandbox is inconsistently sticky.
2380    
2381     2002-04-16 Kaz Kylheku <kaz@ashi.footprints.net>
2382    
2383 kaz 1.87 * remove.lisp (mcvs-remove): Corrected careless bracketing
2384     introduced on 2002-03-15 that rendered this function ineffective.
2385    
2386 kaz 1.85 2002-04-04 Kaz Kylheku <kaz@ashi.footprints.net>
2387 kaz 1.82
2388 kaz 1.86 Absolute paths resolved against sandbox root.
2389    
2390     * posix.lisp (path-absolute-p): New function. Predicate to
2391     test whether a path is absolute.
2392    
2393     * mapping.lisp (in-sandbox-root-dir): sandbox-translate-paths
2394     function detects absolute path, and treats it as relative to
2395     sandbox root.
2396    
2397     2002-04-04 Kaz Kylheku <kaz@ashi.footprints.net>
2398    
2399 kaz 1.84 New switch command added, plus sticky tag related
2400     bugfixes and enhancement of mcvs list-branches.
2401    
2402     mcvs-main.lisp (*switch-options*): New constant.
2403     (*mcvs-command-table*): New entries.
2404     (*usage*): New help text.
2405    
2406     branch.lisp (what-branch-are-we-on): Function renamed to
2407     what-tag-are-we-on. Tests the first letter which is T or N; if
2408     it is not T, then it's not a branch tag. If there is a tag,
2409     it returns two values; the second value is NIL if it is not
2410     a branch tag, T otherwise.
2411     (mcvs-merge): Modified to use what-tag-are-we-on.
2412     (mcvs-list-branches): Show additional information about the
2413     current sticky tag.
2414     (mcvs-merge-wrapper): Fix wrong parenthesization introduced
2415     earlier today.
2416     (mcvs-switch-wrapper): New function.
2417    
2418 kaz 1.85 2002-04-04 Kaz Kylheku <kaz@ashi.footprints.net>
2419 kaz 1.84
2420 kaz 1.83 * branch.lisp (branch-tag-check): Check reserved symbol HEAD.
2421    
2422 kaz 1.85 2002-04-04 Kaz Kylheku <kaz@ashi.footprints.net>
2423 kaz 1.83
2424 kaz 1.82 New command to list branches.
2425    
2426     * mcvs-main.lisp (*list-branches-options*): New constant.
2427     (*mcvs-command-table*): Entries for new command added.
2428     (*usage*): Help text added.
2429    
2430     * branch.lisp (mcvs-list-branches,
2431     mcvs-list-branches-wrapper): New functions.
2432    
2433 kaz 1.80 2002-04-03 Kaz Kylheku <kaz@ashi.footprints.net>
2434    
2435 kaz 1.81 * branch.lisp (where-is-the-repository): New function.
2436     (cvs-make-or-advance-tag): Pass down CVSROOT to cvs rtag using
2437     the -d global option.
2438    
2439     2002-04-03 Kaz Kylheku <kaz@ashi.footprints.net>
2440    
2441 kaz 1.80 * branch.lisp (what-module-is-this): New function.
2442     (cvs-make-or-advance-tag): Use rtag rather than tag for tagging
2443     the branch being merged. This fixes the failure to merge added files.
2444     (mcvs-merge): Use mcvs-update rather than directly using cvs.
2445    
2446 kaz 1.78 2002-04-02 Kaz Kylheku <kaz@ashi.footprints.net>
2447    
2448 kaz 1.79 Implemented remerge command; redo a merge without moving
2449     around any tags.
2450    
2451     * branch.lisp (mcvs-merge): New keyword parameter remerge-p
2452     to indicate that a re-merge should be done, plus logic for
2453     doing so.
2454     (mcvs-remerge-wrapper): New function.
2455    
2456     * mcvs-main.lisp (*remerge-options*): New constant.
2457     (*mcvs-command-table*): New entry for remerge command.
2458    
2459     2002-04-02 Kaz Kylheku <kaz@ashi.footprints.net>
2460    
2461 kaz 1.78 First cut at implementing more automated branching and merging.
2462    
2463     * mcvs-main.lisp (*branch-options*, *merge-options*): New constants.
2464     (*mcvs-command-table*): New entries for branch and merge commands.
2465     (*usage*): New help text.
2466    
2467     * branch.lisp: New file.
2468     (*branch-char*): New constant.
2469     (tags-from-cvs-log, what-branch-are-we-on, branch-tag-check,
2470     mcvs-branch, mcvs-branch-wrapper, cvs-make-or-advance-tag, mcvs-merge,
2471     mcvs-merge-wrapper): New functions.
2472    
2473 kaz 1.87 2002-04-01 Kaz Kylheku <kaz@ashi.footprints.net>
2474 kaz 1.77
2475     checkout.lisp (mcvs-checkout): Emit informational message
2476     when checkout completes, because it's not obvious what directory
2477     was just created.
2478    
2479 kaz 1.76 2002-02-38 Kaz Kylheku <kaz@ashi.footprints.net>
2480    
2481     Error checking added to mcvs move: verifies that all
2482     sources exist and are known to Meta-CVS.
2483    
2484     * move.lisp (source-check): New function.
2485     (simple-rename, simple-move-to-dir): Use new function.
2486    
2487 kaz 1.74 2002-03-20 Kaz Kylheku <kaz@ashi.footprints.net>
2488    
2489 kaz 1.75 * rcsparse.lisp: File renamed to rcs-utils.lisp.
2490     (rcs-delta): New slot, delta-hash.
2491     (rcs-make-delta-hash): New function.
2492     (rcs-parse): Calls rcs-make-delta-hash to set up new slot.
2493    
2494     * convert.lisp: require changed to match file rename.
2495    
2496     2002-03-20 Kaz Kylheku <kaz@ashi.footprints.net>
2497    
2498 kaz 1.74 Some new macros for slot access.
2499    
2500     * slot-refs.lisp: New file.
2501     (with-slot-refs): New macro.
2502     (with-multi-slot-refs): New macro.
2503    
2504     * rcsparse.lisp (rcs-parse-newphrases, rcs-parse-admin,
2505     rcs-parse-delta): Replace uses
2506     of symbol-macrolet by with-slot-refs and with-multi-slot-refs.
2507    
2508 kaz 1.73 2002-03-19 Kaz Kylheku <kaz@ashi.footprints.net>
2509    
2510     Adding delta parsing to RCS parser.
2511    
2512     * rcsparse.lisp (rcs-delta): New struct.
2513     (rcs-file): New slot, deltas.
2514     (rcs-parse-newphrases): New function, factors out parsing of
2515     ``newphrases'' syntactic element out of rcs-parse-admin.
2516     (rcs-parse-admin): Use rcs-parse-newphrases.
2517     (rcs-parse-delta, rcs-parse-deltas): New functions.
2518     (rcs-parse): Parse both admin and deltas; store deltas in new
2519     rcs-file slot.
2520    
2521 kaz 1.72 2002-03-18 Kaz Kylheku <kaz@ashi.footprints.net>
2522    
2523     * posix.lisp (parse-posix-namestring): New function. Converts POSIX
2524     path to CL Path object.
2525 kaz 1.73
2526     * rcsparse.lisp: New file, implements RCS version file parser.
2527 kaz 1.72 (rcs-admin, rcs-file, rcs-token, rcs-token-stream): New structs.
2528     (rcs-peek-token, rcs-read-token): New generic functions.
2529     (rcs-extract-id-sym-or-num, rcs-extract-string,
2530     rcs-match-optional, rcs-match-token, rcs-parse, rcs-parse-admin,
2531     rcs-special-p): New functions.
2532    
2533     * convert.lisp (classify-tags): Work with association list rather
2534     than raw strings.
2535     (mcvs-convert): Use rcs-parse to extract tags. Fix call to
2536     mapping-generate name. Use parse-posix-namestring when opening
2537     version file. Generate informative chatter.
2538    
2539 kaz 1.69 2002-03-15 Kaz Kylheku <kaz@ashi.footprints.net>
2540    
2541 kaz 1.71 * remove.lisp (mcvs-remove): More detailed error checking.
2542     Checks for remove attempts against MCVS/ area, removes of local
2543     files not versioned under Meta-CVS, and nonexistent files.
2544    
2545     2002-03-15 Kaz Kylheku <kaz@ashi.footprints.net>
2546    
2547 kaz 1.70 * add.lisp (mcvs-add): Error message changed to tell user to use
2548     -R to add directory.
2549    
2550     * remove.lisp (mcvs-remove): New generalized boolean parameter
2551     indicates to do a recursive remove. This is controlled by the
2552     -R option which already exists. Behavior changed to not act
2553     on directories unless recursion is explicitly requested.
2554     (mcvs-remove-wrapper): Extract "R" option, pass down new boolean
2555     to mcvs-remove.
2556    
2557     2002-03-15 Kaz Kylheku <kaz@ashi.footprints.net>
2558    
2559 kaz 1.69 * remove.lisp (mcvs-remove-wrapper): Remove bogus error check.
2560    
2561 kaz 1.66 2002-03-14 Kaz Kylheku <kaz@ashi.footprints.net>
2562    
2563 kaz 1.68 * checkout.lisp (mcvs-checkout): Bugfix: must use checkout-dir, not
2564     module, when testing whether directory exists or was created properly.
2565    
2566     2002-03-14 Kaz Kylheku <kaz@ashi.footprints.net>
2567    
2568 kaz 1.67 Update takes file arguments now.
2569    
2570     * update.lisp (mcvs-update): If filename arguments are given, then
2571     just call mcvs-generic to do the work, but suppress the operation on
2572     meta files. If no filename arguments are given, then update everything.
2573     If the -p option is present, no synchronization is needed, before or
2574     after.
2575     (mcvs-update-wrapper): Pass command arguments down to mcvs-update.
2576    
2577     * mcvs-main.lisp (*update-options*): Add "p" option.
2578    
2579     * generic.lisp (mcvs-generic): New keyword parameter need-sync-after,
2580     a generalized boolean which can tell the function to do a
2581     mapping-synchronize after executing the CVS command.
2582    
2583     2002-03-14 Kaz Kylheku <kaz@ashi.footprints.net>
2584    
2585 kaz 1.66 * filt.lisp (filt-select-map): Do allow a date and revision to be
2586     specified; the revision could be a branch tag.
2587    
2588 kaz 1.62 2002-03-13 Kaz Kylheku <kaz@ashi.footprints.net>
2589    
2590 kaz 1.65 * mapping.lisp (malformed-map): New function.
2591     (mapping-dupe-check): Perform extra error checks when reading
2592     mapping, and turn them into a condition with a ``nice'' error message.
2593    
2594     2002-03-13 Kaz Kylheku <kaz@ashi.footprints.net>
2595    
2596 kaz 1.64 * mcvs-filt.lisp (filt-select-map): Handle error gracefully
2597     when reading map. It's easy to give CVS is a nonexistent tag.
2598    
2599     2002-03-13 Kaz Kylheku <kaz@ashi.footprints.net>
2600    
2601 kaz 1.63 The filt command takes arguments to select alternate revision
2602     of map.
2603    
2604     * mcvs-main.lisp (*filt-options*): New constant.
2605     (*mcvs-command-table*): Updated with new options.
2606     (mcvs-debug-shell): Restart name changed during debugging of filt
2607     changes.
2608    
2609     * filt.lisp (filt-select-map): New function. Loads either the
2610     local mapping, or retrieves an alternate mapping from CVS based
2611     on command line options.
2612     (mcvs-filt): Use filt-select-map rather than mapping-read.
2613    
2614     2002-03-13 Kaz Kylheku <kaz@ashi.footprints.net>
2615    
2616 kaz 1.62 * generic.lisp (mcvs-generic): Add .cvsignore to the list of
2617     metafiles.
2618    
2619 kaz 1.53 2002-03-12 Kaz Kylheku <kaz@ashi.footprints.net>
2620    
2621 kaz 1.61 * import.lisp (mcvs-import): Create a .cvsignore file for ignoring
2622     MAP-LOCAL.
2623    
2624     2002-03-12 Kaz Kylheku <kaz@ashi.footprints.net>
2625    
2626 kaz 1.60 Fix trailing slash bug in mcvs mv.
2627    
2628     * move.lisp (simple-move-to-dir): Canonicalize path after catenating
2629     destination and file base name. This nukes a double slash if
2630     we move to a name with a trailing slash.
2631     (move-guts): Treat a destination name that has a trailing slash
2632     as a directory, unless it exists already as a non-directory.
2633    
2634     2002-03-12 Kaz Kylheku <kaz@ashi.footprints.net>
2635    
2636 kaz 1.59 * mcvs-main.lisp (*cvs-options*): Added "error-terminate" and
2637     "error-continue".
2638     (*usage*): Update and reformat help text.
2639     (mcvs-execute): Process "error-terminate" and "error-continue"
2640     options.
2641    
2642     2002-03-12 Kaz Kylheku <kaz@ashi.footprints.net>
2643    
2644 kaz 1.58 * mapping.lisp (mapping-update): Messages related to moving,
2645     adding or removing files promoted to terse level, so only -Q
2646     can suppress them.
2647    
2648     2002-03-12 Kaz Kylheku <kaz@ashi.footprints.net>
2649    
2650 kaz 1.57 * update.lisp (mcvs-update): Changing level of chatter messages.
2651     * move.lisp (mcvs-move): Likewise.
2652     * add.lisp (mcvs-add): Likewise.
2653     * remove.lisp (mcvs-remove): Likewise.
2654     * checkout.lisp (mcvs-checkout): Likewise.
2655     * generic.lisp (mcvs-generic): Likewise.
2656     * import.lisp (mcvs-import): Likewise.
2657     * mapping.lisp (mapping-dupe-check): Likewise.
2658     (mapping-update): Likewise.
2659    
2660     2002-03-12 Kaz Kylheku <kaz@ashi.footprints.net>
2661    
2662 kaz 1.56 Support for -q, -Q and -e global options.
2663    
2664     * posix.lisp (*editor*): New special variable.
2665     (edit-file): Check *editor* variable; if not nil, use it.
2666    
2667     * mcvs-main.lisp (*usage*): Update help text.
2668     (mcvs-execute): Set *mcvs-chatter-level* according to -q or -Q.
2669     Set *editor* if -e is specified.
2670    
2671     2002-03-12 Kaz Kylheku <kaz@ashi.footprints.net>
2672    
2673 kaz 1.55 * mcvs-main.lisp (*cvs-options*): Remove obsolete "a".
2674     (*cvs-options-arg*): Add missing "r".
2675     (*usage*): New constant, help text.
2676     (mcvs-execute): Process help and version command line options.
2677    
2678     2002-03-12 Kaz Kylheku <kaz@ashi.footprints.net>
2679    
2680 kaz 1.54 * options.lisp (parse-opt): Make error messages more consistent.
2681    
2682     2002-03-12 Kaz Kylheku <kaz@ashi.footprints.net>
2683    
2684 kaz 1.53 * find-bind.lisp (find-bind): Make rem-var optional; sometimes
2685     the user might not care about the remaining unmatched list.
2686    
2687 kaz 1.49 2002-03-11 Kaz Kylheku <kaz@ashi.footprints.net>
2688    
2689 kaz 1.52 * find-bind.lisp (find-bind): Documentation string change. Clarify
2690     that default values are substituted whenever a variable would
2691     otherwise be bound to the value NIL, even through an explicit
2692     match.
2693    
2694     2002-03-11 Kaz Kylheku <kaz@ashi.footprints.net>
2695    
2696 kaz 1.51 Sane filtering of -d option in checkout.
2697    
2698     * find-bind.lisp (find-bind): Variable bindings can specify
2699     a third element, which provides a default value for any variables
2700     that turn out NIL.
2701    
2702     * checkout.lisp (mcvs-checkout): Filter out the -d dir option,
2703     and use it to override the name of the checkout directory,
2704     the way CVS checkout does it.
2705    
2706     2002-03-11 Kaz Kylheku <kaz@ashi.footprints.net>
2707    
2708 kaz 1.50 Bugfix: mcvs add was not processing existing :ignore's in MCVS/TYPES.
2709    
2710     * add.lisp (mcvs-add): Use old types as well as new types
2711     to filter for ignores.
2712    
2713     2002-03-11 Kaz Kylheku <kaz@ashi.footprints.net>
2714    
2715 kaz 1.49 * find-bind.lisp: New file.
2716     (find-bind-extract-vals): New function.
2717     (find-bind): New macro.
2718    
2719     * error.lisp (restart-destructure): Macro removed.
2720     (mcvs-error-handler): Uses generic find-bind instead of
2721     restart-destructure.
2722    
2723 kaz 1.43 2002-03-09 Kaz Kylheku <kaz@ashi.footprints.net>
2724    
2725 kaz 1.48 * filt.lisp (mcvs-filt): Bugfix: do not stop processing line
2726     if F- file name is not found in hash table.
2727    
2728     2002-03-09 Kaz Kylheku <kaz@ashi.footprints.net>
2729    
2730 kaz 1.47 Commit is handled through mcvs-generic, so it can take
2731     filename arguments, and honor --nometa.
2732    
2733     * commit.lisp: File removed.
2734     (mcvs-commit): Function removed.
2735     (mcvs-commit-wrapper): Moved to generic.lisp.
2736    
2737     * generic.lisp (mcvs-commit-wrapper): Moved from commit.lisp,
2738     changed to invoke mcvs-generic.
2739     (mcvs-generic): Only add TYPES file to list if it actually
2740     exists.
2741    
2742     2002-03-09 Kaz Kylheku <kaz@ashi.footprints.net>
2743    
2744 kaz 1.46 New --nometa command line option.
2745    
2746     * mcvs-main.lisp (*cvs-options*): Add "nometa" to list.
2747     (mcvs-execute): Filter global options to recognize
2748     Meta-CVS-specific ones.
2749    
2750     * options.lisp (*nometa-option*): New special variable.
2751     (filter-global-options): New function.
2752    
2753     * generic.lisp (mcvs-generic): Honor *nometa-option* special
2754     variable.
2755    
2756     2002-03-09 Kaz Kylheku <kaz@ashi.footprints.net>
2757    
2758 kaz 1.45 * generic.lisp (mcvs-generic): Make sure TYPES file is
2759     included in list of files.
2760    
2761     2002-03-09 Kaz Kylheku <kaz@ashi.footprints.net>
2762    
2763 kaz 1.44 * mcvs-main.lisp (*add-options*): Support -R option for add.
2764     Thus, recursive add works now.
2765    
2766     2002-03-09 Kaz Kylheku <kaz@ashi.footprints.net>
2767    
2768 kaz 1.43 Fix mcvs filt so it handles suffixed F- files properly.
2769    
2770     * filt.lisp (make-filt-hash): New function.
2771     (mcvs-filt): After matching hex digits, also check for
2772     a suffix match.
2773    
2774 kaz 1.40 2002-02-17 Kaz Kylheku <kaz@ashi.footprints.net>
2775    
2776 kaz 1.42 Support for file type keyword treatment under mcvs add.
2777    
2778     * add.lisp (mcvs-add): Restructured to build up list of new file
2779     suffixes, allow the user to edit the file which determines how
2780     they are treated, filter out ignored files and pass -k options
2781     to multiple cvs adds.
2782    
2783     * types.lisp (*mcvs-new-types*): New constant.
2784     (*types-comments*): Constant moved here from import.lisp.
2785     (types-remove-ignores): New function. Code factored out from
2786     mcvs-import.
2787     (types-let-user-edit): Likewise.
2788     (types-make-cvs-adds): New function.
2789    
2790     * import.lisp (*types-comments*): Constant removed. Moved to
2791     types.lisp
2792     (mcvs-import): Code factored out to new functions in types.lisp, which
2793     are also used by add.lisp.
2794    
2795     2002-02-17 Kaz Kylheku <kaz@ashi.footprints.net>
2796    
2797 kaz 1.41 * print.lisp: New file.
2798     (print-assoc-list): New function.
2799     * types.lisp: Use print-assoc-list to nicely print the types.
2800     * import.lisp (mcvs-import): Don't bother getting user to
2801     edit the types if the type list is empty. In fact, don't
2802     even create the file.
2803    
2804     2002-02-17 Kaz Kylheku <kaz@ashi.footprints.net>
2805    
2806     * add.lisp (mcvs-add): Use new form of mapping-generate-name.
2807    
2808     2002-02-17 Kaz Kylheku <kaz@ashi.footprints.net>
2809    
2810 kaz 1.40 * import.lisp (mcvs-import): Fix broken restart for re-editing
2811     the types file.
2812     (*types-comments*): Drastically shorten the help text.
2813    
2814 kaz 1.38 2002-02-16 Kaz Kylheku <kaz@ashi.footprints.net>
2815    
2816 kaz 1.39 Support for filetypes in import.
2817    
2818     * posix.lisp (suffix): Separator character parameter is optional;
2819     multiple occurences of character lead to one big suffix like
2820     ".tar.gz" instead of ".gz". A leading dot means it's not a suffix but
2821     a hidden file like ".exrc".
2822     (edit-file): New function, brings up text editor for specified file.
2823    
2824     * clisp-linux.lisp (env-lookup): New function for environment
2825     variable lookup.
2826    
2827     * types.lisp: New source file.
2828     (*mcvs-types-name*, *mcvs-types*): New constants for TYPES filename.
2829     (types-read, types-write, types-sanity-check,
2830     types-to-import-wrapper-args): New functions.
2831    
2832     * import.lisp (*types-comments*): New constant.
2833     (mcvs-import): Restructured to build up list of file suffixes,
2834     allow the user to edit the file which determines how they
2835     are treated, filter out ignored files and pass -W options to cvs import
2836     to handle the rest. Failed cvs import is turned into restartable
2837     condition.
2838    
2839     * mapping.lisp (mapping-generate-name): Takes a suffix parameter.
2840     The F-files now carry a suffix obtained from the original file,
2841     because I have concluded that this was the only reasonable way
2842     to integrate with CVS.
2843    
2844     2002-02-16 Kaz Kylheku <kaz@ashi.footprints.net>
2845    
2846 kaz 1.38 * add.lisp (mcvs-add): Last change completely broke add due
2847     to not breaking out of the retry loop.
2848    
2849 kaz 1.36 2002-02-13 Kaz Kylheku <kaz@ashi.footprints.net>
2850    
2851 kaz 1.37 * move.lisp (mcvs-move): If the mapping-update operation returns
2852     nil, or terminates by a non-local jump, restore the filemap.
2853     * mapping.lisp (mapping-update): When returning normally,
2854     return t. When returning after doing a rollback, return nil.
2855    
2856     2002-02-13 Kaz Kylheku <kaz@ashi.footprints.net>
2857    
2858 kaz 1.36 * error.lisp (mcvs-error-handler): Bugfix. We were closing over
2859     a binding of the iteration variable of a dolist, which has only
2860     one binding over the entire loop.
2861    
2862     * mapping.lisp (mapping-update): Gathers up info all local
2863     clobbered files, and then throw the error. Provides restart
2864     which allows user to print the list of clobbered files, and
2865     a restart which allows the user to have those files clobbered.
2866    
2867     2002-02-13 Kaz Kylheku <kaz@ashi.footprints.net>
2868    
2869     * checkout.lisp (mcvs-checkout-wrapper): Bugfix for last bugfix.
2870    
2871 kaz 1.35 2002-02-11 Kaz Kylheku <kaz@ashi.footprints.net>
2872    
2873     * checkout.lisp (mcvs-checkout-wrapper): Bugfix for bad
2874     destructuring-bind if there are no arguments.
2875    
2876 kaz 1.30 2002-02-10 Kaz Kylheku <kaz@ashi.footprints.net>
2877    
2878 kaz 1.34 * mapping.lisp (mapping-difference): Reformatted documentation string.
2879     (mapping-update): Implemented a continue restart which rolls back
2880     the changes done to the local filesystem.
2881    
2882     2002-02-10 Kaz Kylheku <kaz@ashi.footprints.net>
2883    
2884 kaz 1.31 * error.lisp (mcvs-error-handler): Rearranging the menu,
2885     so "T" is clumped with the main options, and any special restarts
2886 kaz 1.32 are clearly separated. Changed wording.
2887 kaz 1.31
2888     2002-02-10 Kaz Kylheku <kaz@ashi.footprints.net>
2889    
2890 kaz 1.30 * update.lisp (mcvs-update): Re-print the "Invoking CVS" chatter
2891     if the user re-tries the error.
2892    
2893     * add.lisp (mcvs-add): CVS failure is now a restartable error;
2894 kaz 1.33 user can decide whether to roll back the effects or retry the
2895     CVS add, or terminate to keep the effects anyway despite
2896     the failed add.
2897 kaz 1.30
2898     2002-02-10 Kaz Kylheku <kaz@ashi.footprints.net>
2899    
2900     * install.sh: Stop the script if there are compilation errors.
2901    
2902 kaz 1.24 2002-02-09 Kaz Kylheku <kaz@ashi.footprints.net>
2903    
2904 kaz 1.29 * error.lisp (*mcvs-errors-occured-p*): New special variable.
2905     (mcvs-error-handler): Set *mcvs-errors-occured-p* to T.
2906     * mcvs-main.lisp (mcvs): Take *mcvs-errors-occured-p* into
2907     account in computing termination status.
2908    
2909     2002-02-09 Kaz Kylheku <kaz@ashi.footprints.net>
2910    
2911 kaz 1.28 * update.lisp: Remove spurious newlines from error messages.
2912     * add.lisp: Likewise.
2913     * options.lisp: Likewise.
2914     * mapping.lisp: Likewise.
2915    
2916     2002-02-09 Kaz Kylheku <kaz@ashi.footprints.net>
2917    
2918 kaz 1.27 Adding some restarts around cvs update.
2919    
2920     * posix.lisp (execute-command-xargs): Bail with nil return
2921     value if any command line fails.
2922    
2923     * update.lisp (mcvs-update): Tests return value of execute-program
2924     and signal condition if it's nil. Provides a continue restart
2925     as well as a retry restart to try the command again.
2926    
2927     * error.lisp (mcvs-error-handler): Show retry restarts as
2928     a special menu item "R".
2929    
2930     2002-02-09 Kaz Kylheku <kaz@ashi.footprints.net>
2931    
2932 kaz 1.26 Added a much improved error handling routine in anticipation
2933     of better use of restarts.
2934    
2935     * error.lisp: New file
2936     (restart-destructure): New macro.
2937     (*mcvs-error-treatment*): Special variable, moved here from
2938     mcvs-main.
2939     (mcvs-error-handler): New function.
2940    
2941     * mcvs-main.lisp (mcvs-top-error-handler): Function removed.
2942     (mcvs-execute): Bind error to new mcvs-error-handler instad
2943     of mcvs-top-error-handler.
2944    
2945     2002-02-09 Kaz Kylheku <kaz@ashi.footprints.net>
2946    
2947 kaz 1.25 * mcvs-main.lisp (*mcvs-command-table*): The "stat" abbreviation
2948     for status command added.
2949    
2950     2002-02-09 Kaz Kylheku <kaz@ashi.footprints.net>
2951    
2952 kaz 1.24 Hooking conversion tool into command structure.
2953    
2954     * mcvs-main.lisp (*convert-options*): New constant.
2955     (*mcvs-command-table*): New entry for mcvs-convert-wrapper.
2956     * convert.lisp (mcvs-convert): Fix reference to nonexistent variable.
2957     (mcvs-convert-wrapper): New function.
2958    
2959 kaz 1.22 2002-02-08 Kaz Kylheku <kaz@ashi.footprints.net>
2960    
2961 kaz 1.23 Beginning work on repository conversion utility.
2962    
2963     * convert.lisp: New file. Contains conversion utility
2964     to make an Meta-CVS repository from an ordinary CVS repository,
2965     while preserving all history, tags and branches.
2966     (remove-attic-component, classify-tags, read-tags,
2967     mcvs-convert): New functions.
2968    
2969     * posix.lisp (suffix): New function. Computes suffix of file.
2970     (execute-program-xargs): New optional parameter, for specifying
2971     fixed part added at the end of each generated command line.
2972    
2973     * mapping.lisp (*mcvs-map-name*, *mcvs-local-map-name*): New constants.
2974     (*mcvs-map*, *mcvs-map-local*): Redefined in terms of new constants.
2975     (mapping-generate-name): New key parameter no-dir for not adding
2976     the directory prefix.
2977    
2978     2002-02-08 Kaz Kylheku <kaz@ashi.footprints.net>
2979    
2980 kaz 1.22 * checkout.lisp (mcvs-checkout): Ensure local mapping is
2981     sorted when written out, for easier comparisons.
2982    
2983 kaz 1.21 2002-02-07 Kaz Kylheku <kaz@ashi.footprints.net>
2984    
2985     * sync.lisp (synchronize-files): Return :dir symbol when either
2986     argument is a directory.
2987     * mapping.lisp (mapping-synchronize): Chatter output messages
2988     are shorter. Handles :dir return value from synchronize-files.
2989     (mapping-update): New sanity checks for moved and added
2990     files, to avoid clobbering local files. Removed redundant
2991     call to ensure-directories-exit in move logic, because
2992     synchronize-files will do it anyway. Chatter messages reordered
2993     to occur before their corresponding action is done.
2994    
2995     2002-02-07 Kaz Kylheku <kaz@ashi.footprints.net>
2996    
2997     Improve error handling, and builtin ``debug shell''.
2998    
2999     * mcvs-main.lisp (*mcvs-error-treatment*): Special variable
3000     can have new domain value, namely :decline.
3001     (mcvs-top-error-handler): Print error message when terminating
3002     non-restartable error. Handle new :decline treatment by
3003     simply returning.
3004     (mcvs-debug-shell): Set *mcvs-error-treatment* to :decline
3005     so that errors are caught by debugger.
3006    
3007 kaz 1.20 2002-02-04 Kaz Kylheku <kaz@ashi.footprints.net>
3008    
3009     * mapping.lisp (mapping-sort): Removed function.
3010     (mapping-write): Sort written map by F- file names,
3011     not by path names. This is far better for merging, because
3012     files stay in the same place when they are renamed.
3013    
3014 kaz 1.17 2002-02-03 Kaz Kylheku <kaz@ashi.footprints.net>
3015    
3016 kaz 1.19 Added status, log and annotate.
3017    
3018     * mcvs-main.lisp: (*log-options*, *status-options*,
3019     *annotate-options*): New constants.
3020     (*mcvs-command-table*): Add new entries.
3021    
3022     * generic-lisp (mcvs-log-wrapper, mcvs-status-wrapper,
3023     mcvs-annotate-wrapper): New functions.
3024    
3025     2002-02-03 Kaz Kylheku <kaz@ashi.footprints.net>
3026    
3027 kaz 1.18 Added tag command.
3028    
3029     * diff.lisp: File renamed to generic.lisp.
3030     (mcvs-diff): Function renamed to mcvs-generic.
3031    
3032     * generic.lisp (mcvs-generic): Function no longer dedicated to
3033     diffing only; takes CVS command to execute as an argument,
3034     also takes arguments and files as separate lists.
3035     (mcvs-diff-wrapper): Modified to invoke mcvs-generic properly.
3036     (mcvs-tag-wrapper): New function, uses mcvs-generic to implement
3037     tag command.
3038    
3039     * mcvs-main.lisp (*tag-options*): New constant.
3040     (*mcvs-command-table*): New entry for tag command.
3041    
3042     2002-02-03 Kaz Kylheku <kaz@ashi.footprints.net>
3043    
3044 kaz 1.17 Added workaround for operating system argument passing limitations,
3045     resembling the Unix xargs utility. Also, trimmed some fat
3046     from the basename function.
3047    
3048     * clisp-linux.lisp: (*argument-limit*): New constant added.
3049     (arglist-to-command-string): Function removed.
3050     (execute-program): Function removed.
3051     (shell-interpreter): New function, wrapper for CLISP's shell
3052     function, turns exit status into T (success) or NIL (failure).
3053    
3054     * diff.lisp (mcvs-diff): Uses execute-program-xargs instead
3055     of execute-program.
3056    
3057     * posix.lisp (basename): Does not canonicalize path name. This
3058     turns out to be an unnecessary performance hit in some cases.
3059     (arglist-to-command-string): New function. Similar to what was
3060     removed from clisp-linux, but this one properly escapes all
3061     shell metacharacters.
3062     (execute-program): New function, calls shell-interpreter.
3063     (execute-program-xargs): New function. Takes two argument lists.
3064     Forms one or more command lines by combining the first argument list
3065     with one or more pieces of the second argument list, and
3066     executes each command. The length of the pieces is determined
3067     by the argument passing limit.
3068    
3069     * dirwalk.lisp (ensure-directories-gone): Add use of
3070     canonicalize-path because basename doesn't do it.
3071    
3072 kaz 1.12 2002-02-02 Kaz Kylheku <kaz@ashi.footprints.net>
3073    
3074 kaz 1.16 Algorithmic efficiency improvements. No longer using
3075     abstract set operations to update file structure or find
3076     duplicates in the maps. Could still streamline the sorting.
3077    
3078     * mapping.lisp (mapping-sort): Express more succinctly using key.
3079     (mapping-dupe-check): Rewrite using loop over sorted lists.
3080     (mapping-difference): New function for computing mapping change.
3081     (mapping-update): Modify to use mapping-difference.
3082    
3083     2002-02-02 Kaz Kylheku <kaz@ashi.footprints.net>
3084    
3085 kaz 1.15 * mapping.lisp (mapping-update): When moving files, ensure
3086     that the target is unlinked if it exists.
3087    
3088     * move.lisp (simple-rename): No longer do target unlinking
3089     here. Also bugfix: it wasn't handling renames of directories
3090     containing just one file.
3091    
3092     2002-02-02 Kaz Kylheku <kaz@ashi.footprints.net>
3093    
3094 kaz 1.13 * mapping.lisp (mapping-dupe-check): New function for
3095     detecting duplicate objects or paths in a mapping.
3096     (mapping-sane-p): Function removed.
3097     (mapping-read): Use mapping-dupe-check to verify a map
3098     when asked by the sanity-check keyword.
3099     (mapping-update): Specify sanity check when reading MCVS/MAP.
3100    
3101 kaz 1.14 * checkout.lisp (mcvs-checkout): Checkout also performs
3102     sanity check.
3103    
3104 kaz 1.13 2002-02-02 Kaz Kylheku <kaz@ashi.footprints.net>
3105    
3106 kaz 1.12 * mcvs-main.lisp (mcvs): Use CLISP's exit function correctly
3107     to establish proper termination status.
3108    
3109 kaz 1.8 2002-01-31 Kaz Kylheku <kaz@ashi.footprints.net>
3110    
3111 kaz 1.10 * mcvs-main.lisp (mcvs-execute): Parse command-specific options
3112     properly based on knowledge of each command's set of options.
3113     (parse-args): Function removed.
3114    
3115 kaz 1.11 * options.lisp (parse-opt): Correctly process long options with
3116     arguments. Argument is part of the string, separated by = symbol.
3117    
3118 kaz 1.10 2002-01-31 Kaz Kylheku <kaz@ashi.footprints.net>
3119    
3120 kaz 1.9 * options.lisp (parse-opt): When multiple options characters are
3121     bunched up into one argument, and one of them other than the
3122     last one takes an argument, then the remaining ones are
3123     considered to constitute a string which is an argument to that
3124     option. For instance -y32 means -y 32, not -y -3 -2, assuming
3125     that y is an option that requires an argument.
3126    
3127     2002-01-31 Kaz Kylheku <kaz@ashi.footprints.net>
3128    
3129     Top level handler terminates by non-local exit back to
3130     mcvs function, rather than by calling (exit).
3131    
3132     * mcvs-main.lisp (mcvs-top-error-handler): Restructured
3133     to call (throw 'mcvs-exit t).
3134     (mcvs-execute): Ensure that NIL is returned by normal exit.
3135     (mcvs): Catches 'mcvs-exit throw, and calls (exit 0) or (exit 1)
3136     accordingly.
3137    
3138    
3139     2002-01-31 Kaz Kylheku <kaz@ashi.footprints.net>
3140    
3141 kaz 1.8 Renamed all ``filemap-'' functions to ``mapping-'' prefix.
3142    
3143     * mapping.lisp (filemap-generate-name, filemap-sort,
3144     filemap-extract-paths, filemap-lookup, filemap-prefix-lookup,
3145     filemap-prefix-matches, filemap-object-lookup,
3146     filemap-same-object-p, filemap-same-path-p, filemap-moved-p,
3147     filemap-rename-files, filemap-sane-p): Old names removed.
3148     (mapping-generate-name, mapping-sort,
3149     mapping-extract-paths, mapping-lookup, mapping-prefix-lookup,
3150     mapping-prefix-matches, mapping-object-lookup,
3151     mapping-same-object-p, mapping-same-path-p, mapping-moved-p,
3152     mapping-rename-files, mapping-sane-p): New names created.
3153     (mapping-read, mapping-write, mapping-synchronize,
3154     mapping-update): Edit calls to renamed functions.
3155     * add.lisp (mcvs-add): Likewise.
3156     * diff.lisp (mcvs-diff): Likewise.
3157     * filt.lisp (mcvs-filt): Likewise.
3158     * import.lisp (mcvs-import): Likewise.
3159     * move.lisp (simple-rename, simple-move-to-dir, move-guts): Likewise.
3160     * remove.lisp (mcvs-remove): Likewise.
3161    
3162 kaz 1.6 2002-01-30 Kaz Kylheku <kaz@ashi.footprints.net>
3163    
3164 kaz 1.7 Factored out repeated code for reading and writing of the MAP and
3165     MAP-LOCAL files.
3166    
3167     * mapping.lisp (mapping-read, mapping-write): New functions.
3168     (mapping-synchronize, mapping-update): Use new functions.
3169     * move.lisp (mcvs-move): Likewise.
3170     * filt.lisp (mcvs-filt): Likewise.
3171     * add.lisp (mcvs-add): Likewise.
3172     * remove.lisp (mcvs-remove): Likewise.
3173     * checkout.lisp (mcvs-checkout): Likewise.
3174     * diff.lisp (mcvs-diff): Likewise.
3175     * import.lisp (mcvs-import): Likewise.
3176    
3177     2002-01-30 Kaz Kylheku <kaz@ashi.footprints.net>
3178    
3179 kaz 1.6 * filt.lisp (mcvs-filt): use *mcvs-dir* variable instead of
3180     hard coding "MCVS" string.
3181    
3182     2002-01-30 Kaz Kylheku <kaz@ashi.footprints.net>
3183    
3184     * MCVS-PAPER: Renamed to Meta-CVS-PAPER
3185    
3186     * README: Change all references to MCVS to Meta-CVS, the
3187     new official name of the program.
3188     * add.lisp: Likewise
3189     * chatter.lisp: Likewise
3190     * checkout.lisp: Likewise
3191     * clisp-linux.lisp: Likewise
3192     * commit.lisp: Likewise
3193     * diff.lisp: Likewise
3194     * dirwalk.lisp: Likewise
3195     * filt.lisp: Likewise
3196     * import.lisp: Likewise
3197     * INSTALL: Likewise
3198     * mapping.lisp: Likewise
3199     * mcvs-main.lisp: Likewise
3200     * Meta-CVS-PAPER: Likewise
3201     * move.lisp: Likewise
3202     * options.lisp: Likewise
3203     * posix.lisp: Likewise
3204     * RELEASE-NOTES: Likewise
3205     * remove.lisp: Likewise
3206     * restart.lisp: Likewise
3207     * seqfuncs.lisp: Likewise
3208     * split.lisp: Likewise
3209     * sync.lisp: Likewise
3210     * system.lisp: Likewise
3211     * update.lisp: Likewise
3212    
3213 kaz 1.4 2002-01-28 Kaz Kylheku <kaz@ashi.footprints.net>
3214    
3215 kaz 1.5 * move.lisp (move-guts): test the actual filesystem as well
3216     as the map for existence of a directory or file. This makes
3217     the move operation behave better. Files can be moved to an
3218     existing directory that is not known to MCVS, and a file
3219     can properly clobber a target file that is not known to MCVS.
3220    
3221     * clisp-linux.lisp (directory-p, regular-p, symlink-p): define
3222     methods for these generic functions for a NIL argument, such
3223     that they return NIL.
3224    
3225     2002-01-28 Kaz Kylheku <kaz@ashi.footprints.net>
3226    
3227 kaz 1.4 * move.lisp (simple-move-to-dir): eliminated a bunch of code
3228     with the result that mcvs mv now works more like the Unix mv
3229     when moving a directory to another directory.
3230    
3231     * mcvs-main.lisp (mcvs-execute): fix bogus error message
3232     when options are given but no command.
3233    
3234     * README: don't use -z3 in example because this style of
3235     specifying an argument to an option doesn't work.
3236    
3237 kaz 1.1 2002-01-27 Kaz Kylheku <kaz@ashi.footprints.net>
3238    
3239     * add.lisp (mcvs-add): Remove bogus test for NIL or T; allow
3240     recursivep to be a generalized boolean variable. This allows
3241     mcvs add -R to work properly.
3242 kaz 1.2
3243     * mcvs-main.lisp (*cvs-command-options-arg*): add support
3244     for -u parameter, useful in cvs diff.
3245 kaz 1.3 (*mcvs-command-table*): Add "fi" shorthand for "filt".

  ViewVC Help
Powered by ViewVC 1.1.5