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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.318 - (show annotations)
Sat Mar 8 02:53:34 2008 UTC (6 years, 1 month ago) by kaz
Branch: MAIN
CVS Tags: mcvs-1-1-98
Changes since 1.317: +11 -0 lines
Reshuffle documentation files around.

* SCRIPTING: moved to docs/misc-text-files subdirectory.
* PORTING: Likewise.
* QUICK-GUIDE: Likewise.
* docs/Meta-CVS-Paper: Likewise.

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

  ViewVC Help
Powered by ViewVC 1.1.5