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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.5