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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.298 - (hide annotations)
Mon Nov 27 02:18:20 2006 UTC (7 years, 4 months ago) by kaz
Branch: MAIN
Changes since 1.297: +8 -0 lines
Bugfix and enhancmenet in new CLISP FFI module.

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

  ViewVC Help
Powered by ViewVC 1.1.5