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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.173 - (show annotations)
Thu Sep 12 02:57:26 2002 UTC (11 years, 7 months ago) by kaz
Branch: MAIN
Changes since 1.172: +9 -0 lines
Implement help text for create command.

* code/mcvs-main.lisp (mcvs-help): Fixes.
(*mcvs-command-table*): Add *create-help*.

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

  ViewVC Help
Powered by ViewVC 1.1.5