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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.269 - (show annotations)
Sun May 25 16:11:31 2003 UTC (10 years, 10 months ago) by kaz
Branch: MAIN
Changes since 1.268: +7 -0 lines
Merging from mcvs-1-0-branch.

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

  ViewVC Help
Powered by ViewVC 1.1.5