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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.5