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

  ViewVC Help
Powered by ViewVC 1.1.5