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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.265 - (show annotations)
Thu Apr 24 04:14:41 2003 UTC (10 years, 11 months ago) by kaz
Branch: MAIN
Changes since 1.264: +31 -0 lines
Merging from mcvs-1-0-branch.

Improved error handling again in a flash of sanity. The whole
idea of ``bail'' as a restart is gone. All code which must perform
some complex cleanup action does so as part of normal unwinding.
And so termination becomes safe.

* code/update.lisp (mcvs-update): Change bail restart to continue.

* code/mcvs-main.lisp (*global-options*): Remove "error-bail".
(*usage*): Remove description of --error-bail.
(mcvs-execute): Bind *mcvs-error-treatment* to :terminate rather
than :bail if controlling TTY cannot be opened.

* code/move.lisp (mcvs-move): Change "Undoing move" error message
to "Undoing changes to map".

* code/add.lisp (mcvs-add): Get rid of bail restart; move cleanup
code into unwind-protect block.

* code/error.lisp (*mcvs-error-treatment*): Touch up docstring.
(mcvs-error-handler): Remove anything having to do with :bail.
Change description of `T' command to suggest that it is safe.

* code/options.lisp (filter-mcvs-options): Remove handling of
"error-bail" option.

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

  ViewVC Help
Powered by ViewVC 1.1.5