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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.5