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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.205.2.32 - (hide annotations)
Tue Dec 3 07:21:05 2002 UTC (11 years, 4 months ago) by kaz
Branch: mcvs-1-0-branch
Changes since 1.205.2.31: +15 -0 lines
Discontinuing use of CLISP's ext:run-program function in favor
of a new workalike which doesn't rely on the shell interpreter.

* code/unix-bindings/unix.lisp (unix-funcs:spawn): New C call out
function (unix-funcs:run-program): New function, implemented using
spawn.

* code/unix-bindings/impl.c (impl_spawn): New function; wraps
up fork, execvp and waitpid.

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

  ViewVC Help
Powered by ViewVC 1.1.5