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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.5