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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.267 - (hide annotations)
Mon Apr 28 06:20:45 2003 UTC (10 years, 11 months ago) by kaz
Branch: MAIN
Changes since 1.266: +10 -0 lines
Merging from mcvs-1-0-branch.

* docs/generate.sh: Use valid shell syntax for identifiers.

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

  ViewVC Help
Powered by ViewVC 1.1.5