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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.263 - (show annotations)
Tue Apr 22 06:28:16 2003 UTC (10 years, 11 months ago) by kaz
Branch: MAIN
Changes since 1.262: +25 -0 lines
Merging from mcvs-1-0-branch.

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

  ViewVC Help
Powered by ViewVC 1.1.5