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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.266 - (show annotations)
Thu Apr 24 04:33:15 2003 UTC (11 years ago) by kaz
Branch: MAIN
Changes since 1.265: +13 -0 lines
Merging from mcvs-1-0-branch.

New commands, sync-from-cvs and sync-to-cvs.

* code/mcvs-main.lisp (*sync-to-cvs-options*, *sync-from-cvs-options*):
New option constants.
(*mcvs-command-table*): New entries.
(*usage*): New help text.

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

  ViewVC Help
Powered by ViewVC 1.1.5