/[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.40 - (show annotations)
Thu Jan 16 05:06:08 2003 UTC (11 years, 3 months ago) by kaz
Branch: mcvs-1-0-branch
Changes since 1.205.2.39: +10 -0 lines
* code/unix-bindings/impl.c: File renamed to wrap.c.
(impl_null_pointer_p, impl_get_errno, impl_set_errno, impl_readdir,
impl_readlink, impl_stat, impl_lstat, impl_fstat, impl_getcwd,
impl_spawn): Prefix changed from ``impl_'' to ``mcvs_''.

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

  ViewVC Help
Powered by ViewVC 1.1.5