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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.5