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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.255 - (show annotations)
Sun Mar 2 07:23:08 2003 UTC (11 years, 1 month ago) by kaz
Branch: MAIN
Changes since 1.254: +7 -0 lines
Merging from mcvs-1-0-branch.

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

  ViewVC Help
Powered by ViewVC 1.1.5