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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.299 - (show annotations)
Mon Nov 27 02:25:07 2006 UTC (7 years, 4 months ago) by kaz
Branch: MAIN
Changes since 1.298: +12 -0 lines
Fix for new issue. CLISP now sets up some restarts, which ANSI
CL allows. Meta-CVS previously assumed that if there are any
restarts visible, they were set up by Meta-CVS itself. The
manifestation of this problem is that there is /always/ a menu,
even for trivial errors which should just terminate.

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

  ViewVC Help
Powered by ViewVC 1.1.5