/[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.93 - (hide annotations)
Sun Feb 1 05:10:15 2004 UTC (10 years, 2 months ago) by kaz
Branch: mcvs-1-0-branch
CVS Tags: mcvs-1-0-12
Changes since 1.205.2.92: +23 -10 lines
* code/clisp-unix.lisp (current-dir-restore): An inner macro
called in-original-dir is now visible to the body enclosed in
current-dir-restore. This allows the current directory to be
temporarily escaped back to the original directory.

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

  ViewVC Help
Powered by ViewVC 1.1.5