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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.5