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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.5