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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.5