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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.5