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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.5