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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.5