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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.5