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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.239 - (hide annotations)
Thu Jan 16 05:07:21 2003 UTC (11 years, 3 months ago) by kaz
Branch: MAIN
Changes since 1.238: +10 -0 lines
Merging from mcvs-1-0-branch.

* code/unix-bindings/impl.c: File renamed to wrap.c.
(impl_null_pointer_p, impl_get_errno, impl_set_errno, impl_readdir,
impl_readlink, impl_stat, impl_lstat, impl_fstat, impl_getcwd,
impl_spawn): Prefix changed from ``impl_'' to ``mcvs_''.

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

  ViewVC Help
Powered by ViewVC 1.1.5