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

  ViewVC Help
Powered by ViewVC 1.1.5