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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.205.2.70 - (hide annotations)
Thu Apr 24 04:32:25 2003 UTC (11 years ago) by kaz
Branch: mcvs-1-0-branch
CVS Tags: mcvs-1-0-7
Changes since 1.205.2.69: +13 -0 lines
New commands, sync-from-cvs and sync-to-cvs.

* code/mcvs-main.lisp (*sync-to-cvs-options*, *sync-from-cvs-options*):
New option constants.
(*mcvs-command-table*): New entries.
(*usage*): New help text.

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

  ViewVC Help
Powered by ViewVC 1.1.5