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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.317 - (show annotations)
Sat Mar 8 02:43:16 2008 UTC (6 years, 1 month ago) by kaz
Branch: MAIN
Changes since 1.316: +18 -0 lines
Implement -x option.
Allow repetitions of -i.

* code/main.lisp (*global-options*): Add "x" as a 1 arg option.
(*usage*): Describe -x in help text.
(execute): Execute all forms in the newly introduced *exec-list*
before invoking the command (if there is one). Only complain about a
missing command if the *exec-list* is empty.

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

  ViewVC Help
Powered by ViewVC 1.1.5