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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.323 - (show annotations)
Tue Mar 11 05:24:30 2008 UTC (6 years, 1 month ago) by kaz
Branch: MAIN
Changes since 1.322: +13 -0 lines
First cut at IA-64 support.

* Makefile (ARCH): New variable, captures output of arch program.
Arch, prefixed with "ARCH-" is pushed onto *FEATURES* list.

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

  ViewVC Help
Powered by ViewVC 1.1.5