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

  ViewVC Help
Powered by ViewVC 1.1.5