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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.320 - (show annotations)
Mon Mar 10 00:01:36 2008 UTC (6 years, 1 month ago) by kaz
Branch: MAIN
Changes since 1.319: +14 -0 lines
Update to ASDF from CLKD project (and fix a bug).

* asdf/asdf.lisp: Updated
(component-pathname (component)): Handle case when parent directory
is empty, in which case :RELATIVE must be explicitly added to the
directory passed to make-pathname. The original ADJOIN code looked
fine.

* code/mcvs.asd: Change package references from asdf to zxcv.

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

  ViewVC Help
Powered by ViewVC 1.1.5