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

  ViewVC Help
Powered by ViewVC 1.1.5