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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.288 - (show annotations)
Mon Jul 26 05:35:49 2004 UTC (9 years, 8 months ago) by kaz
Branch: MAIN
Changes since 1.287: +7 -0 lines
Merging from mcvs-1-0-branch.

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

  ViewVC Help
Powered by ViewVC 1.1.5