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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.5