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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.294 - (show annotations)
Fri Nov 24 05:04:27 2006 UTC (7 years, 4 months ago) by kaz
Branch: MAIN
Changes since 1.293: +11 -0 lines
Get rid of the ffi-pointer-null stuff, since c-pointer foreign types
are automatically converted to null now.

* code/clisp-ffi.lisp (null-pointer-p): Function removed.

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

  ViewVC Help
Powered by ViewVC 1.1.5