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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.5