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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.236 - (show annotations)
Sun Jan 12 20:52:30 2003 UTC (11 years, 3 months ago) by kaz
Branch: MAIN
Changes since 1.235: +10 -0 lines
Merging from mcvs-1-0-branch.

Hard link sync optimization.

* code/mapping.lisp (mapping-synchronize): New optional parameter,
specifies map to use instead of reading *map-local*.

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

  ViewVC Help
Powered by ViewVC 1.1.5