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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.176 - (show annotations)
Tue Sep 17 03:34:24 2002 UTC (11 years, 7 months ago) by kaz
Branch: MAIN
CVS Tags: mcvs-0-95
Changes since 1.175: +13 -0 lines
* code/mcvs-main.lisp (*checkout-options*): Removed -A and -N
options.
(*mcvs-command-table*): Added help for checkout and add.

* code/checkout.lisp (*checkout-help*): New string constant.

* code/add.help (*add-help*): Likewise.

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

  ViewVC Help
Powered by ViewVC 1.1.5