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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.324 - (show annotations)
Tue Mar 11 06:24:28 2008 UTC (6 years, 1 month ago) by kaz
Branch: MAIN
CVS Tags: HEAD
Changes since 1.323: +13 -0 lines
Clean-up stat-related FFI.

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

  ViewVC Help
Powered by ViewVC 1.1.5