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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.235 - (show annotations)
Thu Jan 2 04:02:51 2003 UTC (11 years, 3 months ago) by kaz
Branch: MAIN
Changes since 1.234: +8 -0 lines
Merging from mcvs-1-0-branch.

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

  ViewVC Help
Powered by ViewVC 1.1.5