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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.296 - (show annotations)
Fri Nov 24 06:47:12 2006 UTC (7 years, 4 months ago) by kaz
Branch: MAIN
Changes since 1.295: +22 -0 lines
Introduce mcvs-debug tool for reproducing Meta-CVS problems in
a debugging environment.

* code/main.lisp (mcvs-execute): The setup of *interactive-error-io*
and *mcvs-error-treatment* is no longer done here, but in the caller.
Setting these here interferes with debugging.
(mcvs-debug-shell): Removed.
(main): Dependency on CLISP removed. Sets up *interactive-error-io*
and *mcvs-error-treatment* as mcvs-execute did previously.
Return value from mcvs-execute is now ignored.
(main-debug): New function. Sets *interactive-error-io* to
*terminal-io*, and *mcvs-error-treatment* to :decline.
Otherwise behaves like main.

* code/install.sh: Create mcvs-debug.mem in lib directory, and
mcvs-debug in bin directory. In mcvs-debug, the debugger is enabled
by passing ``-on-debug debug'' to CLISP.

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

  ViewVC Help
Powered by ViewVC 1.1.5