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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.297 - (hide annotations)
Mon Nov 27 02:12:57 2006 UTC (7 years, 4 months ago) by kaz
Branch: MAIN
Changes since 1.296: +13 -0 lines
Bugfix and enhancement in mcvs-filt.

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

  ViewVC Help
Powered by ViewVC 1.1.5