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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.5