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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.117 - (show annotations)
Fri Jun 28 21:39:49 2002 UTC (11 years, 9 months ago) by kaz
Branch: MAIN
Changes since 1.116: +23 -0 lines
* grab.lisp (read-word-hash): Use #'equalp test for case-insensitive
string comparisons.
(added-removed): Use string< instead of string-lessp for comparing
paths.
(determine-common-words, eliminate-common-words): New functions.
(move-candidates): Acceptance threshold reduced to 50%, since
elimination of common words reduces the similarity correlation.
(mcvs-grab): Use string< instead of string-lessp when sorting paths.
Do the common words computation.

* mapping.lisp (mapping-dupe-check, mapping-write,
mapping-difference): Use string< instead of string-lessp.
1 2002-06-27 Kaz Kylheku <kaz@ashi.footprints.net>
2
3 Word comparisons are case-insensitive in mcvs grab now.
4 Also, common words are determined and eliminated from the correlation.
5 Common words are those that appear in at least 5 of the
6 added or removed files, or 20% of them, whichever is greater.
7
8 Noticed some unnecessary use of string-lessp on F-file names in
9 mapping.lisp.
10
11 * grab.lisp (read-word-hash): Use #'equalp test for case-insensitive
12 string comparisons.
13 (added-removed): Use string< instead of string-lessp for comparing
14 paths.
15 (determine-common-words, eliminate-common-words): New functions.
16 (move-candidates): Acceptance threshold reduced to 50%, since
17 elimination of common words reduces the similarity correlation.
18 (mcvs-grab): Use string< instead of string-lessp when sorting paths.
19 Do the common words computation.
20
21 * mapping.lisp (mapping-dupe-check, mapping-write,
22 mapping-difference): Use string< instead of string-lessp.
23
24 2002-06-27 Kaz Kylheku <kaz@ashi.footprints.net>
25
26 * memoize.lisp (factor-memo-labels): New function, rips apart
27 functions generated by memoize-expander, in order to factor
28 out the multi-hash defining let blocks.
29 (memoized-labels): Interface corrected. Also, use new function to
30 generate a labels block that allows for mutually recursive memoized
31 functions which preserve hash contents across arbitrarily mutually
32 recursive calls. This is done by enclosing the functions in one big
33 let block which binds all the hashes.
34
35 2002-06-27 Kaz Kylheku <kaz@ashi.footprints.net>
36
37 * seqfuncs.lisp (lcs-list): Specify #'eq test for memoization
38 parameters.
39
40 2002-06-27 Kaz Kylheku <kaz@ashi.footprints.net>
41
42 Adding some cool code: a multi-hash datatype which implements
43 multi-dimensional sparse arrays using a tree of hash tables,
44 and a function memoizer which uses multi hash to index on
45 function arguments.
46
47 * multi-hash.lisp (multi-hash): New class.
48 (initialize-instance): New method on multi-hash.
49 (multi-hash-common-code): New macro.
50 (get-multi-hash, set-multi-hash): New functions.
51
52 * memoize.lisp (define-memoized-function,
53 memoized-labels): New macros.
54 (remove-key-aux-rest strip-lambda-list, extract-tests,
55 remove-tests, memoize-expander): New functions.
56
57 * seqfuncs.lisp (lcs-list): Function is now correctly
58 memoized using define-memoized-function.
59
60 2002-06-26 Kaz Kylheku <kaz@ashi.footprints.net>
61
62 * grab.lisp (read-word-hash): Memory use optimizations: use smaller
63 initial size for tokens; re-use the same token object when the
64 hash already contains a duplicate.
65 (correlate): Renamed to correlate-word-hashes.
66 (correlate-paths): New function; computes a confidence-reducing
67 factor based on the differences between two paths.
68 (move-candidates): Use correlate-paths to lower the confidence
69 for distant moves. This could help sort out ambiguities when
70 projects contain very similar or duplicate files which are subject
71 to parallel moves.
72
73 * seqfuncs.lisp (lcs-list, lcs-vector,
74 longest-common-subsequence): New functions.
75
76 2002-06-25 Kaz Kylheku <kaz@ashi.footprints.net>
77
78 New feature: grab command. Takes snapshot of code and imports
79 it to a branch, trying to determine which of the added and
80 removed files are actually moves.
81
82 * grab.lisp: New file.
83 (read-word-hash, word-hash-file, correlate, added-removed,
84 move-candidates, mcvs-grab, mcvs-grab-wrapper): New functions.
85
86 * mcvs-main.lisp (*grab-options*): New constant.
87 (*mcvs-command-table*): New entry.
88 (*usage*): New text.
89
90 * checkout.lisp (mcvs-checkout): Write out MAP-LOCAL even
91 if :no-generate t is specified.
92
93 2002-06-24 Kaz Kylheku <kaz@ashi.footprints.net>
94
95 * checkout.lisp (mcvs-checkout): New key parameter, no-generate.
96 Tells the checkout function not to unpack the MCVS directory.
97 This will be useful when mcvs-checkout is used as a subfunction
98 of the new grab command. Failed CVS call is now turned into
99 an error. The MCVS subdirectory is *always* deleted, even if the
100 checkout did not create the checkout directory.
101
102 2002-06-24 Kaz Kylheku <kaz@ashi.footprints.net>
103
104 * dirwalk.lisp (dirwalk-fi): Bugfix: top call was not
105 passing down keyword parameters to recursive call.
106
107 2002-06-23 Kaz Kylheku <kaz@ashi.footprints.net>
108
109 * posix.lisp (canonicalize-path): Use concatenate-string
110 instead of format.
111
112 2002-06-23 Kaz Kylheku <kaz@ashi.footprints.net>
113
114 * posix.lisp (parse-posix-namestring): Clean rewrite.
115
116 2002-06-23 Kaz Kylheku <kaz@ashi.footprints.net>
117
118 The ``import'' command is renamed to ``create''.
119
120 * mcvs.main (*create-options*): Renamed to *import-options*.
121 (*mcvs-command-table*): Updated.
122 (*usage*): Updated.
123
124 * import.lisp: File renamed to create.lisp.
125 (mcvs-import): Renamed to mcvs-create; some arguments renamed.
126 (mcvs-import-wrapper): Renamed to mcvs-create-wrapper.
127
128 * README: Updated.
129
130 2002-06-22 Kaz Kylheku <kaz@ashi.footprints.net>
131
132 * split.lisp (split-fields): Optimized to extract tokens directly
133 from the input string using subseq rather than construct them
134 character by character.
135
136 2002-06-22 Kaz Kylheku <kaz@ashi.footprints.net>
137
138 * find-bind.lisp (find-bind): Use #'values instead of #'(lambda (x) x).
139
140 2002-06-21 Kaz Kylheku <kaz@ashi.footprints.net>
141
142 * clisp-linux.sh (:clisp-old): Added to *features*
143 for CLISP 2.28 or higher.
144 (*null-pointer*): Only defined when :clisp-old is present.
145 (pointer-null): Use new ffi:foreign-pointer-null if :clisp-old
146 feature is not present.
147
148 * install.sh: Don't do *null-pointer* workaround hack
149 unless :clisp-old feature is present in the memory image.
150
151 2002-06-21 Kaz Kylheku <kaz@ashi.footprints.net>
152
153 * types.lisp (types-make-cvs-adds): Serious bugfix. Forgot
154 to strip MCVS/ prefix from those F- files which don't match
155 any type entries. This caused cvs add to fail for unsuffixed
156 files.
157
158 2002-06-08 Kaz Kylheku <kaz@ashi.footprints.net>
159
160 * types.lisp (types-to-import-wrapper-args): Don't use backquote
161 template to generate a list that will be destructively catenated
162 by mapcan.
163
164 2002-05-22 Kaz Kylheku <kaz@ashi.footprints.net>
165
166 * checkout.lisp (mcvs-checkout): If a checkout directory is
167 created and then the CVS checkout fails, the directory is
168 then removed.
169
170 2002-05-20 Kaz Kylheku <kaz@ashi.footprints.net>
171
172 * find-bind.lisp (find-bind-extract-vals, find-bind): Process default
173 values in find-bind-extract-vals, instead of in the expansion of
174 find-bind, thereby reducing some macro bloat.
175
176 2002-05-20 Kaz Kylheku <kaz@ashi.footprints.net>
177
178 * remap.lisp (mcvs-remap): Loads MAP as well as MAP-LOCAL.
179 If it the mappings differ, an error is signaled. The user can choose
180 to ignore the error, in which case MAP is clobbered.
181
182 2002-05-20 Kaz Kylheku <kaz@ashi.footprints.net>
183
184 Adding mcvs remap command.
185
186 * dirwalk.lisp (dirwalk-fi, dirwalk, for-each-file-info): Default
187 behavior is now preorder (visit directory before its entries).
188 A keyword is provided to select the old postorder behavior.
189 A catch is provided in dirwalk-fi that allows the caller to
190 skip processing the currently traversed directory. The for-each-*
191 macros provide a local function called (skip) to do this.
192 (delete-recursive): This function depends on postorder behavior
193 in for-each-file-info, so it explicitly selects it now.
194
195 * mcvs.lisp (*remap-options*): New constant.
196 (*mcvs-command-table*): Add entry for new function.
197 (*usage*): Describes new function.
198
199 * remap.lisp: New file.
200 (mcvs-remap, mcvs-remap-wrapper): New functions.
201
202 2002-05-15 Kaz Kylheku <kaz@ashi.footprints.net>
203
204 * sync.lisp (synchronize-files): Signal an error when the two files
205 to be synchronized have the same time stamp. Provide two restarts
206 for doing the synchronization either way.
207
208 2002-05-06 Kaz Kylheku <kaz@ashi.footprints.net>
209
210 * mapping.lisp (in-sandbox-root-dir): Fix symbol macro
211 sandbox-down-path; it was referring to the (quote #:DOWNPATH-NNN)
212 rather than #:DOWNPATH-NNN.
213
214 2002-05-04 Kaz Kylheku <kaz@ashi.footprints.net>
215
216 * import.lisp (mcvs-import): Specify -I ! argument to cvs import
217 so that it does not ignore any F- files.
218
219 2002-05-04 Kaz Kylheku <kaz@ashi.footprints.net>
220
221 * mapping.lisp (mapping-update): Provide restart that allows
222 user to ignore file removal error.
223
224 2002-04-19 Kaz Kylheku <kaz@ashi.footprints.net>
225
226 Porting to CMUCL.
227
228 * system.lisp: Conditionally load new module cmucl-unix.
229
230 * mapping.lisp (mapping-dupe-check, mapping-write,
231 mapping-difference): Fixes related to sort function; we were
232 relying on CLISP's preservation of the cons cell order.
233
234 * cmucl-unix.lisp: New file.
235
236 2002-04-17 Kaz Kylheku <kaz@ashi.footprints.net>
237
238 * checkout.lisp (mcvs-checkout): Allow -d to specify current
239 directory as the checkout directory. Do not complain if the
240 target directory exists, just try to use it anyway,
241 unless it is the root of an existing Meta-CVS sandbox. Use
242 the mapping-update function to update the sandbox.
243 These changes allow a Meta-CVS sandbox to blend with an existing
244 directory structure, a useful feature.
245
246 2002-04-17 Kaz Kylheku <kaz@ashi.footprints.net>
247
248 * generic.lisp (mcvs-generic): Change how empty file argument list
249 is handled. Rather than rewriting it to '(".") we do a proper
250 map-prefix-lookup. Synchronizing and invoking CVS is elided
251 if the resulting list of files to process is empty and the --nometa
252 option is specified.
253
254 2002-04-16 Kaz Kylheku <kaz@ashi.footprints.net>
255
256 * branch.lisp (parse-sticky): New function.
257 (read-cvs-entries): New function.
258 (same-tag-check): New function.
259 (what-tag-are-we-on): Renamed to what-are-we-sticky-to. Calls
260 parse-sticky to return structured tag.
261 (mcvs-merge): Make use of structured tags.
262 (mcvs-list-branches): Make use of structured tags. Indicate
263 when sandbox is inconsistently sticky.
264
265 2002-04-16 Kaz Kylheku <kaz@ashi.footprints.net>
266
267 * remove.lisp (mcvs-remove): Corrected careless bracketing
268 introduced on 2002-03-15 that rendered this function ineffective.
269
270 2002-04-04 Kaz Kylheku <kaz@ashi.footprints.net>
271
272 Absolute paths resolved against sandbox root.
273
274 * posix.lisp (path-absolute-p): New function. Predicate to
275 test whether a path is absolute.
276
277 * mapping.lisp (in-sandbox-root-dir): sandbox-translate-paths
278 function detects absolute path, and treats it as relative to
279 sandbox root.
280
281 2002-04-04 Kaz Kylheku <kaz@ashi.footprints.net>
282
283 New switch command added, plus sticky tag related
284 bugfixes and enhancement of mcvs list-branches.
285
286 mcvs-main.lisp (*switch-options*): New constant.
287 (*mcvs-command-table*): New entries.
288 (*usage*): New help text.
289
290 branch.lisp (what-branch-are-we-on): Function renamed to
291 what-tag-are-we-on. Tests the first letter which is T or N; if
292 it is not T, then it's not a branch tag. If there is a tag,
293 it returns two values; the second value is NIL if it is not
294 a branch tag, T otherwise.
295 (mcvs-merge): Modified to use what-tag-are-we-on.
296 (mcvs-list-branches): Show additional information about the
297 current sticky tag.
298 (mcvs-merge-wrapper): Fix wrong parenthesization introduced
299 earlier today.
300 (mcvs-switch-wrapper): New function.
301
302 2002-04-04 Kaz Kylheku <kaz@ashi.footprints.net>
303
304 * branch.lisp (branch-tag-check): Check reserved symbol HEAD.
305
306 2002-04-04 Kaz Kylheku <kaz@ashi.footprints.net>
307
308 New command to list branches.
309
310 * mcvs-main.lisp (*list-branches-options*): New constant.
311 (*mcvs-command-table*): Entries for new command added.
312 (*usage*): Help text added.
313
314 * branch.lisp (mcvs-list-branches,
315 mcvs-list-branches-wrapper): New functions.
316
317 2002-04-03 Kaz Kylheku <kaz@ashi.footprints.net>
318
319 * branch.lisp (where-is-the-repository): New function.
320 (cvs-make-or-advance-tag): Pass down CVSROOT to cvs rtag using
321 the -d global option.
322
323 2002-04-03 Kaz Kylheku <kaz@ashi.footprints.net>
324
325 * branch.lisp (what-module-is-this): New function.
326 (cvs-make-or-advance-tag): Use rtag rather than tag for tagging
327 the branch being merged. This fixes the failure to merge added files.
328 (mcvs-merge): Use mcvs-update rather than directly using cvs.
329
330 2002-04-02 Kaz Kylheku <kaz@ashi.footprints.net>
331
332 Implemented remerge command; redo a merge without moving
333 around any tags.
334
335 * branch.lisp (mcvs-merge): New keyword parameter remerge-p
336 to indicate that a re-merge should be done, plus logic for
337 doing so.
338 (mcvs-remerge-wrapper): New function.
339
340 * mcvs-main.lisp (*remerge-options*): New constant.
341 (*mcvs-command-table*): New entry for remerge command.
342
343 2002-04-02 Kaz Kylheku <kaz@ashi.footprints.net>
344
345 First cut at implementing more automated branching and merging.
346
347 * mcvs-main.lisp (*branch-options*, *merge-options*): New constants.
348 (*mcvs-command-table*): New entries for branch and merge commands.
349 (*usage*): New help text.
350
351 * branch.lisp: New file.
352 (*branch-char*): New constant.
353 (tags-from-cvs-log, what-branch-are-we-on, branch-tag-check,
354 mcvs-branch, mcvs-branch-wrapper, cvs-make-or-advance-tag, mcvs-merge,
355 mcvs-merge-wrapper): New functions.
356
357 2002-04-01 Kaz Kylheku <kaz@ashi.footprints.net>
358
359 checkout.lisp (mcvs-checkout): Emit informational message
360 when checkout completes, because it's not obvious what directory
361 was just created.
362
363 2002-02-38 Kaz Kylheku <kaz@ashi.footprints.net>
364
365 Error checking added to mcvs move: verifies that all
366 sources exist and are known to Meta-CVS.
367
368 * move.lisp (source-check): New function.
369 (simple-rename, simple-move-to-dir): Use new function.
370
371 2002-03-20 Kaz Kylheku <kaz@ashi.footprints.net>
372
373 * rcsparse.lisp: File renamed to rcs-utils.lisp.
374 (rcs-delta): New slot, delta-hash.
375 (rcs-make-delta-hash): New function.
376 (rcs-parse): Calls rcs-make-delta-hash to set up new slot.
377
378 * convert.lisp: require changed to match file rename.
379
380 2002-03-20 Kaz Kylheku <kaz@ashi.footprints.net>
381
382 Some new macros for slot access.
383
384 * slot-refs.lisp: New file.
385 (with-slot-refs): New macro.
386 (with-multi-slot-refs): New macro.
387
388 * rcsparse.lisp (rcs-parse-newphrases, rcs-parse-admin,
389 rcs-parse-delta): Replace uses
390 of symbol-macrolet by with-slot-refs and with-multi-slot-refs.
391
392 2002-03-19 Kaz Kylheku <kaz@ashi.footprints.net>
393
394 Adding delta parsing to RCS parser.
395
396 * rcsparse.lisp (rcs-delta): New struct.
397 (rcs-file): New slot, deltas.
398 (rcs-parse-newphrases): New function, factors out parsing of
399 ``newphrases'' syntactic element out of rcs-parse-admin.
400 (rcs-parse-admin): Use rcs-parse-newphrases.
401 (rcs-parse-delta, rcs-parse-deltas): New functions.
402 (rcs-parse): Parse both admin and deltas; store deltas in new
403 rcs-file slot.
404
405 2002-03-18 Kaz Kylheku <kaz@ashi.footprints.net>
406
407 * posix.lisp (parse-posix-namestring): New function. Converts POSIX
408 path to CL Path object.
409
410 * rcsparse.lisp: New file, implements RCS version file parser.
411 (rcs-admin, rcs-file, rcs-token, rcs-token-stream): New structs.
412 (rcs-peek-token, rcs-read-token): New generic functions.
413 (rcs-extract-id-sym-or-num, rcs-extract-string,
414 rcs-match-optional, rcs-match-token, rcs-parse, rcs-parse-admin,
415 rcs-special-p): New functions.
416
417 * convert.lisp (classify-tags): Work with association list rather
418 than raw strings.
419 (mcvs-convert): Use rcs-parse to extract tags. Fix call to
420 mapping-generate name. Use parse-posix-namestring when opening
421 version file. Generate informative chatter.
422
423 2002-03-15 Kaz Kylheku <kaz@ashi.footprints.net>
424
425 * remove.lisp (mcvs-remove): More detailed error checking.
426 Checks for remove attempts against MCVS/ area, removes of local
427 files not versioned under Meta-CVS, and nonexistent files.
428
429 2002-03-15 Kaz Kylheku <kaz@ashi.footprints.net>
430
431 * add.lisp (mcvs-add): Error message changed to tell user to use
432 -R to add directory.
433
434 * remove.lisp (mcvs-remove): New generalized boolean parameter
435 indicates to do a recursive remove. This is controlled by the
436 -R option which already exists. Behavior changed to not act
437 on directories unless recursion is explicitly requested.
438 (mcvs-remove-wrapper): Extract "R" option, pass down new boolean
439 to mcvs-remove.
440
441 2002-03-15 Kaz Kylheku <kaz@ashi.footprints.net>
442
443 * remove.lisp (mcvs-remove-wrapper): Remove bogus error check.
444
445 2002-03-14 Kaz Kylheku <kaz@ashi.footprints.net>
446
447 * checkout.lisp (mcvs-checkout): Bugfix: must use checkout-dir, not
448 module, when testing whether directory exists or was created properly.
449
450 2002-03-14 Kaz Kylheku <kaz@ashi.footprints.net>
451
452 Update takes file arguments now.
453
454 * update.lisp (mcvs-update): If filename arguments are given, then
455 just call mcvs-generic to do the work, but suppress the operation on
456 meta files. If no filename arguments are given, then update everything.
457 If the -p option is present, no synchronization is needed, before or
458 after.
459 (mcvs-update-wrapper): Pass command arguments down to mcvs-update.
460
461 * mcvs-main.lisp (*update-options*): Add "p" option.
462
463 * generic.lisp (mcvs-generic): New keyword parameter need-sync-after,
464 a generalized boolean which can tell the function to do a
465 mapping-synchronize after executing the CVS command.
466
467 2002-03-14 Kaz Kylheku <kaz@ashi.footprints.net>
468
469 * filt.lisp (filt-select-map): Do allow a date and revision to be
470 specified; the revision could be a branch tag.
471
472 2002-03-13 Kaz Kylheku <kaz@ashi.footprints.net>
473
474 * mapping.lisp (malformed-map): New function.
475 (mapping-dupe-check): Perform extra error checks when reading
476 mapping, and turn them into a condition with a ``nice'' error message.
477
478 2002-03-13 Kaz Kylheku <kaz@ashi.footprints.net>
479
480 * mcvs-filt.lisp (filt-select-map): Handle error gracefully
481 when reading map. It's easy to give CVS is a nonexistent tag.
482
483 2002-03-13 Kaz Kylheku <kaz@ashi.footprints.net>
484
485 The filt command takes arguments to select alternate revision
486 of map.
487
488 * mcvs-main.lisp (*filt-options*): New constant.
489 (*mcvs-command-table*): Updated with new options.
490 (mcvs-debug-shell): Restart name changed during debugging of filt
491 changes.
492
493 * filt.lisp (filt-select-map): New function. Loads either the
494 local mapping, or retrieves an alternate mapping from CVS based
495 on command line options.
496 (mcvs-filt): Use filt-select-map rather than mapping-read.
497
498 2002-03-13 Kaz Kylheku <kaz@ashi.footprints.net>
499
500 * generic.lisp (mcvs-generic): Add .cvsignore to the list of
501 metafiles.
502
503 2002-03-12 Kaz Kylheku <kaz@ashi.footprints.net>
504
505 * import.lisp (mcvs-import): Create a .cvsignore file for ignoring
506 MAP-LOCAL.
507
508 2002-03-12 Kaz Kylheku <kaz@ashi.footprints.net>
509
510 Fix trailing slash bug in mcvs mv.
511
512 * move.lisp (simple-move-to-dir): Canonicalize path after catenating
513 destination and file base name. This nukes a double slash if
514 we move to a name with a trailing slash.
515 (move-guts): Treat a destination name that has a trailing slash
516 as a directory, unless it exists already as a non-directory.
517
518 2002-03-12 Kaz Kylheku <kaz@ashi.footprints.net>
519
520 * mcvs-main.lisp (*cvs-options*): Added "error-terminate" and
521 "error-continue".
522 (*usage*): Update and reformat help text.
523 (mcvs-execute): Process "error-terminate" and "error-continue"
524 options.
525
526 2002-03-12 Kaz Kylheku <kaz@ashi.footprints.net>
527
528 * mapping.lisp (mapping-update): Messages related to moving,
529 adding or removing files promoted to terse level, so only -Q
530 can suppress them.
531
532 2002-03-12 Kaz Kylheku <kaz@ashi.footprints.net>
533
534 * update.lisp (mcvs-update): Changing level of chatter messages.
535 * move.lisp (mcvs-move): Likewise.
536 * add.lisp (mcvs-add): Likewise.
537 * remove.lisp (mcvs-remove): Likewise.
538 * checkout.lisp (mcvs-checkout): Likewise.
539 * generic.lisp (mcvs-generic): Likewise.
540 * import.lisp (mcvs-import): Likewise.
541 * mapping.lisp (mapping-dupe-check): Likewise.
542 (mapping-update): Likewise.
543
544 2002-03-12 Kaz Kylheku <kaz@ashi.footprints.net>
545
546 Support for -q, -Q and -e global options.
547
548 * posix.lisp (*editor*): New special variable.
549 (edit-file): Check *editor* variable; if not nil, use it.
550
551 * mcvs-main.lisp (*usage*): Update help text.
552 (mcvs-execute): Set *mcvs-chatter-level* according to -q or -Q.
553 Set *editor* if -e is specified.
554
555 2002-03-12 Kaz Kylheku <kaz@ashi.footprints.net>
556
557 * mcvs-main.lisp (*cvs-options*): Remove obsolete "a".
558 (*cvs-options-arg*): Add missing "r".
559 (*usage*): New constant, help text.
560 (mcvs-execute): Process help and version command line options.
561
562 2002-03-12 Kaz Kylheku <kaz@ashi.footprints.net>
563
564 * options.lisp (parse-opt): Make error messages more consistent.
565
566 2002-03-12 Kaz Kylheku <kaz@ashi.footprints.net>
567
568 * find-bind.lisp (find-bind): Make rem-var optional; sometimes
569 the user might not care about the remaining unmatched list.
570
571 2002-03-11 Kaz Kylheku <kaz@ashi.footprints.net>
572
573 * find-bind.lisp (find-bind): Documentation string change. Clarify
574 that default values are substituted whenever a variable would
575 otherwise be bound to the value NIL, even through an explicit
576 match.
577
578 2002-03-11 Kaz Kylheku <kaz@ashi.footprints.net>
579
580 Sane filtering of -d option in checkout.
581
582 * find-bind.lisp (find-bind): Variable bindings can specify
583 a third element, which provides a default value for any variables
584 that turn out NIL.
585
586 * checkout.lisp (mcvs-checkout): Filter out the -d dir option,
587 and use it to override the name of the checkout directory,
588 the way CVS checkout does it.
589
590 2002-03-11 Kaz Kylheku <kaz@ashi.footprints.net>
591
592 Bugfix: mcvs add was not processing existing :ignore's in MCVS/TYPES.
593
594 * add.lisp (mcvs-add): Use old types as well as new types
595 to filter for ignores.
596
597 2002-03-11 Kaz Kylheku <kaz@ashi.footprints.net>
598
599 * find-bind.lisp: New file.
600 (find-bind-extract-vals): New function.
601 (find-bind): New macro.
602
603 * error.lisp (restart-destructure): Macro removed.
604 (mcvs-error-handler): Uses generic find-bind instead of
605 restart-destructure.
606
607 2002-03-09 Kaz Kylheku <kaz@ashi.footprints.net>
608
609 * filt.lisp (mcvs-filt): Bugfix: do not stop processing line
610 if F- file name is not found in hash table.
611
612 2002-03-09 Kaz Kylheku <kaz@ashi.footprints.net>
613
614 Commit is handled through mcvs-generic, so it can take
615 filename arguments, and honor --nometa.
616
617 * commit.lisp: File removed.
618 (mcvs-commit): Function removed.
619 (mcvs-commit-wrapper): Moved to generic.lisp.
620
621 * generic.lisp (mcvs-commit-wrapper): Moved from commit.lisp,
622 changed to invoke mcvs-generic.
623 (mcvs-generic): Only add TYPES file to list if it actually
624 exists.
625
626 2002-03-09 Kaz Kylheku <kaz@ashi.footprints.net>
627
628 New --nometa command line option.
629
630 * mcvs-main.lisp (*cvs-options*): Add "nometa" to list.
631 (mcvs-execute): Filter global options to recognize
632 Meta-CVS-specific ones.
633
634 * options.lisp (*nometa-option*): New special variable.
635 (filter-global-options): New function.
636
637 * generic.lisp (mcvs-generic): Honor *nometa-option* special
638 variable.
639
640 2002-03-09 Kaz Kylheku <kaz@ashi.footprints.net>
641
642 * generic.lisp (mcvs-generic): Make sure TYPES file is
643 included in list of files.
644
645 2002-03-09 Kaz Kylheku <kaz@ashi.footprints.net>
646
647 * mcvs-main.lisp (*add-options*): Support -R option for add.
648 Thus, recursive add works now.
649
650 2002-03-09 Kaz Kylheku <kaz@ashi.footprints.net>
651
652 Fix mcvs filt so it handles suffixed F- files properly.
653
654 * filt.lisp (make-filt-hash): New function.
655 (mcvs-filt): After matching hex digits, also check for
656 a suffix match.
657
658 2002-02-17 Kaz Kylheku <kaz@ashi.footprints.net>
659
660 Support for file type keyword treatment under mcvs add.
661
662 * add.lisp (mcvs-add): Restructured to build up list of new file
663 suffixes, allow the user to edit the file which determines how
664 they are treated, filter out ignored files and pass -k options
665 to multiple cvs adds.
666
667 * types.lisp (*mcvs-new-types*): New constant.
668 (*types-comments*): Constant moved here from import.lisp.
669 (types-remove-ignores): New function. Code factored out from
670 mcvs-import.
671 (types-let-user-edit): Likewise.
672 (types-make-cvs-adds): New function.
673
674 * import.lisp (*types-comments*): Constant removed. Moved to
675 types.lisp
676 (mcvs-import): Code factored out to new functions in types.lisp, which
677 are also used by add.lisp.
678
679 2002-02-17 Kaz Kylheku <kaz@ashi.footprints.net>
680
681 * print.lisp: New file.
682 (print-assoc-list): New function.
683 * types.lisp: Use print-assoc-list to nicely print the types.
684 * import.lisp (mcvs-import): Don't bother getting user to
685 edit the types if the type list is empty. In fact, don't
686 even create the file.
687
688 2002-02-17 Kaz Kylheku <kaz@ashi.footprints.net>
689
690 * add.lisp (mcvs-add): Use new form of mapping-generate-name.
691
692 2002-02-17 Kaz Kylheku <kaz@ashi.footprints.net>
693
694 * import.lisp (mcvs-import): Fix broken restart for re-editing
695 the types file.
696 (*types-comments*): Drastically shorten the help text.
697
698 2002-02-16 Kaz Kylheku <kaz@ashi.footprints.net>
699
700 Support for filetypes in import.
701
702 * posix.lisp (suffix): Separator character parameter is optional;
703 multiple occurences of character lead to one big suffix like
704 ".tar.gz" instead of ".gz". A leading dot means it's not a suffix but
705 a hidden file like ".exrc".
706 (edit-file): New function, brings up text editor for specified file.
707
708 * clisp-linux.lisp (env-lookup): New function for environment
709 variable lookup.
710
711 * types.lisp: New source file.
712 (*mcvs-types-name*, *mcvs-types*): New constants for TYPES filename.
713 (types-read, types-write, types-sanity-check,
714 types-to-import-wrapper-args): New functions.
715
716 * import.lisp (*types-comments*): New constant.
717 (mcvs-import): Restructured to build up list of file suffixes,
718 allow the user to edit the file which determines how they
719 are treated, filter out ignored files and pass -W options to cvs import
720 to handle the rest. Failed cvs import is turned into restartable
721 condition.
722
723 * mapping.lisp (mapping-generate-name): Takes a suffix parameter.
724 The F-files now carry a suffix obtained from the original file,
725 because I have concluded that this was the only reasonable way
726 to integrate with CVS.
727
728 2002-02-16 Kaz Kylheku <kaz@ashi.footprints.net>
729
730 * add.lisp (mcvs-add): Last change completely broke add due
731 to not breaking out of the retry loop.
732
733 2002-02-13 Kaz Kylheku <kaz@ashi.footprints.net>
734
735 * move.lisp (mcvs-move): If the mapping-update operation returns
736 nil, or terminates by a non-local jump, restore the filemap.
737 * mapping.lisp (mapping-update): When returning normally,
738 return t. When returning after doing a rollback, return nil.
739
740 2002-02-13 Kaz Kylheku <kaz@ashi.footprints.net>
741
742 * error.lisp (mcvs-error-handler): Bugfix. We were closing over
743 a binding of the iteration variable of a dolist, which has only
744 one binding over the entire loop.
745
746 * mapping.lisp (mapping-update): Gathers up info all local
747 clobbered files, and then throw the error. Provides restart
748 which allows user to print the list of clobbered files, and
749 a restart which allows the user to have those files clobbered.
750
751 2002-02-13 Kaz Kylheku <kaz@ashi.footprints.net>
752
753 * checkout.lisp (mcvs-checkout-wrapper): Bugfix for last bugfix.
754
755 2002-02-11 Kaz Kylheku <kaz@ashi.footprints.net>
756
757 * checkout.lisp (mcvs-checkout-wrapper): Bugfix for bad
758 destructuring-bind if there are no arguments.
759
760 2002-02-10 Kaz Kylheku <kaz@ashi.footprints.net>
761
762 * mapping.lisp (mapping-difference): Reformatted documentation string.
763 (mapping-update): Implemented a continue restart which rolls back
764 the changes done to the local filesystem.
765
766 2002-02-10 Kaz Kylheku <kaz@ashi.footprints.net>
767
768 * error.lisp (mcvs-error-handler): Rearranging the menu,
769 so "T" is clumped with the main options, and any special restarts
770 are clearly separated. Changed wording.
771
772 2002-02-10 Kaz Kylheku <kaz@ashi.footprints.net>
773
774 * update.lisp (mcvs-update): Re-print the "Invoking CVS" chatter
775 if the user re-tries the error.
776
777 * add.lisp (mcvs-add): CVS failure is now a restartable error;
778 user can decide whether to roll back the effects or retry the
779 CVS add, or terminate to keep the effects anyway despite
780 the failed add.
781
782 2002-02-10 Kaz Kylheku <kaz@ashi.footprints.net>
783
784 * install.sh: Stop the script if there are compilation errors.
785
786 2002-02-09 Kaz Kylheku <kaz@ashi.footprints.net>
787
788 * error.lisp (*mcvs-errors-occured-p*): New special variable.
789 (mcvs-error-handler): Set *mcvs-errors-occured-p* to T.
790 * mcvs-main.lisp (mcvs): Take *mcvs-errors-occured-p* into
791 account in computing termination status.
792
793 2002-02-09 Kaz Kylheku <kaz@ashi.footprints.net>
794
795 * update.lisp: Remove spurious newlines from error messages.
796 * add.lisp: Likewise.
797 * options.lisp: Likewise.
798 * mapping.lisp: Likewise.
799
800 2002-02-09 Kaz Kylheku <kaz@ashi.footprints.net>
801
802 Adding some restarts around cvs update.
803
804 * posix.lisp (execute-command-xargs): Bail with nil return
805 value if any command line fails.
806
807 * update.lisp (mcvs-update): Tests return value of execute-program
808 and signal condition if it's nil. Provides a continue restart
809 as well as a retry restart to try the command again.
810
811 * error.lisp (mcvs-error-handler): Show retry restarts as
812 a special menu item "R".
813
814 2002-02-09 Kaz Kylheku <kaz@ashi.footprints.net>
815
816 Added a much improved error handling routine in anticipation
817 of better use of restarts.
818
819 * error.lisp: New file
820 (restart-destructure): New macro.
821 (*mcvs-error-treatment*): Special variable, moved here from
822 mcvs-main.
823 (mcvs-error-handler): New function.
824
825 * mcvs-main.lisp (mcvs-top-error-handler): Function removed.
826 (mcvs-execute): Bind error to new mcvs-error-handler instad
827 of mcvs-top-error-handler.
828
829 2002-02-09 Kaz Kylheku <kaz@ashi.footprints.net>
830
831 * mcvs-main.lisp (*mcvs-command-table*): The "stat" abbreviation
832 for status command added.
833
834 2002-02-09 Kaz Kylheku <kaz@ashi.footprints.net>
835
836 Hooking conversion tool into command structure.
837
838 * mcvs-main.lisp (*convert-options*): New constant.
839 (*mcvs-command-table*): New entry for mcvs-convert-wrapper.
840 * convert.lisp (mcvs-convert): Fix reference to nonexistent variable.
841 (mcvs-convert-wrapper): New function.
842
843 2002-02-08 Kaz Kylheku <kaz@ashi.footprints.net>
844
845 Beginning work on repository conversion utility.
846
847 * convert.lisp: New file. Contains conversion utility
848 to make an Meta-CVS repository from an ordinary CVS repository,
849 while preserving all history, tags and branches.
850 (remove-attic-component, classify-tags, read-tags,
851 mcvs-convert): New functions.
852
853 * posix.lisp (suffix): New function. Computes suffix of file.
854 (execute-program-xargs): New optional parameter, for specifying
855 fixed part added at the end of each generated command line.
856
857 * mapping.lisp (*mcvs-map-name*, *mcvs-local-map-name*): New constants.
858 (*mcvs-map*, *mcvs-map-local*): Redefined in terms of new constants.
859 (mapping-generate-name): New key parameter no-dir for not adding
860 the directory prefix.
861
862 2002-02-08 Kaz Kylheku <kaz@ashi.footprints.net>
863
864 * checkout.lisp (mcvs-checkout): Ensure local mapping is
865 sorted when written out, for easier comparisons.
866
867 2002-02-07 Kaz Kylheku <kaz@ashi.footprints.net>
868
869 * sync.lisp (synchronize-files): Return :dir symbol when either
870 argument is a directory.
871 * mapping.lisp (mapping-synchronize): Chatter output messages
872 are shorter. Handles :dir return value from synchronize-files.
873 (mapping-update): New sanity checks for moved and added
874 files, to avoid clobbering local files. Removed redundant
875 call to ensure-directories-exit in move logic, because
876 synchronize-files will do it anyway. Chatter messages reordered
877 to occur before their corresponding action is done.
878
879 2002-02-07 Kaz Kylheku <kaz@ashi.footprints.net>
880
881 Improve error handling, and builtin ``debug shell''.
882
883 * mcvs-main.lisp (*mcvs-error-treatment*): Special variable
884 can have new domain value, namely :decline.
885 (mcvs-top-error-handler): Print error message when terminating
886 non-restartable error. Handle new :decline treatment by
887 simply returning.
888 (mcvs-debug-shell): Set *mcvs-error-treatment* to :decline
889 so that errors are caught by debugger.
890
891 2002-02-04 Kaz Kylheku <kaz@ashi.footprints.net>
892
893 * mapping.lisp (mapping-sort): Removed function.
894 (mapping-write): Sort written map by F- file names,
895 not by path names. This is far better for merging, because
896 files stay in the same place when they are renamed.
897
898 2002-02-03 Kaz Kylheku <kaz@ashi.footprints.net>
899
900 Added status, log and annotate.
901
902 * mcvs-main.lisp: (*log-options*, *status-options*,
903 *annotate-options*): New constants.
904 (*mcvs-command-table*): Add new entries.
905
906 * generic-lisp (mcvs-log-wrapper, mcvs-status-wrapper,
907 mcvs-annotate-wrapper): New functions.
908
909 2002-02-03 Kaz Kylheku <kaz@ashi.footprints.net>
910
911 Added tag command.
912
913 * diff.lisp: File renamed to generic.lisp.
914 (mcvs-diff): Function renamed to mcvs-generic.
915
916 * generic.lisp (mcvs-generic): Function no longer dedicated to
917 diffing only; takes CVS command to execute as an argument,
918 also takes arguments and files as separate lists.
919 (mcvs-diff-wrapper): Modified to invoke mcvs-generic properly.
920 (mcvs-tag-wrapper): New function, uses mcvs-generic to implement
921 tag command.
922
923 * mcvs-main.lisp (*tag-options*): New constant.
924 (*mcvs-command-table*): New entry for tag command.
925
926 2002-02-03 Kaz Kylheku <kaz@ashi.footprints.net>
927
928 Added workaround for operating system argument passing limitations,
929 resembling the Unix xargs utility. Also, trimmed some fat
930 from the basename function.
931
932 * clisp-linux.lisp: (*argument-limit*): New constant added.
933 (arglist-to-command-string): Function removed.
934 (execute-program): Function removed.
935 (shell-interpreter): New function, wrapper for CLISP's shell
936 function, turns exit status into T (success) or NIL (failure).
937
938 * diff.lisp (mcvs-diff): Uses execute-program-xargs instead
939 of execute-program.
940
941 * posix.lisp (basename): Does not canonicalize path name. This
942 turns out to be an unnecessary performance hit in some cases.
943 (arglist-to-command-string): New function. Similar to what was
944 removed from clisp-linux, but this one properly escapes all
945 shell metacharacters.
946 (execute-program): New function, calls shell-interpreter.
947 (execute-program-xargs): New function. Takes two argument lists.
948 Forms one or more command lines by combining the first argument list
949 with one or more pieces of the second argument list, and
950 executes each command. The length of the pieces is determined
951 by the argument passing limit.
952
953 * dirwalk.lisp (ensure-directories-gone): Add use of
954 canonicalize-path because basename doesn't do it.
955
956 2002-02-02 Kaz Kylheku <kaz@ashi.footprints.net>
957
958 Algorithmic efficiency improvements. No longer using
959 abstract set operations to update file structure or find
960 duplicates in the maps. Could still streamline the sorting.
961
962 * mapping.lisp (mapping-sort): Express more succinctly using key.
963 (mapping-dupe-check): Rewrite using loop over sorted lists.
964 (mapping-difference): New function for computing mapping change.
965 (mapping-update): Modify to use mapping-difference.
966
967 2002-02-02 Kaz Kylheku <kaz@ashi.footprints.net>
968
969 * mapping.lisp (mapping-update): When moving files, ensure
970 that the target is unlinked if it exists.
971
972 * move.lisp (simple-rename): No longer do target unlinking
973 here. Also bugfix: it wasn't handling renames of directories
974 containing just one file.
975
976 2002-02-02 Kaz Kylheku <kaz@ashi.footprints.net>
977
978 * mapping.lisp (mapping-dupe-check): New function for
979 detecting duplicate objects or paths in a mapping.
980 (mapping-sane-p): Function removed.
981 (mapping-read): Use mapping-dupe-check to verify a map
982 when asked by the sanity-check keyword.
983 (mapping-update): Specify sanity check when reading MCVS/MAP.
984
985 * checkout.lisp (mcvs-checkout): Checkout also performs
986 sanity check.
987
988 2002-02-02 Kaz Kylheku <kaz@ashi.footprints.net>
989
990 * mcvs-main.lisp (mcvs): Use CLISP's exit function correctly
991 to establish proper termination status.
992
993 2002-01-31 Kaz Kylheku <kaz@ashi.footprints.net>
994
995 * mcvs-main.lisp (mcvs-execute): Parse command-specific options
996 properly based on knowledge of each command's set of options.
997 (parse-args): Function removed.
998
999 * options.lisp (parse-opt): Correctly process long options with
1000 arguments. Argument is part of the string, separated by = symbol.
1001
1002 2002-01-31 Kaz Kylheku <kaz@ashi.footprints.net>
1003
1004 * options.lisp (parse-opt): When multiple options characters are
1005 bunched up into one argument, and one of them other than the
1006 last one takes an argument, then the remaining ones are
1007 considered to constitute a string which is an argument to that
1008 option. For instance -y32 means -y 32, not -y -3 -2, assuming
1009 that y is an option that requires an argument.
1010
1011 2002-01-31 Kaz Kylheku <kaz@ashi.footprints.net>
1012
1013 Top level handler terminates by non-local exit back to
1014 mcvs function, rather than by calling (exit).
1015
1016 * mcvs-main.lisp (mcvs-top-error-handler): Restructured
1017 to call (throw 'mcvs-exit t).
1018 (mcvs-execute): Ensure that NIL is returned by normal exit.
1019 (mcvs): Catches 'mcvs-exit throw, and calls (exit 0) or (exit 1)
1020 accordingly.
1021
1022
1023 2002-01-31 Kaz Kylheku <kaz@ashi.footprints.net>
1024
1025 Renamed all ``filemap-'' functions to ``mapping-'' prefix.
1026
1027 * mapping.lisp (filemap-generate-name, filemap-sort,
1028 filemap-extract-paths, filemap-lookup, filemap-prefix-lookup,
1029 filemap-prefix-matches, filemap-object-lookup,
1030 filemap-same-object-p, filemap-same-path-p, filemap-moved-p,
1031 filemap-rename-files, filemap-sane-p): Old names removed.
1032 (mapping-generate-name, mapping-sort,
1033 mapping-extract-paths, mapping-lookup, mapping-prefix-lookup,
1034 mapping-prefix-matches, mapping-object-lookup,
1035 mapping-same-object-p, mapping-same-path-p, mapping-moved-p,
1036 mapping-rename-files, mapping-sane-p): New names created.
1037 (mapping-read, mapping-write, mapping-synchronize,
1038 mapping-update): Edit calls to renamed functions.
1039 * add.lisp (mcvs-add): Likewise.
1040 * diff.lisp (mcvs-diff): Likewise.
1041 * filt.lisp (mcvs-filt): Likewise.
1042 * import.lisp (mcvs-import): Likewise.
1043 * move.lisp (simple-rename, simple-move-to-dir, move-guts): Likewise.
1044 * remove.lisp (mcvs-remove): Likewise.
1045
1046 2002-01-30 Kaz Kylheku <kaz@ashi.footprints.net>
1047
1048 Factored out repeated code for reading and writing of the MAP and
1049 MAP-LOCAL files.
1050
1051 * mapping.lisp (mapping-read, mapping-write): New functions.
1052 (mapping-synchronize, mapping-update): Use new functions.
1053 * move.lisp (mcvs-move): Likewise.
1054 * filt.lisp (mcvs-filt): Likewise.
1055 * add.lisp (mcvs-add): Likewise.
1056 * remove.lisp (mcvs-remove): Likewise.
1057 * checkout.lisp (mcvs-checkout): Likewise.
1058 * diff.lisp (mcvs-diff): Likewise.
1059 * import.lisp (mcvs-import): Likewise.
1060
1061 2002-01-30 Kaz Kylheku <kaz@ashi.footprints.net>
1062
1063 * filt.lisp (mcvs-filt): use *mcvs-dir* variable instead of
1064 hard coding "MCVS" string.
1065
1066 2002-01-30 Kaz Kylheku <kaz@ashi.footprints.net>
1067
1068 * MCVS-PAPER: Renamed to Meta-CVS-PAPER
1069
1070 * README: Change all references to MCVS to Meta-CVS, the
1071 new official name of the program.
1072 * add.lisp: Likewise
1073 * chatter.lisp: Likewise
1074 * checkout.lisp: Likewise
1075 * clisp-linux.lisp: Likewise
1076 * commit.lisp: Likewise
1077 * diff.lisp: Likewise
1078 * dirwalk.lisp: Likewise
1079 * filt.lisp: Likewise
1080 * import.lisp: Likewise
1081 * INSTALL: Likewise
1082 * mapping.lisp: Likewise
1083 * mcvs-main.lisp: Likewise
1084 * Meta-CVS-PAPER: Likewise
1085 * move.lisp: Likewise
1086 * options.lisp: Likewise
1087 * posix.lisp: Likewise
1088 * RELEASE-NOTES: Likewise
1089 * remove.lisp: Likewise
1090 * restart.lisp: Likewise
1091 * seqfuncs.lisp: Likewise
1092 * split.lisp: Likewise
1093 * sync.lisp: Likewise
1094 * system.lisp: Likewise
1095 * update.lisp: Likewise
1096
1097 2002-01-28 Kaz Kylheku <kaz@ashi.footprints.net>
1098
1099 * move.lisp (move-guts): test the actual filesystem as well
1100 as the map for existence of a directory or file. This makes
1101 the move operation behave better. Files can be moved to an
1102 existing directory that is not known to MCVS, and a file
1103 can properly clobber a target file that is not known to MCVS.
1104
1105 * clisp-linux.lisp (directory-p, regular-p, symlink-p): define
1106 methods for these generic functions for a NIL argument, such
1107 that they return NIL.
1108
1109 2002-01-28 Kaz Kylheku <kaz@ashi.footprints.net>
1110
1111 * move.lisp (simple-move-to-dir): eliminated a bunch of code
1112 with the result that mcvs mv now works more like the Unix mv
1113 when moving a directory to another directory.
1114
1115 * mcvs-main.lisp (mcvs-execute): fix bogus error message
1116 when options are given but no command.
1117
1118 * README: don't use -z3 in example because this style of
1119 specifying an argument to an option doesn't work.
1120
1121 2002-01-27 Kaz Kylheku <kaz@ashi.footprints.net>
1122
1123 * add.lisp (mcvs-add): Remove bogus test for NIL or T; allow
1124 recursivep to be a generalized boolean variable. This allows
1125 mcvs add -R to work properly.
1126
1127 * mcvs-main.lisp (*cvs-command-options-arg*): add support
1128 for -u parameter, useful in cvs diff.
1129 (*mcvs-command-table*): Add "fi" shorthand for "filt".

  ViewVC Help
Powered by ViewVC 1.1.5