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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.247 - (show annotations)
Thu Feb 13 07:22:35 2003 UTC (11 years, 2 months ago) by kaz
Branch: MAIN
CVS Tags: mcvs-1-0-3
Changes since 1.246: +20 -0 lines
Merging from mcvs-1-0-branch.

New --up option added for escaping out of nested sandboxes.

* code/mcvs-main.lisp (*cvs-options*): Added "up" 1 arg option.

* code/options.lisp (*nesting-escape-option*): New global,
default value 0.
(filter-mcvs-options): Filter new option, parse out and validate
integer argument.

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

  ViewVC Help
Powered by ViewVC 1.1.5