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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.205.2.41 - (show annotations)
Sun Jan 26 00:44:10 2003 UTC (11 years, 2 months ago) by kaz
Branch: mcvs-1-0-branch
Changes since 1.205.2.40: +11 -0 lines
* code/unix-bindings/wrap.c (mcvs_getcwd): If getcwd() returns
NULL, it only means that the buffer is too small if errno is also
set to ERANGE. This second condition was not being tested.

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

  ViewVC Help
Powered by ViewVC 1.1.5