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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.157.2.4 - (show annotations)
Sun Aug 25 18:20:44 2002 UTC (11 years, 7 months ago) by kaz
Branch: symlink-branch
Changes since 1.157.2.3: +25 -2 lines
* code/add.lisp (mcvs-add): Change to new mapping-entry data structure
and handle symbolic links.

* code/types.lisp (types-remove-ignores, types-make-cvs-adds):
Change to new mapping-entry data structure.

* code/mapping.lisp (mapping-generate-name): Renamed to
mapping-generate-id. Interface changes slightly.
(mapping-extract-kind): New function, factored out from mcvs-generic.
(mapping-update): Unlink existing symbolic link before
re-linking it.

* code/convert.lisp (mcvs-convert): Use new name and interface
of mapping-generate-name function.

* code/create.lisp (mcvs-create): Likewise.

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

  ViewVC Help
Powered by ViewVC 1.1.5