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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.5