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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.5