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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.5