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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.5