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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.5