/[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.86 - (hide annotations)
Thu Jan 29 04:53:12 2004 UTC (10 years, 2 months ago) by kaz
Branch: mcvs-1-0-branch
Changes since 1.205.2.85: +16 -0 lines
Fixes to convert command to make it useable.

* code/posix.lisp (suffix): Return dir name as additional value.
(execute-program-xargs): In the case that there are no variable
args passed, the fixed trailing args should still be passed
to the command.

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

  ViewVC Help
Powered by ViewVC 1.1.5