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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.250 - (show annotations)
Sun Feb 23 18:59:33 2003 UTC (11 years, 2 months ago) by kaz
Branch: MAIN
Changes since 1.249: +5 -0 lines
Merging from mcvs-1-0-branch.

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

  ViewVC Help
Powered by ViewVC 1.1.5