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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.205.2.63 - (hide annotations)
Sun Apr 13 06:22:43 2003 UTC (11 years ago) by kaz
Branch: mcvs-1-0-branch
Changes since 1.205.2.62: +51 -0 lines
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.

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

  ViewVC Help
Powered by ViewVC 1.1.5