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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.181 - (show annotations)
Sat Sep 21 18:23:33 2002 UTC (11 years, 6 months ago) by kaz
Branch: MAIN
Changes since 1.180: +6 -0 lines
* code/mcvs-main.lisp (*mcvs-command-table*): Added help for remove.

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

  ViewVC Help
Powered by ViewVC 1.1.5