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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.260 - (hide annotations)
Sun Apr 13 14:39:10 2003 UTC (11 years ago) by kaz
Branch: MAIN
Changes since 1.259: +61 -0 lines
Merging from mcvs-1-0-branch.

* code/mapping.lisp (mapping-read): Provide a restart for
file errors, which lets the user interactively substitute an
empty map if the file can't be read. This is intended to handle
the case when MCVS/MAP is missing; for example, the user
updated to a sticky date for which no revision of the MAP
exists. The effect of continuing will be that all files
will disappear.
(mapping-synchronize): New :direction key
parameter, passed down to synchronize-filed. The new :no-sync
return value from synchronize-files is handled.
(mapping-update): Select the :right direction for synchronizing
moves, adds or rollbacks.

Revamped the synchronization logic. Synchronization now happens
in a specific direction.  For example, if we are doing a diff,
we just need to push changes from the tree to the MCVS directory,
not the other way around. Or: before an update or commit, we push from
the tree to MCVS, then after the update, in the other direction.

* code/update.lisp (mcvs-update): The before update is done
in the :left direction only, and the after update in the :right.

* code/move.lisp (mcvs-move): The just-in-case sync is done
in the :left direction only.

* code/link.lisp (mcvs-link): Likewise.

* code/remove.lisp (mcvs-remove): Likewise.

* code/add.lisp (mcvs-add): Get rid of mapping-synchronize call;
it's completely unnecessary, since the new files are not even
in the MAP-LOCAL, and the add logic explicitly links them into
the MCVS directory.

* code/generic.lisp (mcvs-generic): New keyword parameter,
need-sync-before. Before-synchronization done in :left direction,
after-synchronization in :right direction. Before-synchronization
is now not done by default; need-sync-before must be specified.
(mcvs-commit-wrapper): Specify before and after sync.
(mcvs-diff-wrapper, mcvs-status-wrapper,
mcvs-edit-wrapper): Explicitly specify before sync.
(mcvs-tag-wrapper, mcvs-annotate-wrapper): Implicitly specify no sync.
(mcvs-unedit-wrapper): Add before sync.

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

  ViewVC Help
Powered by ViewVC 1.1.5