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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.5