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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.249 - (show annotations)
Fri Feb 21 06:48:43 2003 UTC (11 years, 1 month ago) by kaz
Branch: MAIN
Changes since 1.248: +15 -0 lines
Merging from mcvs-1-0-branch.

Fix remaining occurences of SIG_IGN action for SIGCHLD being
passed to child processes.

* code/unix-bindings/unix.lisp (unix-funcs:default-sigchld): New call
out function.

* code/clisp-unix.lisp (with-input-from-program,
with-output-to-program): Call the new default-sigchild function
to set SIGCHILD signal handler to SIG_DFL just before creating
the pipe.

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

  ViewVC Help
Powered by ViewVC 1.1.5