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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.205.2.67 - (show annotations)
Tue Apr 22 05:53:42 2003 UTC (10 years, 11 months ago) by kaz
Branch: mcvs-1-0-branch
Changes since 1.205.2.66: +25 -0 lines
Slightly redesigned error handling protocol.

* code/update.lisp (mcvs-update): Change continue restart to bail.

* code/add.lisp (mcvs-add): Likewise.

* code/error.lisp (mcvs-error-handler): Specially recognize two
additional restart symbols, bail and info. A bail restart performs
any rolling back and cleanup and terminates. Continuation is now
properly reserved for actions that proceed boldly to finish
the job, possibly irretrievably clobbering precious data.
The info restart is now a standard way to indicate that more
details about the error can be obtained, so this does not have
to be represented as a special action with an ad-hoc restart.

* code/create.lisp (mcvs-create): Change show restart to info.

* code/remap.lisp (mcvs-remap): Change ignore restart to continue.

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

  ViewVC Help
Powered by ViewVC 1.1.5