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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.254 - (show annotations)
Sun Mar 2 06:57:28 2003 UTC (11 years, 1 month ago) by kaz
Branch: MAIN
Changes since 1.253: +8 -0 lines
Merging from mcvs-1-0-branch.

* code/restart.lisp (super-restart-case-expander): New function.
(super-restart-case): New macro.

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

  ViewVC Help
Powered by ViewVC 1.1.5