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

  ViewVC Help
Powered by ViewVC 1.1.5