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

  ViewVC Help
Powered by ViewVC 1.1.5