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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.5