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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.5