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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.5