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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.205.2.86 - (show annotations)
Thu Jan 29 04:53:12 2004 UTC (10 years, 2 months ago) by kaz
Branch: mcvs-1-0-branch
Changes since 1.205.2.85: +16 -0 lines
Fixes to convert command to make it useable.

* code/posix.lisp (suffix): Return dir name as additional value.
(execute-program-xargs): In the case that there are no variable
args passed, the fixed trailing args should still be passed
to the command.

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

  ViewVC Help
Powered by ViewVC 1.1.5