/[meta-cvs]/meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3
ViewVC logotype

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.244 - (show annotations)
Tue Feb 4 14:56:09 2003 UTC (11 years, 2 months ago) by kaz
Branch: MAIN
Changes since 1.243: +13 -0 lines
Merging from mcvs-1-0-branch.

Make tag command work on whole tree if no arguments are given,
just like commit.

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

  ViewVC Help
Powered by ViewVC 1.1.5