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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.205.2.38 - (hide annotations)
Tue Jan 14 05:45:38 2003 UTC (11 years, 3 months ago) by kaz
Branch: mcvs-1-0-branch
Changes since 1.205.2.37: +7 -0 lines
* code/install.sh: More fail-safe way to locate library directory;
works even when clisp executable is a symlink.  Thanks to Sam
Steingold, CLISP maintainer, for tip.
1 kaz 1.205.2.38 2003-01-13 Kaz Kylheku <kaz@ashi.footprints.net>
2    
3     * code/install.sh: More fail-safe way to locate library directory;
4     works even when clisp executable is a symlink. Thanks to Sam
5     Steingold, CLISP maintainer, for tip.
6    
7    
8 kaz 1.205.2.37 2003-01-12 Kaz Kylheku <kaz@ashi.footprints.net>
9    
10     Hard link sync optimization.
11    
12     * code/mapping.lisp (mapping-synchronize): New optional parameter,
13     specifies map to use instead of reading *map-local*.
14    
15     * code/mcvs-generic.lisp (mcvs-generic): Pass extra parameter to
16     mapping-synchronize to only sync the selected subset of files.
17    
18 kaz 1.205.2.36 2003-01-01 Kaz Kylheku <kaz@ashi.footprints.net>
19    
20     * code/unix-bindings/impl.c (impl_spawn): For Cygwin, re-implemented
21     this function as a wrapper for the spawnvp function. The combination
22     of fork + execvp + waitpid does not work because waitpid is broken;
23     it waits for thep rocess, but then returns -1 and sets errno
24     to ECHILD.
25    
26 kaz 1.205.2.35 2002-12-27 Kaz Kylheku <kaz@ashi.footprints.net>
27    
28     * code/options.lisp (process-cvs-options): The version number
29     now has three components.
30    
31 kaz 1.205.2.34 2002-12-13 Kaz Kylheku <kaz@ashi.footprints.net>
32    
33     * code/install.sh: Now works under CLISP installations which
34     call the CLISP executable lisp.exe rather than lisp.run.
35     This is the case under Cygwin as of CLISP 2.30 or so.
36    
37 kaz 1.205.2.33 2002-12-03 Kaz Kylheku <kaz@ashi.footprints.net>
38    
39     * code/sync.lisp (synchronize-files): Call exec-check using
40     file info object, rather than file name. This cuts in half
41     the number of calls to stat().
42    
43     2002-12-03 Kaz Kylheku <kaz@ashi.footprints.net>
44 kaz 1.205.2.32
45     Discontinuing use of CLISP's ext:run-program function in favor
46     of a new workalike which doesn't rely on the shell interpreter.
47    
48     * code/unix-bindings/unix.lisp (unix-funcs:spawn): New C call out
49     function (unix-funcs:run-program): New function, implemented using
50     spawn.
51    
52     * code/unix-bindings/impl.c (impl_spawn): New function; wraps
53     up fork, execvp and waitpid.
54    
55     * code/clisp-unix.lisp: Switch from ext:run-program to
56     unix-funcs:run-program.
57    
58 kaz 1.205.2.31 2002-11-20 Kaz Kylheku <kaz@ashi.footprints.net>
59    
60     Some security fixes. Funny I didn't think of this sooner!
61    
62     * code/types.lisp (types-read): Make sure *read-eval* is bound to
63     nil when calling READ.
64    
65     * code/mapping.lisp (mapping-read-raw-map, displaced-path-read):
66     Likewise.
67    
68    
69 kaz 1.205.2.30 2002-11-16 Kaz Kylheku <kaz@ashi.footprints.net>
70    
71     * code/posix.lisp (invoke-editor-on): Honor the CVSEDITOR and VISUAL
72     environment variables, not just EDITOR.
73    
74 kaz 1.205.2.29 2002-11-09 Kaz Kylheku <kaz@ashi.footprints.net>
75    
76     * code/link.lisp (mcvs-link): Revamped link command to behave properly
77     when the destination object is a directory. It must create the link in
78     that directory, rather than try to create a link with that name.
79     Plus handles various tricky cases. Trailing slash in destination name,
80     destination that is a directory within target directory, attempted
81     link creation in MCVS etc.
82    
83 kaz 1.205.2.26 2002-11-03 Kaz Kylheku <kaz@ashi.footprints.net>
84    
85 kaz 1.205.2.28 More support for -n option.
86    
87     * code/mcvs-main.lisp (*usage*): Document -n option.
88    
89     * code/move.lisp (mcvs-move-wrapper): Remove bogus error check
90     for presence of global options.
91    
92     * code/options.lisp (honor-dry-run): New macro for conditionally
93     not executing some forms if it's a dry run, and logging some
94     debugging information.
95    
96     * code/sync.lisp (synchronize-files): Honor dry run.
97    
98     * code/mapping.lisp (mapping-synchronize, mapping-update): Likewise.
99    
100     2002-11-03 Kaz Kylheku <kaz@ashi.footprints.net>
101    
102 kaz 1.205.2.27 Start of support for global option -n (dry run).
103    
104     * code/options.lisp (*dry-run-option*): New boolean variable.
105     (process-cvs-options): Look for -n and set *dry-run-option*.
106    
107     * code/types.lisp (types-write): Do not write file if *dry-run-option*
108     is true.
109    
110     * code/types.lisp (mapping-write): Likewise.
111    
112     * code/add.lisp (mcvs-add): When calling types-let-user-edit,
113     temporarily disable the dry run option, so that TYPES-NEW can
114     be written. When the dry run option is in effect, do not try
115     to cvs add the TYPES file.
116    
117     2002-11-03 Kaz Kylheku <kaz@ashi.footprints.net>
118    
119 kaz 1.205.2.26 * code/branch.lisp (*branch-help*): New string constant.
120    
121     * code/mcvs-main.lisp (*mcvs-command-table*): *branch-help* hooked in.
122    
123 kaz 1.205.2.24 2002-11-02 Kaz Kylheku <kaz@ashi.footprints.net>
124    
125 kaz 1.205.2.25 * code/mcvs-main (*args*, *options*): Unused variables removed.
126     (mcvs-execute): Global option processing code removed.
127    
128     * code/options.lisp (*print-usage*): New boolean variable; tells
129     mcvs-execute to print usage and terminate.
130     (filter-mcvs-options): New function. Does the job that
131     filter-global-options did.
132     (process-cvs-options): Does the global option processing that
133     was previously in mcvs-execute.
134     (filter-global-options): Now just calls filter-mcvs-options,
135     process-cvs-options.
136    
137     2002-11-02 Kaz Kylheku <kaz@ashi.footprints.net>
138    
139 kaz 1.205.2.24 * INSTALL: Include caveat about GCC 3 problems.
140    
141 kaz 1.205.2.22 2002-10-30 Kaz Kylheku <kaz@ashi.footprints.net>
142    
143 kaz 1.205.2.23 * code/prop.lisp (mcvs-prop): If there are no options specified,
144     don't do anything.
145    
146     2002-10-30 Kaz Kylheku <kaz@ashi.footprints.net>
147    
148 kaz 1.205.2.22 * code/unix-bindings/unix.lisp: Rewrote defpackage to take only
149     selected symbols from CLISP's FFI package rather using the whole
150     thing. FFI, and the packages it uses, are moving targets.
151     The symbol def-c-call-out is interned in unix-funcs.
152     (unix-funcs:def-c-call-out): New internal macro. CLISP says that
153     ffi:def-c-call-out is obsolescent.
154    
155     * code/unix-bindings/Makefile: The ``clean'' target removes
156     unix.lib, not only unix.fas.
157    
158 kaz 1.205.2.21 2002-10-27 Kaz Kylheku <kaz@ashi.footprints.net>
159    
160     Bugfix to the directory restructuring code. A clobbering
161     file add was not actually removing the clobbered file, but leaving
162     it up to the synchronization algorithm, so the time-stamp would
163     decide whether the local file gets clobbered by the repository one,
164     or whether it wins.
165    
166     * code/mapping.lisp (mapping-update): Logic for handling added
167     file ensures that a clobbered local file is removed first.
168    
169 kaz 1.205.2.16 2002-10-26 Kaz Kylheku <kaz@ashi.footprints.net>
170    
171 kaz 1.205.2.20 New link command for creating symlinks.
172    
173     * mcvs-main.lisp (*link-options*): New option constant.
174     (*mcvs-command-table*): Entries for new command added.
175     (*usage*): Help text added.
176    
177     * link.lisp: New file.
178     (mcvs-link, mcvs-link-wrapper): New functions.
179    
180     2002-10-26 Kaz Kylheku <kaz@ashi.footprints.net>
181    
182 kaz 1.205.2.19 * code/grab.lisp (*grab-help*): Rewritten.
183    
184     * code/checkout.lisp (*export-help*): Formatted for 80 columns.
185    
186     2002-10-26 Kaz Kylheku <kaz@ashi.footprints.net>
187    
188 kaz 1.205.2.18 * code/mcvs-main.lisp (*usage*): Expand tabs to spaces.
189    
190     * code/add.lisp (*add-help*): Likewise.
191    
192     * code/remove.lisp (*remove-help*): Likewise.
193    
194     * code/create.lisp (*create-help*): Likewise.
195    
196     2002-10-26 Kaz Kylheku <kaz@ashi.footprints.net>
197    
198 kaz 1.205.2.17 * code/purge.lisp (mcvs-purge): Get rid the processing of the
199     nonexistent -n option from purge code. The global option -n does an
200     adequate job of implementing a dry run.
201    
202     2002-10-26 Kaz Kylheku <kaz@ashi.footprints.net>
203    
204 kaz 1.205.2.16 * code/mapping.lisp (mapping-removed-files): Skip over the MCVS/CVS
205     directory, which can contain CVS-generated files with F- names and a ,t
206     suffix. These trip up the algorithm.
207    
208 kaz 1.205.2.15 2002-10-21 Kaz Kylheku <kaz@ashi.footprints.net>
209    
210     Add help to move command.
211    
212     * code/mcvs-main.lisp (*mcvs-command-table*): Added *move-help*.
213    
214     * code/move.lisp (*mcvs-help*): New constant.
215    
216 kaz 1.205.2.14 2002-10-20 Kaz Kylheku <kaz@ashi.footprints.net>
217    
218     Fix broken ``filt -r''.
219    
220     * code/mapping.lisp (mapping-read-raw-map): New function; reads
221     map from stream and does sanity check.
222     (mapping-read): Argument can be a filename or stream. Call to
223     mapping-read-raw-map to factor out common code for both cases.
224    
225     * code/filt.lisp (filt-select-map): This was still just
226     reading the raw structure from the cvs coprocess, which worked under
227     the old map format, when the internal and external representations
228     were the same. Now it calls mapping-read on the stream.
229    
230 kaz 1.205.2.12 2002-10-19 Kaz Kylheku <kaz@ashi.footprints.net>
231    
232 kaz 1.205.2.13 * UPGRADE-EXISTING: New file.
233    
234     2002-10-19 Kaz Kylheku <kaz@ashi.footprints.net>
235    
236 kaz 1.205.2.12 * code/mcvs-main.lisp: Clear out *modules* list before requiring
237     modules. This is needed so that mcvs-upgrade works, because there
238     is already a populated list in the Lisp image.
239    
240 kaz 1.205.2.11 2002-10-17 Kaz Kylheku <kaz@ashi.footprints.net>
241    
242     Detect failure to start text editor.
243    
244     * code/posix.lisp (*editor*): Change name to *mcvs-editor*, due
245     to name-clash with a CLISP extension!
246    
247     * code/mcvs-main.lisp: Likewise.
248    
249     * code/types.lisp (types-let-user-edit): Provide an individual
250     restart-case block around the invocation of the text editor,
251     which lets the user re-try the editor.
252    
253 kaz 1.205.2.10 2002-10-14 Kaz Kylheku <kaz@ashi.footprints.net>
254    
255     Compiler warning fix.
256    
257     * code/posix.lisp (*argument-limit*): Constant moved here.
258    
259     * code/clisp-unix.lisp (*argument-limit*): Constant removed.
260    
261     * code/cmucl-unix.lisp (*argument-limit*): Likewise.
262    
263 kaz 1.205.2.4 2002-10-13 Kaz Kylheku <kaz@ashi.footprints.net>
264    
265 kaz 1.205.2.9 * code/install.sh: generate a script called mcvs-upgrade.
266    
267     2002-10-13 Kaz Kylheku <kaz@ashi.footprints.net>
268    
269 kaz 1.205.2.8 * code/prop.lisp (mcvs-prop): Read *mcvs-map*, not *mcvs-map-local*.
270    
271     2002-10-13 Kaz Kylheku <kaz@ashi.footprints.net>
272    
273 kaz 1.205.2.7 * code/mcvs-main.lisp (*watchers-options*): New constant.
274     (*edit-options*): Likewise.
275     (*unedit-options*): Likewise.
276     (*editors-options*): Likewise.
277     (*mcvs-command-table*): Added watchers, edit unedit, and editors
278     commands.
279     (*usage*): Updated.
280    
281     * code/generic.lisp (mcvs-watchers-wrapper, mcvs-edit-wrapper,
282     mcvs-unedit-wrapper, mcvs-editors-wrapper): New functions.
283    
284     2002-10-13 Kaz Kylheku <kaz@ashi.footprints.net>
285    
286 kaz 1.205.2.6 * code/mcvs-main.lisp (*usage*): Describe export and watch commands.
287    
288     2002-10-13 Kaz Kylheku <kaz@ashi.footprints.net>
289    
290 kaz 1.205.2.5 * code/mcvs-main.lisp (*watch-options*): New constant.
291     (*mcvs-command-table*): New entry for watch command.
292    
293     * code/watch.lisp: New file.
294    
295     2002-10-13 Kaz Kylheku <kaz@ashi.footprints.net>
296    
297 kaz 1.205.2.4 * code/mcvs-main.lisp (*export-options*): New constant.
298     (*mcvs-command-table*): New entries for export command.
299    
300 kaz 1.205.2.5 * code/checkout.lisp (mcvs-checkout): New keyword to specify export
301     behavior. This causes cvs export to be run instead of checkout,
302     and the MCVS directory to be deleted after.
303 kaz 1.205.2.4 (mcvs-checkout-wrapper): Common function factored out into a flet.
304 kaz 1.205.2.5 (mcvs-export-wrapper): New function. Verifies that one of -D and -r
305     options is present, then runs mcvs-checkout, specifying export
306     behavior.
307 kaz 1.205.2.4
308 kaz 1.205.2.1 2002-10-12 Kaz Kylheku <kaz@ashi.footprints.net>
309    
310 kaz 1.205.2.3 * code/mcvs-main.lisp (*update-options*): Added -C option.
311    
312     * code/update.lisp (mcvs-update): Fall back on the mcvs-generic
313     if --metaonly or --nometa is specified to run CVS on specific
314     files.
315    
316     2002-10-12 Kaz Kylheku <kaz@ashi.footprints.net>
317    
318 kaz 1.205.2.2 * code/filt.lisp (mcvs-filt): Do not filter F- names if
319     immediately preceded by MCVS/ prefix.
320    
321     2002-10-12 Kaz Kylheku <kaz@ashi.footprints.net>
322    
323 kaz 1.205.2.1 * code/clisp-unix.lisp (execute-program): Provide debug traces
324     for command execution.
325    
326 kaz 1.205 2002-10-09 Kaz Kylheku <kaz@ashi.footprints.net>
327    
328     * code/add.lisp (*add-help*): Remove spurious text cut and pasted from
329     checkout help.
330    
331 kaz 1.196 2002-10-06 Kaz Kylheku <kaz@ashi.footprints.net>
332    
333 kaz 1.204 * code/prop.lisp (mcvs-prop): Result of real-to-abstract-path
334     must be canonicalized.
335    
336     * code/remove.lisp (mcvs-remove): Likewise.
337    
338     * code/generic.lisp (mcvs-generic): Likewise.
339    
340     2002-10-06 Kaz Kylheku <kaz@ashi.footprints.net>
341    
342 kaz 1.203 * code/move.lisp (move-guts, mcvs-move): Canonicalize the destination
343     path in mcvs-move, rather than mcvs-guts.
344    
345     2002-10-06 Kaz Kylheku <kaz@ashi.footprints.net>
346    
347 kaz 1.202 * code/create.lisp (mcvs-create): Add the DISPLACED filename
348     to the .cvsignore file.
349    
350     2002-10-06 Kaz Kylheku <kaz@ashi.footprints.net>
351    
352 kaz 1.201 * code/posix.lisp (path-prefix-equal): Handle empty strings.
353    
354     2002-10-06 Kaz Kylheku <kaz@ashi.footprints.net>
355    
356 kaz 1.200 * code/move.lisp (move-guts): If an error occurs for each
357     source in a multiple move, and the user skips each source,
358     generate the error that all sources were skipped.
359    
360     2002-10-06 Kaz Kylheku <kaz@ashi.footprints.net>
361    
362 kaz 1.199 * code/move.lisp (source-check): Generate error if a move
363     of the sandbox root is attempted.
364    
365     2002-10-06 Kaz Kylheku <kaz@ashi.footprints.net>
366    
367 kaz 1.198 * code/remap.lisp (mcvs-remap): Preserve property lists of
368     mapping entries, and pick up changes in execute permission.
369    
370     * code/mapping.lisp (mapping-convert-out): If the mapping entry's
371     executable flag is nil, then remove the :exec entry from the property
372     list.
373    
374     2002-10-06 Kaz Kylheku <kaz@ashi.footprints.net>
375    
376 kaz 1.197 * code/mapping.lisp (equal-filemaps): Repair completely broken
377     function.
378    
379     * code/move.lisp (mcvs-move): Added little hack for turning
380     no-op moves into errors. Without this the behavior is confusing,
381     since the program appears to do nothing.
382    
383     2002-10-06 Kaz Kylheku <kaz@ashi.footprints.net>
384    
385 kaz 1.196 * code/add.lisp (mcvs-add): Provide a continue restart around
386     the code that builds up the expanded-paths for each iteration of the
387     loop. Without this, errors in that code cause the program to bail, even
388     though errors in the rest of the loop body are continuable.
389    
390 kaz 1.189 2002-10-05 Kaz Kylheku <kaz@ashi.footprints.net>
391    
392 kaz 1.195 * code/dirwalk.lisp (dirwalk): If the argument is not a directory,
393     the callback must still be invoked. This was done prior to
394     a 2002-05-20 commit. I can't quite remember why it was changed;
395     but I seem to recall thinking about the new dirwalk-skip catch,
396     and how it must be always visible to the callback closure, so
397     that the (skip) mechanism works.
398    
399     2002-10-05 Kaz Kylheku <kaz@ashi.footprints.net>
400    
401 kaz 1.194 * code/add.lisp (mcvs-add): Reshuffle restart to a higher nesting
402     level, so that an error on one item won't abort the whole operation.
403    
404     2002-10-05 Kaz Kylheku <kaz@ashi.footprints.net>
405    
406 kaz 1.193 * code/convert.lisp (mcvs-convert): Maintenance so that this tool
407     at least runs, even though it doesn't do anything resembling a
408     reasonable conversion job.
409    
410     2002-10-05 Kaz Kylheku <kaz@ashi.footprints.net>
411    
412 kaz 1.192 * code/clisp-unix.lisp (guid-gen): Changes for Cygwin broke the
413     case when /dev/urandom is available.
414    
415     2002-10-05 Kaz Kylheku <kaz@ashi.footprints.net>
416    
417 kaz 1.191 * code/find-bind.lisp (find-bind): Allow empty variable list, as
418     described by the documented syntax.
419    
420     2002-10-05 Kaz Kylheku <kaz@ashi.footprints.net>
421    
422 kaz 1.190 * code/error.lisp (mcvs-error-handler): Simplify roundabout way
423     of printing error message.
424    
425     * code/mapping.lisp (mapping-write): Incorporate the low level error
426     message into the more informative error message.
427    
428     2002-10-05 Kaz Kylheku <kaz@ashi.footprints.net>
429    
430 kaz 1.189 Error messages no longer specify prefixes like "mcvs:" or
431     "mcvs-remove:".
432    
433     When no restarts are available, the error handler now adds the "mcvs:"
434     prefix when dumping the error text to the standard error stream,
435     and also adds a terminating newline.
436    
437     The inability to write to the MAP file is converted to a more
438     informative error message.
439    
440     New --debug option is supported to set the chatter level to 3.
441    
442     * code/chatter.lisp: Use the symbolic constant when defining the
443     default chatter level value.
444    
445     * code/mcvs-main.lisp (*cvs-options*, mcvs-help, mcvs-execute): Added
446     support for --debug option, and removed of prefixes from error
447     messages.
448    
449     * code/options.lisp (filter-global-options): Support --debug.
450     (parse-opt): Removed prefixes from error messages.
451    
452     * code/mapping.lisp (mapping-rename-files, mapping-dupe-check,
453     mapping-convert-in, mapping-synchronize, mapping-update): Removed
454     prefixes from error messages.
455     (mapping-write): Trap write error and convert to more informative
456     error message.
457    
458     * code/error.lisp (mcvs-error-handler): In the case when no restarts
459     are available, format the error message by adding the mcvs: prefix
460     and a terminating newline.
461    
462     * code/purge.lisp (mcvs-purge): Removed prefixes from error messages.
463    
464     * code/restore.lisp (mcvs-restore): Likewise.
465    
466     * code/move.lisp (move-guts, mcvs-move): Likewise.
467    
468     * code/grab.lisp (mcvs-grab): Likewise.
469    
470     * code/prop.lisp (mcvs-prop): Likewise.
471    
472     * code/filt.lisp (filt-select-map, mcvs-filt): Likewise.
473    
474     * code/branch.lisp (where-is-the-repository, mcvs-branch,
475     cvs-make-or-advance-tag, mcvs-merge, mcvs-list-branches,
476     mcvs-switch-wrapper): Likewise.
477    
478     * code/add.lisp (mcvs-add, mcvs-add): Likewise.
479    
480     * code/remove.lisp (mcvs-remove): Likewise.
481    
482     * code/convert.lisp (classify-tags, mcvs-convert): Likewise.
483    
484     * code/checkout.lisp (mcvs-checkout): Likewise.
485    
486     * code/generic.lisp (mcvs-generic, mcvs-diff-wrapper): Likewise.
487    
488     * code/create.lisp (mcvs-create, mcvs-create): Likewise.
489    
490     * code/remap.lisp (mcvs-remap, mcvs-remap): Likewise.
491    
492 kaz 1.188 2002-09-25 Kaz Kylheku <kaz@ashi.footprints.net>
493    
494     Minimal changes for building on Cygwin.
495    
496     * code/install.sh (space_check, dash_check): Function definitions
497     modified to conform to bash2.
498    
499     * code/clisp-unix.lisp (*have-dev-random*, *mcvs-random-state*):
500     New special variables.
501     (guid-gen): Rewritten to fall back on the Common Lisp random
502     function if /dev/urandom is not available.
503    
504 kaz 1.180 2002-09-21 Kaz Kylheku <kaz@ashi.footprints.net>
505    
506 kaz 1.187 * code/mcvs-main.lisp (*options*): New variable. Gives
507     scripts access to to some global options. The *args* variable now
508     holds only the remaining arguments after the options.
509     (mcvs-execute): Sets up *args* and *options* accordingly.
510     No longer parses out the --error-continue and --error-terminate
511     options.
512    
513     * code/options.lisp (filter-global-options): The handling of
514     --error-continue and --error-terminate is done here. This is
515     the place to handle options that must be removed (not passed
516     down to CVS) and which do not trigger immediate actions in
517     mcvs-execute.
518    
519     2002-09-21 Kaz Kylheku <kaz@ashi.footprints.net>
520    
521 kaz 1.186 * code/mcvs-main.lisp (*args*): New global variable. Gives
522 kaz 1.185 scripts access to command line.
523    
524     2002-09-21 Kaz Kylheku <kaz@ashi.footprints.net>
525    
526 kaz 1.184 * code/mcvs-main.lisp (*cvs-options*): Add -i parameter which
527     takes the name of a script to invoke.
528     (*usage*): Updated to describe new option.
529     (mcvs-execute): Parse out -i option and load the specified file.
530    
531     2002-09-21 Kaz Kylheku <kaz@ashi.footprints.net>
532    
533 kaz 1.183 * code/install.sh: Don't specify -K full option when running
534     specific, generated CLISP image already. When generating mcvs.mem,
535     load the compiled version mcvs-main, rather than mcvs-main.lisp.
536    
537     2002-09-21 Kaz Kylheku <kaz@ashi.footprints.net>
538    
539 kaz 1.182 * code/install.sh: Check that the installation target path won't
540     look like a command line option to shell commands.
541    
542     2002-09-21 Kaz Kylheku <kaz@ashi.footprints.net>
543    
544 kaz 1.181 * code/mcvs-main.lisp (*mcvs-command-table*): Added help for remove.
545    
546     * code/remove.lisp (*remove-help*): New string constant.
547    
548     2002-09-21 Kaz Kylheku <kaz@ashi.footprints.net>
549    
550 kaz 1.180 * code/grab.lisp (mcvs-grab): Inspect the execute permissions
551     of stable and moved files, and update the :EXEC propery of
552     their mapping entries accordingly. In other words, grab changes
553     in execute permissions properly.
554    
555 kaz 1.179 2002-09-18 Kaz Kylheku <kaz@ashi.footprints.net>
556    
557     * code/restore.lisp (mcvs-restore): Was still generating old-style
558     mapping entries.
559    
560     * code/clisp-unix.lisp (executable-p (string)): New method for
561     executable-p generic function that takes a filename.
562    
563 kaz 1.177 2002-09-17 Kaz Kylheku <kaz@ashi.footprints.net>
564    
565 kaz 1.178 * code/install.sh: Check that the installation target path
566     does not contain any spaces. It cannot, because it is used
567     in the #! line of an interpreter script. As a consequence of
568     this check, whitespace precautions in the expansion of $TARGET,
569     $TARGET_LIB and $TARGET_BIN have been removed.
570    
571     2002-09-17 Kaz Kylheku <kaz@ashi.footprints.net>
572    
573 kaz 1.177 * code/checkout.lisp (mcvs-checkout): If a subdirectory path
574     is specified, verify that it is relative, and that it points
575     within the module.
576    
577 kaz 1.175 2002-09-16 Kaz Kylheku <kaz@ashi.footprints.net>
578    
579 kaz 1.176 * code/mcvs-main.lisp (*checkout-options*): Removed -A and -N
580     options.
581     (*mcvs-command-table*): Added help for checkout and add.
582    
583     * code/checkout.lisp (*checkout-help*): New string constant.
584    
585     * code/add.help (*add-help*): Likewise.
586    
587     * code/create.lisp (*create-help*): Mention interactive file
588     type specification.
589    
590     2002-09-16 Kaz Kylheku <kaz@ashi.footprints.net>
591    
592 kaz 1.175 * code/mcvs-main.lisp (*mcvs-command-table*): Add *grab-help*.
593    
594     * code/grab.lisp (*grab-help*): New string constant.
595    
596 kaz 1.172 2002-09-11 Kaz Kylheku <kaz@ashi.footprints.net>
597    
598 kaz 1.174 * code/clisp-linux.lisp: File removed.
599    
600     2002-09-11 Kaz Kylheku <kaz@ashi.footprints.net>
601    
602 kaz 1.173 Implement help text for create command.
603    
604     * code/mcvs-main.lisp (mcvs-help): Fixes.
605     (*mcvs-command-table*): Add *create-help*.
606    
607     * code/create.lisp (*create-help*): New string constant.
608    
609     2002-09-11 Kaz Kylheku <kaz@ashi.footprints.net>
610    
611 kaz 1.172 Revamping help system to support more detailed help
612     for individual commands.
613    
614     * code/mcvs-main.lisp (mcvs-help): New function.
615     (*help-options*): New constant.
616     (*mcvs-command-table*): New entry in each sublist element;
617     this is either nil, or a string containing help text.
618     (mcvs-execute): Update to use new table structure.
619    
620 kaz 1.171 2002-09-10 Kaz Kylheku <kaz@ashi.footprints.net>
621    
622     * code/filt.lisp (mcvs-filt): Bugfix: was trying to
623     use NIL as if it were a mapping-entry struct after an unsuccessful
624     gethash.
625    
626     2002-09-10 Kaz Kylheku <kaz@ashi.footprints.net>
627    
628     Fix installation braindamage. The problem is that
629     the linkkit material is architecture specific; it was
630     wrong to copy that from CLISP.
631    
632     * code/install.sh (CLISP_PATH, CLISP_ROOT, CLISP_LIB): New
633     variables, dynamically computed from clisp's location.
634     The script now runs the clisp-link under $CLISP_LIB rather
635     than using a replica, and uses $CLISP_LIB/linkkit rather
636     than a replica linkkit.
637     (CLISP): Variable renamed to LISPRUN.
638    
639     * code/clisp-link: File removed.
640     * code/linkkit/modules.d: Likewise.
641     * code/linkkit/modules.c: Likewise.
642     * code/linkkit/clisp.h: Likewise.
643    
644 kaz 1.168 2002-09-08 Kaz Kylheku <kaz@ashi.footprints.net>
645    
646 kaz 1.170 Fix mistake dating back to April.
647    
648     * code/branch.lisp (mcvs-merge): Symbol T was being invoked
649     as function in the case that merge is invoked on a sandbox
650     that is sticky to a non-branch tag.
651    
652     2002-09-08 Kaz Kylheku <kaz@ashi.footprints.net>
653    
654 kaz 1.169 Another stupid error.
655    
656     * code/create.lisp (mcvs-create): Fix use to unbound
657     variable file-info which should be fi.
658    
659     2002-09-08 Kaz Kylheku <kaz@ashi.footprints.net>
660    
661 kaz 1.168 Fix stupid error.
662    
663     * code/mcvs-main.lisp (*move-options*): New constant.
664     (*mcvs-command-table*): Fix broken entry for "move" and "mv".
665    
666 kaz 1.167 2002-09-07 Kaz Kylheku <kaz@ashi.footprints.net>
667    
668     Eliminate inappropriate pluralization in messages.
669    
670     * code/grab.lisp (mcvs-grab): Use ~:p to substitute a 's'
671     if the parameter is other than 1.
672    
673     * code/options.lisp (parse-opt): Likewise.
674    
675 kaz 1.165 2002-09-06 Kaz Kylheku <kaz@ashi.footprints.net>
676    
677 kaz 1.166 * code/prop.lisp (mcvs-prop): Support --value option to
678     associate an arbitrary value with a property indicator.
679    
680     * code/mcvs-main.lisp (*usage*): Describe --value and
681     clarify syntax.
682    
683     2002-09-06 Kaz Kylheku <kaz@ashi.footprints.net>
684    
685 kaz 1.165 Unify command option parsing, and enable it to handle options with
686     any number of required parameters.
687    
688     * code/options.lisp (parse-opt): Function rewritten. Argument
689     syntax and semantics have changed. Options are specified
690     as an association list whose member are string-integer
691     pairs. The string is the option name, the integer specifies
692     the number of required parameters.
693     (option-spec-expand): New function.
694     (option-spec): New macro.
695     (define-option-constant): New macro.
696    
697     * code/mcvs-main.lisp (*cvs-options-arg*): Constant removed.
698     (*cvs-options*, *create-options*, *grab-options*, *checkout-options*,
699     *add-options*, *remove-options*, *update-options*,
700     *switch-options*, *commit-options*, *diff-options*, *tag-options*,
701     *log-options*, *status-options*, *annotate-options, *filt-options*,
702     *convert-options*, *branch-options*, *merge-options*,
703     *remerge-options*, *list-branches-options*, *remap-options*,
704     *purge-options*, *restore-options*, *prop-options*): Constant
705     definitions refactored using define-option-constant macro.
706     (*mcvs-command-table*): Use , rather than ,@ to insert
707     option specs.
708     (*usage*): Suggest cleaner syntax for prop options.
709     (mcvs-execute): Switch to new parse-opt.
710    
711 kaz 1.162 2002-09-05 Kaz Kylheku <kaz@ashi.footprints.net>
712    
713 kaz 1.164 New prop command for manipulating property lists.
714    
715     * code/mcvs-main.lisp (*prop-options*): New constant.
716     (*mcvs-command-table*): New entry.
717     (*usage*): Update.
718    
719     * code/mapping.lisp (mapping-entry-parse-plist): Just unconditionally
720     set execute slot based on :exec property.
721    
722     * code/prop.lisp: New file.
723    
724     2002-09-05 Kaz Kylheku <kaz@ashi.footprints.net>
725    
726 kaz 1.163 Be transparent with respect to mapping entry property lists:
727     preserve unrecognized indicators and values.
728    
729     * code/mapping.lisp (mapping-entry): New slot, raw-plist,
730     records raw property list from external mapping representation.
731     (mapping-entry-parse-attributes): Renamed to mapping-entry-parse-plist.
732     Argument dropped; parses raw-plist slot instead.
733     (mapping-convert-in): Set raw-plist slot to value of fourth list
734     element of :FILE entry, or fifth list element of :SYMLINK entry.
735     (mapping-convert-out): Unify any slot values that are represented as
736     properties into raw-plist, and insert any non-empty plists into
737     external representation.
738    
739     2002-09-05 Kaz Kylheku <kaz@ashi.footprints.net>
740    
741 kaz 1.162 Low level support for versioning executable bit.
742    
743     * code/unix-bindings/unix.lisp (unix-funcs:chmod): New callout
744     function.
745    
746     * code/clisp-unix.lisp (executable-p, make-executable,
747     make-non-executable): New generic functions.
748     (executable-p (file-info), make-executable (file-info),
749     make-executable (string), make-non-executable (file-info),
750     make-non-executable (string)): New methods.
751    
752     * code/add.lisp (mcvs-add): Record whether new file is
753     executable or not, by setting executable slot in mapping-entry.
754    
755     * code/create.lisp (mcvs-create): Likewise.
756    
757     * code/sync.lisp (synchronize-files): New parameter,
758     should-be-executable, tells function which way to set
759     permissions after synchronizing files.
760    
761     * code/mapping.lisp (mapping-entry): New slot, executable.
762     (mapping-entry-parse-attributes): New function, parses
763     new optional property list from :FILE entries in a mapping.
764     (mapping-convert-in): Parse property list that may be present in fourth
765     list element of a :FILE entry.
766     (mapping-convert-out): Write out executable flag as
767     :EXEC property, if true.
768     (mapping-synchronize): Pass executable flag down to synchronize-files.
769    
770 kaz 1.161 2002-09-02 Kaz Kylheku <kaz@ashi.footprints.net>
771    
772     * code/grab.lisp (determine-moved-files): Rename local
773     variable for clarity.
774     (determine-moved-symlinks): Actually compute what symlinks
775     are moved. Takes one more argument, the stable-files list.
776     (mcvs-grab): Fix small destructuring-bind bug in symlink
777     moving code. Also, read the targets of moved symlinks into
778     the map, like it is already done with stable symlinks.
779    
780 kaz 1.160 2002-09-01 Kaz Kylheku <kaz@ashi.footprints.net>
781    
782     * code/grab.lisp (mcvs-grab): Iterate over stable symlinks,
783     and incorporate changed targets into the mapping. In other
784     words, notice and incorporate retargetted symlinks.
785    
786 kaz 1.159 2002-08-31 Kaz Kylheku <kaz@ashi.footprints.net>
787    
788     Merging new symbolic link support from symlink-branch.
789    
790 kaz 1.160 * code/mapping.lisp (mapping-update): Resolve merge conflict.
791 kaz 1.159 The branch fixed the 2002-08-24 bug also.
792    
793     2002-08-31 Kaz Kylheku <kaz@ashi.footprints.net>
794    
795     * code/grab.lisp (move-candidates): Function renamed to
796     determine-moved-files.
797     (determine-moved-symlinks): New function, doesn't do anything
798     yet.
799     (mcvs-grab): Updated to process symlinks and use new
800     mapping-entry structure.
801    
802     2002-08-26 Kaz Kylheku <kaz@ashi.footprints.net>
803    
804     * code/remap.lisp (mcvs-remap): Use new mapping entry structure.
805     For now, preserve symbolic link entries as they are, processing only
806     files.
807    
808     * code/mapping.lisp (equal-mapping-entries, equal-mappings): New
809     functions.
810    
811     2002-08-25 Kaz Kylheku <kaz@ashi.footprints.net>
812    
813     * code/clisp-unix.lisp (initialize-instance link-error): Make
814     error message less confusing about which path refers to the
815     object being created, and which path refers to what it links to.
816    
817     * code/mapping.lisp (mapping-rename-files): Bugfix: destructuring-bind
818     appeared in place of with-slots.
819     (mapping-synchronize): When creating symbolic link, ensure that
820     its directory exists.
821     (mapping-update): Likewise.
822    
823     2002-08-25 Kaz Kylheku <kaz@ashi.footprints.net>
824    
825     * code/add.lisp (mcvs-add): Change to new mapping-entry data structure
826     and handle symbolic links.
827    
828     * code/create.lisp (mcvs-create): Likewise.
829    
830     * code/filt.lisp (make-filt-hash, mcvs-filt): Change to new
831     mapping-entry data structure. Filt does not care about symlinks.
832    
833     * code/types.lisp (types-remove-ignores, types-make-cvs-adds):
834     Change to new mapping-entry data structure.
835    
836     * code/mapping.lisp (mapping-generate-name): Renamed to
837     mapping-generate-id. Interface changes slightly.
838     (mapping-extract-kind): New function, factored out from mcvs-generic.
839     (mapping-update): Unlink existing symbolic link before
840     re-linking it.
841    
842     * code/convert.lisp (mcvs-convert): Use new name and interface
843     of mapping-generate-name function.
844    
845     * code/create.lisp (mcvs-create): Likewise.
846    
847     * code/generic.lisp (mcvs-generic): Code to extract :file
848     entries from map factored out to mapping-extract-kind.
849    
850    
851     2002-08-25 Kaz Kylheku <kaz@ashi.footprints.net>
852    
853     * code/generic.lisp (mcvs-generic): Use new mapping-entry data structure.
854     Filter out mapping entries which are other than of the :file type, so
855     we don't pass to CVS things it doesn't know about, like symbolic
856     links.
857    
858     2002-08-24 Kaz Kylheku <kaz@ashi.footprints.net>
859    
860     Support for symbolic links added to the mapping module. The format of
861     the map file has changed to accomodate this. The new format of the
862     list entries is (:keyword "id" "path" ...) where the keyword is either
863     :file or :symlink (for now, extensible obviously), "id" is a unique
864     identifier (for regular files, it is their MCVS/F-* name) and "path" is
865     the sandbox path. Other things can follow; for symlinks, there is a
866     string representing the symlink target. Internally, a new data type
867     called mapping-entry is used; this is a struct. So the functions which
868     read and write maps now convert between the struct format and the above
869     format.
870    
871     * code/unix-bindings/unix.lisp (unix-funcs:readlink): New function.
872    
873     * code/unix-bindings/impl.c (impl_readlink): New function.
874    
875     * code/clisp-unix.lisp (readlink-error): New condition.
876     (initialize-instance readlink-error): New method for
877     initialize-instance generic function, specialized for readlink-error.
878     (readlink): New function.
879    
880     * code/mapping.lisp (mapping-entry): New struct, with slots
881     file, id, path and target.
882     (mapping-same-object-p): Renamed to mapping-same-id-p.
883     (mapping-object-lookup, mapping-moved-p): Unused functions removed.
884     (mapping-extract-paths, mapping-lookup, mapping-prefix-lookup,
885     mapping-prefix-matches, mapping-same-path-p, mapping-rename-files,
886     mapping-removed-files): Functions updated to use the new data
887     structure.
888     (mapping-dupe-checks): Rewritten for new data structure, and to
889     use hashes rather than silly sorting.
890     (mapping-convert-old-style-in, mapping-convert-in,
891     mapping-convert-out): New functions.
892     (mapping-read): Handle new and old style representations,
893     handle conversion to internal representation.
894     (mapping-write): Convert to new-style external representation
895     before writing out.
896     (mapping-synchronize): Handle symbolic links. If a link is missing,
897     create it. If it's present but different from what it should be,
898     erase it and re-create it.
899     (mapping-update): Use new data structure. Handle symbolic links.
900    
901     * code/remove.lisp (mcvs-remove): Refer to new function
902     name, mapping-same-id-p.
903    
904 kaz 1.158 2002-08-24 Kaz Kylheku <kaz@ashi.footprints.net>
905    
906     * mapping.lisp (mapping-update): Bugfix
907     in logic which prints clobbering moves. The functions
908     abstract-to-real-path and second were applied in the wrong order.
909    
910 kaz 1.159 2002-08-23 Kaz Kylheku <kaz@ashi.footprints.net>
911    
912     * code/clisp-unix.lisp (link-error): New slot, kind. Holds
913     the string "symbolic" or "hard".
914     (initialize-instance link-error): Use new slot in constructing
915     message.
916     (link): Specify "hard" value for :kind slot of condition.
917     (symlink): New function.
918    
919     * code/clisp-linux.lisp: Likewise.
920    
921 kaz 1.156 2002-08-17 Kaz Kylheku <kaz@ashi.footprints.net>
922    
923 kaz 1.159 * code/posix.lisp (execute-program): Function removed.
924     * code/clisp-linux.lisp (execute-program): Function added. Works
925 kaz 1.157 in terms of CLISP's run-program function rather than the shell
926     function, thus eliminating the need to build a command string
927     and escape shell characters.
928     * clisp-unix.lisp (excecute-program): Likewise.
929    
930     2002-08-17 Kaz Kylheku <kaz@ashi.footprints.net>
931    
932 kaz 1.159 * code/posix.lisp (edit-file): Function renamed to invoke-file-on,
933 kaz 1.156 because this name clashes with a standard Common Lisp symbol.
934 kaz 1.159 * code/types.lisp (types-let-user-edit): Updated to use new name.
935 kaz 1.156
936 kaz 1.155 2002-08-05 Kaz Kylheku <kaz@ashi.footprints.net>
937    
938     Use getcwd to to implement mcvs-locate.
939    
940     * code/unix-bindings/unix.lisp (getcwd): New call out,
941     invokes impl_getcwd.
942    
943     * code/unix-bindings/impl.c (impl_getcwd): New function,
944     use getcwd() to obtain current working directory, resizing dynamic
945     buffer if necessary to get the entire path.
946    
947     * code/clisp-unix.lisp (getcwd): New wrapper function.
948    
949     * code/dirwalk.lisp (go-up): Function removed.
950    
951     * code/mapping.lisp (mcvs-locate): Rewritten to obtain
952     path using getcwd, then try looking for MCVS directory
953     in successively shorter prefixes of that path.
954    
955 kaz 1.152 2002-08-04 Kaz Kylheku <kaz@ashi.footprints.net>
956    
957 kaz 1.154 Working back support for CLISP 2.27.
958    
959     * code/install.sh: Bogus *null-pointer* hack is no longer added
960     to the generated mcvs script, since we have our own FFI functions for
961     doing the test.
962    
963     * code/unix-bindings/unix.lisp (unix-funcs:null-pointer-p): New
964     function, tests a C pointer for null, returns T or NIL.
965     * code/unix-bindings/impl.c (impl_null_pointer_p): New function,
966     C implementation of unix-funcs:null-pointer-p.
967    
968     * code/clisp-unix.lisp (pointer-null): New macro, uses
969     ffi:foreign-address-null under CLISP 2.28 or greater, or
970     unix-funcs:null-pointer-p, under an older CLISP.
971    
972     2002-08-04 Kaz Kylheku <kaz@ashi.footprints.net>
973    
974 kaz 1.153 Fixes to get clean build from fresh checkout.
975    
976     * code/unix-bindings/link.sh: Remove test for presence of unix.c;
977     this was causing the failure to add the unix module to the module
978     list, which caused it to generate an empty modules.h file under
979     code/unix-bindings-linking-set, resulting in a bad build of lisp.run.
980    
981     * code/unix-bindings/Makefile: Add ``clean'' target, so we
982     can do a make clean here.
983    
984     2002-08-04 Kaz Kylheku <kaz@ashi.footprints.net>
985    
986 kaz 1.152 Retargetting CVS with new system call bindings that are not GNU/Linux
987     specific.
988    
989     * code/install.sh: The way Meta-CVS is installed changes now.
990     The argument is now a prefix above a bin and lib directory.
991     Invokes clisp-link to build a new CLISP linking set in the
992     directory code/unix-bindings-linking-set. The lisp executable
993     (lisp.run) is copied to $TARGET/lib/clisp/meta-cvs/ and the Meta-CVS
994     memory image is also copied there under the name lispinit.mem.
995     The mcvs script is then generated in $TARGET/bin, correctly referring
996     to these images.
997    
998     * code/system.lisp: Choose the new clisp-unix module, if running
999     under a CLISP image which has the new bindings loaded. Otherwise fall
1000     back on the old clisp-linux, which uses the linuxlibc6 module.
1001    
1002     * code/clisp-unix.lisp: New file, closely based on clisp-linux.lisp,
1003     but targetting new bindings in the unix-funcs package.
1004    
1005     * code/clisp-link: New file. Script borrowed from CLISP distribution,
1006     needed for building CLISP executables with custom modules added.
1007    
1008     * code/linkkit: New directory. This is needed by by clisp-link.
1009     * code/linkkit/modules.c: Borrowed file from CLISP, needed
1010     by clisp-link.
1011     * code/linkkit/clisp.h: Likewise.
1012     * code/linkkit/modules.d: Likewise.
1013    
1014     * code/unix-bindings: New directory. This is a module kit used
1015     by clisp-link to extend the Lisp executable and memory image
1016     with new C functions.
1017    
1018     * code/unix-bindings/link.sh: Definitions of variables needed
1019     by clisp-link.
1020    
1021     * code/unix-bindings/unix.lisp: The glue module which defines the Lisp
1022     interface to the external C functions. Most of the functions call
1023     directly into the system's C library, but a few call to wrapper
1024     functions. Compiling unix.lisp produces a unix.c file which is
1025     compiled and linked into the CLISP executable, and a unix.fas which
1026     contains the Lisp interface bits that are loaded as part of the Lisp
1027     image.
1028    
1029     * code/unix-bindings/Makefile: Rules for compiling the module, invoked by clisp-link.
1030    
1031     * code/unix-bindings/impl.c: Some special functions that help
1032     implement the binding.
1033    
1034 kaz 1.149 2002-07-31 Kaz Kylheku <kaz@ashi.footprints.net>
1035    
1036 kaz 1.150 More changes to syntax of grab command. Now -A must be
1037     specified to do a grab onto main trunk.
1038    
1039     * code/mcvs-main.lisp (*grab-options*): -A option added.
1040    
1041     * code/grab.lisp (mcvs-grab): Test for presence of -A
1042     option. Check that either -A or -r is present, but not both.
1043    
1044     2002-07-31 Kaz Kylheku <kaz@ashi.footprints.net>
1045    
1046 kaz 1.149 Syntax of grab command changed. The branch is no longer
1047     specified as an argument after the module name. Rather,
1048     it is specified using the -r option.
1049    
1050     * code/mcvs-main.lisp (*grab-options*): -r added to list.
1051    
1052     * code/grab.lisp (mcvs-grab, mcvs-grab-wrapper): Argument
1053     syntax change, support -r option.
1054 kaz 1.152
1055     * INSTALL: Instructions change, since building the GNU/Linux libc
1056     into CLISP is no longer required.
1057 kaz 1.149
1058 kaz 1.147 2002-07-27 Kaz Kylheku <kaz@ashi.footprints.net>
1059    
1060 kaz 1.148 * docs/meta-cvs.latex: Rewrote most of Introduction.
1061    
1062     2002-07-27 Kaz Kylheku <kaz@ashi.footprints.net>
1063    
1064 kaz 1.147 New scripts for building LaTeX document. These do the right thing
1065     to minimize the number of times latex is run. Make proved useless.
1066    
1067     * docs/generate.sh: New file.
1068     * docs/cleanup.sh: New file.
1069    
1070 kaz 1.146 2002-07-20 Kaz Kylheku <kaz@ashi.footprints.net>
1071    
1072     * INSTALL: Revising CLISP installation instructions to the
1073     easier method using --build.
1074    
1075 kaz 1.145 2002-07-18 Kaz Kylheku <kaz@ashi.footprints.net>
1076    
1077     * README: Renaming file to QUICK-GUIDE.
1078    
1079     2002-07-17 Kaz Kylheku <kaz@ashi.footprints.net>
1080 kaz 1.142
1081 kaz 1.144 * code/generic.lisp (mcvs-generic): Support new keyword,
1082     :no-fix-empty-file-list. Specifies that if no files are passed,
1083     and the --metaonly option is not present, the CVS command is to be
1084     executed without any file arguments.
1085     (mcvs-commit-wrapper): Specify :no-fix-empty-file-list t when
1086     calling mcvs-generic. Thus commit now has the behavior that
1087     when it is passed no file arguments, it does a true global commit.
1088    
1089     2002-07-16 Kaz Kylheku <kaz@ashi.footprints.net>
1090    
1091 kaz 1.143 * code/restore.lisp (mcvs-restore): Work properly with
1092     partial sandboxes; that is, move things to lost+found
1093     directory at the top of the partial sandbox, rather than
1094     the abstract root.
1095    
1096     2002-07-16 Kaz Kylheku <kaz@ashi.footprints.net>
1097    
1098 kaz 1.142 * code/mcvs-main.lisp (usage): Updated to describe restore
1099     command.
1100    
1101 kaz 1.139 2002-07-14 Kaz Kylheku <kaz@ashi.footprints.net>
1102    
1103 kaz 1.141 * code/grab.lisp (mcvs-grab): If there are only added files
1104     or only removed files, don't bother scanning any files,
1105     since there are no moves to compute.
1106    
1107     2002-07-14 Kaz Kylheku <kaz@ashi.footprints.net>
1108    
1109 kaz 1.140 * code/find-bind.lisp (vector-bind): New macro, binds symbols
1110 kaz 1.139 to elements of a vector.
1111     (find-bind-extract-vals): Rewrite using vectors. Fixes
1112     a bug: the old version was not handling duplicate keys
1113     properly.
1114     (find-bind): Integrate with new find-bind-extract-vals.
1115    
1116 kaz 1.138 2002-07-11 Kaz Kylheku <kaz@ashi.footprints.net>
1117    
1118     Directory structure rearrangement; source files are moved
1119     under code/ subdirectory. A documentation directory is added.
1120    
1121 kaz 1.133 2002-07-07 Kaz Kylheku <kaz@ashi.footprints.net>
1122    
1123 kaz 1.137 * move.lisp (move-guts): When moving multiple sources to
1124     a target directory, provide a restart to skip a bad source.
1125    
1126     2002-07-07 Kaz Kylheku <kaz@ashi.footprints.net>
1127    
1128 kaz 1.136 * seqfuncs.lisp (intersection-difference): Support a new
1129     keyword parameter :squash-nil.
1130    
1131     * mapping.lisp (mapping-difference): Filter non-moved pairs
1132     directly in intersection-difference call using :squash-nil,
1133     eliminating the need to do a second remove-if pass.
1134    
1135     2002-07-07 Kaz Kylheku <kaz@ashi.footprints.net>
1136    
1137 kaz 1.135 * mapping.lisp (mapping-difference): Rewrite using
1138     intersection-difference.
1139    
1140     2002-07-07 Kaz Kylheku <kaz@ashi.footprints.net>
1141    
1142 kaz 1.134 * grab.lisp (added-removed): Function removed.
1143     (mcvs-grab): Use new intersection-difference function
1144     instead of added-removed.
1145    
1146     2002-07-07 Kaz Kylheku <kaz@ashi.footprints.net>
1147    
1148 kaz 1.133 * seqfuncs.lisp (intersection-difference): New function.
1149    
1150 kaz 1.131 2002-07-06 Kaz Kylheku <kaz@ashi.footprints.net>
1151    
1152 kaz 1.132 * grab.lisp (mcvs-grab): Upgraded to work with partial sandbox.
1153     Extra parameter added to specify subdirectory. File analysis
1154     is only done on visible files.
1155     (mcvs-grab-wrapper): Take optional parameter to specify
1156     subdirectory.
1157    
1158     2002-07-06 Kaz Kylheku <kaz@ashi.footprints.net>
1159    
1160     * mapping.lisp (mapping-update): If no-delete-removed is
1161     true, nevertheless print the ``* removing...'' messages
1162     to show that removal from the mapping is going on.
1163    
1164     2002-07-06 Kaz Kylheku <kaz@ashi.footprints.net>
1165    
1166     * remap.lisp (mcvs-remap): Remap only the visible sandbox,
1167     and combine resulting map with the invisible portion.
1168    
1169     2002-07-06 Kaz Kylheku <kaz@ashi.footprints.net>
1170    
1171     * remove.lisp (mcvs-remove): Added path conversions to support
1172     partial sandboxes.
1173    
1174     2002-07-06 Kaz Kylheku <kaz@ashi.footprints.net>
1175    
1176     * generic.lisp (mcvs-generic): Added path conversions to support
1177     partial sandboxes.
1178    
1179     2002-07-06 Kaz Kylheku <kaz@ashi.footprints.net>
1180    
1181     * add.lisp (mcvs-add): Added path conversions to support
1182     partial sandboxes.
1183    
1184     2002-07-06 Kaz Kylheku <kaz@ashi.footprints.net>
1185    
1186 kaz 1.131 * grab.lisp (mcvs-grab): Bugfix: determination of common words
1187     was failing on small file sets because the min function was
1188     used instead of the max to compute the threshold.
1189 kaz 1.132
1190     2002-07-05 Kaz Kylheku <kaz@ashi.footprints.net>
1191    
1192     * move.lisp (source-check): Use real source path for checking
1193     against MCVS/ area.
1194     (mcvs-move): Ditto for destination path.
1195    
1196     2002-07-05 Kaz Kylheku <kaz@ashi.footprints.net>
1197    
1198     * mapping.lisp (mapping-update): Make sure only those files
1199     are processed which are visible in the sandbox. If a file
1200     is moved out of or into visibility, this is indicated in the
1201     diagnostic output.
1202    
1203     2002-07-05 Kaz Kylheku <kaz@ashi.footprints.net>
1204    
1205     * mapping.lisp (real-path-exists): Use path-prefix-equal, because
1206     that handles all the tricky cases.
1207     (abstract-to-real-path): Handle the case when abstract path
1208     is the same as the path prefix, with or without the trailing
1209     slash.
1210    
1211     2002-07-05 Kaz Kylheku <kaz@ashi.footprints.net>
1212    
1213     Start of experimental ``partial sandbox'' work.
1214    
1215     * mapping.lisp (*mcvs-displaced-name*, *mcvs-displaced*): New
1216     constants, hold name of administrative file MCVS/DISPLACED which stores
1217     the displaced path prefix.
1218     (*displaced-path-prefix*): New special variable, holds displaced
1219     path prefix read from MCVS/DISPLACED.
1220     (*displaced-path-length*): New special variable, holds length
1221     of string stored in *displaced-path-prefix*.
1222     (real-path-exists, abstract-to-real-path, real-to-abstract-path):
1223     New functions for mapping between actual sandbox path, and
1224     the abstract sandbox path stored in the mapping.
1225     (in-sandbox-root-dir): Macro modified to read *mcvs-displaced*
1226     administrative file, and set up the new special variables.
1227     (mapping-synchronize): Only operate on files that are present
1228     in the sandbox; i.e. that have real paths corresponding to their
1229     abstract paths. Convert to the real path when calling lower
1230     level file manipulation functions.
1231     (mapping-update): Likewise, but this conversion is not complete.
1232     (displaced-path-read, displaced-path-write): New functions for
1233     reading and writing MCVS/DISPLACED.
1234    
1235     * checkout.lisp (mcvs-checkout): One extra optional parameter.
1236     Specifies the subdirectory for executing a partial checkout.
1237     (mcvs-checkout-wrapper): Parse out optional parameter.
1238    
1239     * grab.lisp (mcvs-grab): For now, when calling mcvs-checkout,
1240     specify the new parameter as nil. Eventually, grab will work
1241     over partial checkouts.
1242    
1243     * move.lisp: Upgraded to work with partial sandboxes.
1244     (source-check): Convert source parameter to real path for
1245     existence check.
1246     (move-guts): Convert destination parameter to real path before
1247     invoking (stat ...) on it.
1248     (mcvs-move): Map all path arguments to abstract paths.
1249 kaz 1.131
1250 kaz 1.130 2002-07-04 Kaz Kylheku <kaz@ashi.footprints.net>
1251    
1252     * find-bind.lisp (find-bind-extract-vals): Rewrite for
1253     efficiency. No impact on Meta-CVS, just done for the sake of improving
1254     the quality of this highly reusable code. There is specialized
1255     code now depending on whether the input sequence is a list or
1256     a vector. A single pass is made over the sequence, with multiple
1257     passes over the search values. The sequence could be large,
1258     whereas the list of search values is typically going to be small.
1259     (find-bind): Modified to reflect slight interface change
1260     in find-bind-extract-vals.
1261    
1262 kaz 1.129 2002-07-03 Kaz Kylheku <kaz@ashi.footprints.net>
1263    
1264     * mcvs-main.lisp (*usage*): Describe --meta and --metaonly options.
1265    
1266 kaz 1.127 2002-07-02 Kaz Kylheku <kaz@ashi.footprints.net>
1267    
1268 kaz 1.128 * purge.lisp (mcvs-purge): Factor out code for computing
1269     deleted files.
1270    
1271     * mapping.lisp (mapping-removed-files): New function, contains
1272     code factored from mcvs-purge.
1273    
1274     * restore.lisp: New file.
1275     (mcvs-restore, mcvs-restore-wrapper): New functions.
1276    
1277     2002-07-02 Kaz Kylheku <kaz@ashi.footprints.net>
1278    
1279 kaz 1.127 * checkout.lisp (mcvs-checkout): Don't delete the MCVS directory
1280     of an existing checkout.
1281    
1282 kaz 1.125 2002-07-01 Kaz Kylheku <kaz@ashi.footprints.net>
1283    
1284 kaz 1.126 Adding purge command.
1285    
1286     * mcvs-main.lisp (*purge-options*): New constant.
1287     (*mcvs-command-table*): New entry.
1288     (*usage*): Update.
1289    
1290     * purge.lisp: New file.
1291     (mcvs-purge, mcvs-purge-wrapper): New functions.
1292    
1293     2002-07-01 Kaz Kylheku <kaz@ashi.footprints.net>
1294    
1295 kaz 1.125 Grab no longer synchronizes to recreate deleted files immediately
1296     before blowing them away.
1297    
1298     * grab.lisp (mcvs-grab): Specify :no-sync t when calling mcvs-remove.
1299    
1300     * remove.lisp (mcvs-remove): Support new no-sync keyword. This tells
1301     mcvs-remove that the files being removed from the mapping,
1302     don't exist in the sandbox. So it's not necessary to call
1303     mapping-synchronize, and mapping-update can be told via
1304     :no-delete-removed t not to try to remove deleted files.
1305    
1306     * mapping.lisp (mapping-update): New no-delete-removed keyword
1307     parameter.
1308    
1309 kaz 1.121 2002-06-29 Kaz Kylheku <kaz@ashi.footprints.net>
1310 kaz 1.120
1311 kaz 1.123 * create.lisp (mcvs-create): Take out vendor branch parameter,
1312     use "Created-by-Meta-CVS" as the vendor tag.
1313     (mcvs-create-wrapper): Take out vendor branch parameter.
1314    
1315     2002-06-29 Kaz Kylheku <kaz@ashi.footprints.net>
1316    
1317 kaz 1.122 * generic.lisp (mcvs-tag-wrapper): This one needs to include
1318     meta files by default.
1319    
1320     2002-06-29 Kaz Kylheku <kaz@ashi.footprints.net>
1321    
1322 kaz 1.120 Moving toward sane, user-friendly handling of meta-files.
1323     Two new options are added --meta and --metaonly.
1324     All reporting commands---diff, log, annotate---default to
1325     not including the meta files. The update command remains special.
1326     It does not include meta files if given filename arguments.
1327     If invoked with no arguments, it does a global CVS up.
1328     The commit command defaults to including the meta files.
1329     The three options simply override default behavior.
1330    
1331 kaz 1.124 * options.lisp (*nometa-option*): Eliminated useless docstring.
1332 kaz 1.120 (*meta-option*): New variable.
1333     (*nometa-option*): New variable.
1334     (filter-global-options): Clean rewrite using find-bind.
1335    
1336     * generic.lisp (mcvs-generic): New keyword parameters
1337     default-include-meta-files, need-update-after. Implements new logic
1338     related to the new options. Performs (mapping-update) if
1339     need-update-after is true and metafiles were subject to cvs update.
1340     (mcvs-commit-wrapper): Calls mcvs-generic with
1341     :default-include-meta-files t.
1342    
1343     * update.lisp (mcvs-update): No longer overrides the *nometa-option*
1344     special variable. Passes :need-update-after t to mcvs-generic.
1345    
1346     * mcvs-main.lisp (*cvs-options*): New options entered into list.
1347    
1348 kaz 1.121 2002-06-28 Kaz Kylheku <kaz@ashi.footprints.net>
1349 kaz 1.114
1350 kaz 1.119 * memoize.lisp (memoize-expander): Use ordinary hash for memoizing
1351     monadic functions.
1352    
1353 kaz 1.121 2002-06-28 Kaz Kylheku <kaz@ashi.footprints.net>
1354 kaz 1.119
1355 kaz 1.117 Word comparisons are case-insensitive in mcvs grab now.
1356     Also, common words are determined and eliminated from the correlation.
1357     Common words are those that appear in at least 5 of the
1358     added or removed files, or 20% of them, whichever is greater.
1359    
1360     Noticed some unnecessary use of string-lessp on F-file names in
1361     mapping.lisp.
1362    
1363     * grab.lisp (read-word-hash): Use #'equalp test for case-insensitive
1364     string comparisons.
1365     (added-removed): Use string< instead of string-lessp for comparing
1366     paths.
1367     (determine-common-words, eliminate-common-words): New functions.
1368 kaz 1.118 (move-candidates): Acceptance threshold reduced to 30%, since
1369 kaz 1.117 elimination of common words reduces the similarity correlation.
1370     (mcvs-grab): Use string< instead of string-lessp when sorting paths.
1371     Do the common words computation.
1372    
1373     * mapping.lisp (mapping-dupe-check, mapping-write,
1374     mapping-difference): Use string< instead of string-lessp.
1375    
1376 kaz 1.121 2002-06-28 Kaz Kylheku <kaz@ashi.footprints.net>
1377 kaz 1.117
1378 kaz 1.116 * memoize.lisp (factor-memo-labels): New function, rips apart
1379     functions generated by memoize-expander, in order to factor
1380     out the multi-hash defining let blocks.
1381     (memoized-labels): Interface corrected. Also, use new function to
1382     generate a labels block that allows for mutually recursive memoized
1383     functions which preserve hash contents across arbitrarily mutually
1384     recursive calls. This is done by enclosing the functions in one big
1385     let block which binds all the hashes.
1386    
1387 kaz 1.121 2002-06-28 Kaz Kylheku <kaz@ashi.footprints.net>
1388 kaz 1.116
1389 kaz 1.115 * seqfuncs.lisp (lcs-list): Specify #'eq test for memoization
1390     parameters.
1391    
1392 kaz 1.121 2002-06-28 Kaz Kylheku <kaz@ashi.footprints.net>
1393 kaz 1.115
1394 kaz 1.114 Adding some cool code: a multi-hash datatype which implements
1395     multi-dimensional sparse arrays using a tree of hash tables,
1396     and a function memoizer which uses multi hash to index on
1397     function arguments.
1398    
1399     * multi-hash.lisp (multi-hash): New class.
1400     (initialize-instance): New method on multi-hash.
1401     (multi-hash-common-code): New macro.
1402     (get-multi-hash, set-multi-hash): New functions.
1403    
1404     * memoize.lisp (define-memoized-function,
1405     memoized-labels): New macros.
1406     (remove-key-aux-rest strip-lambda-list, extract-tests,
1407     remove-tests, memoize-expander): New functions.
1408    
1409     * seqfuncs.lisp (lcs-list): Function is now correctly
1410     memoized using define-memoized-function.
1411    
1412 kaz 1.113 2002-06-26 Kaz Kylheku <kaz@ashi.footprints.net>
1413    
1414     * grab.lisp (read-word-hash): Memory use optimizations: use smaller
1415     initial size for tokens; re-use the same token object when the
1416     hash already contains a duplicate.
1417     (correlate): Renamed to correlate-word-hashes.
1418     (correlate-paths): New function; computes a confidence-reducing
1419     factor based on the differences between two paths.
1420     (move-candidates): Use correlate-paths to lower the confidence
1421     for distant moves. This could help sort out ambiguities when
1422     projects contain very similar or duplicate files which are subject
1423     to parallel moves.
1424    
1425     * seqfuncs.lisp (lcs-list, lcs-vector,
1426     longest-common-subsequence): New functions.
1427    
1428 kaz 1.112 2002-06-25 Kaz Kylheku <kaz@ashi.footprints.net>
1429    
1430     New feature: grab command. Takes snapshot of code and imports
1431     it to a branch, trying to determine which of the added and
1432     removed files are actually moves.
1433    
1434     * grab.lisp: New file.
1435     (read-word-hash, word-hash-file, correlate, added-removed,
1436     move-candidates, mcvs-grab, mcvs-grab-wrapper): New functions.
1437    
1438     * mcvs-main.lisp (*grab-options*): New constant.
1439     (*mcvs-command-table*): New entry.
1440     (*usage*): New text.
1441    
1442     * checkout.lisp (mcvs-checkout): Write out MAP-LOCAL even
1443     if :no-generate t is specified.
1444    
1445 kaz 1.110 2002-06-24 Kaz Kylheku <kaz@ashi.footprints.net>
1446    
1447 kaz 1.111 * checkout.lisp (mcvs-checkout): New key parameter, no-generate.
1448     Tells the checkout function not to unpack the MCVS directory.
1449     This will be useful when mcvs-checkout is used as a subfunction
1450     of the new grab command. Failed CVS call is now turned into
1451     an error. The MCVS subdirectory is *always* deleted, even if the
1452     checkout did not create the checkout directory.
1453    
1454     2002-06-24 Kaz Kylheku <kaz@ashi.footprints.net>
1455    
1456 kaz 1.110 * dirwalk.lisp (dirwalk-fi): Bugfix: top call was not
1457     passing down keyword parameters to recursive call.
1458    
1459 kaz 1.107 2002-06-23 Kaz Kylheku <kaz@ashi.footprints.net>
1460    
1461 kaz 1.109 * posix.lisp (canonicalize-path): Use concatenate-string
1462     instead of format.
1463    
1464     2002-06-23 Kaz Kylheku <kaz@ashi.footprints.net>
1465    
1466 kaz 1.108 * posix.lisp (parse-posix-namestring): Clean rewrite.
1467    
1468     2002-06-23 Kaz Kylheku <kaz@ashi.footprints.net>
1469    
1470 kaz 1.107 The ``import'' command is renamed to ``create''.
1471    
1472     * mcvs.main (*create-options*): Renamed to *import-options*.
1473     (*mcvs-command-table*): Updated.
1474     (*usage*): Updated.
1475    
1476     * import.lisp: File renamed to create.lisp.
1477     (mcvs-import): Renamed to mcvs-create; some arguments renamed.
1478     (mcvs-import-wrapper): Renamed to mcvs-create-wrapper.
1479    
1480     * README: Updated.
1481    
1482 kaz 1.104 2002-06-22 Kaz Kylheku <kaz@ashi.footprints.net>
1483    
1484 kaz 1.106 * split.lisp (split-fields): Optimized to extract tokens directly
1485     from the input string using subseq rather than construct them
1486     character by character.
1487 kaz 1.105
1488     2002-06-22 Kaz Kylheku <kaz@ashi.footprints.net>
1489    
1490 kaz 1.104 * find-bind.lisp (find-bind): Use #'values instead of #'(lambda (x) x).
1491    
1492 kaz 1.102 2002-06-21 Kaz Kylheku <kaz@ashi.footprints.net>
1493    
1494 kaz 1.103 * clisp-linux.sh (:clisp-old): Added to *features*
1495     for CLISP 2.28 or higher.
1496     (*null-pointer*): Only defined when :clisp-old is present.
1497     (pointer-null): Use new ffi:foreign-pointer-null if :clisp-old
1498     feature is not present.
1499    
1500     * install.sh: Don't do *null-pointer* workaround hack
1501     unless :clisp-old feature is present in the memory image.
1502    
1503     2002-06-21 Kaz Kylheku <kaz@ashi.footprints.net>
1504    
1505 kaz 1.102 * types.lisp (types-make-cvs-adds): Serious bugfix. Forgot
1506     to strip MCVS/ prefix from those F- files which don't match
1507     any type entries. This caused cvs add to fail for unsuffixed
1508     files.
1509    
1510 kaz 1.101 2002-06-08 Kaz Kylheku <kaz@ashi.footprints.net>
1511    
1512     * types.lisp (types-to-import-wrapper-args): Don't use backquote
1513     template to generate a list that will be destructively catenated
1514     by mapcan.
1515    
1516 kaz 1.100 2002-05-22 Kaz Kylheku <kaz@ashi.footprints.net>
1517    
1518     * checkout.lisp (mcvs-checkout): If a checkout directory is
1519     created and then the CVS checkout fails, the directory is
1520     then removed.
1521    
1522 kaz 1.97 2002-05-20 Kaz Kylheku <kaz@ashi.footprints.net>
1523    
1524 kaz 1.100 * find-bind.lisp (find-bind-extract-vals, find-bind): Process default
1525 kaz 1.99 values in find-bind-extract-vals, instead of in the expansion of
1526     find-bind, thereby reducing some macro bloat.
1527    
1528     2002-05-20 Kaz Kylheku <kaz@ashi.footprints.net>
1529    
1530 kaz 1.98 * remap.lisp (mcvs-remap): Loads MAP as well as MAP-LOCAL.
1531     If it the mappings differ, an error is signaled. The user can choose
1532     to ignore the error, in which case MAP is clobbered.
1533    
1534     2002-05-20 Kaz Kylheku <kaz@ashi.footprints.net>
1535    
1536 kaz 1.97 Adding mcvs remap command.
1537    
1538     * dirwalk.lisp (dirwalk-fi, dirwalk, for-each-file-info): Default
1539     behavior is now preorder (visit directory before its entries).
1540     A keyword is provided to select the old postorder behavior.
1541     A catch is provided in dirwalk-fi that allows the caller to
1542     skip processing the currently traversed directory. The for-each-*
1543     macros provide a local function called (skip) to do this.
1544     (delete-recursive): This function depends on postorder behavior
1545     in for-each-file-info, so it explicitly selects it now.
1546    
1547     * mcvs.lisp (*remap-options*): New constant.
1548     (*mcvs-command-table*): Add entry for new function.
1549     (*usage*): Describes new function.
1550    
1551     * remap.lisp: New file.
1552     (mcvs-remap, mcvs-remap-wrapper): New functions.
1553    
1554 kaz 1.96 2002-05-15 Kaz Kylheku <kaz@ashi.footprints.net>
1555    
1556     * sync.lisp (synchronize-files): Signal an error when the two files
1557     to be synchronized have the same time stamp. Provide two restarts
1558     for doing the synchronization either way.
1559    
1560 kaz 1.95 2002-05-06 Kaz Kylheku <kaz@ashi.footprints.net>
1561    
1562     * mapping.lisp (in-sandbox-root-dir): Fix symbol macro
1563     sandbox-down-path; it was referring to the (quote #:DOWNPATH-NNN)
1564     rather than #:DOWNPATH-NNN.
1565    
1566 kaz 1.93 2002-05-04 Kaz Kylheku <kaz@ashi.footprints.net>
1567    
1568 kaz 1.94 * import.lisp (mcvs-import): Specify -I ! argument to cvs import
1569     so that it does not ignore any F- files.
1570    
1571     2002-05-04 Kaz Kylheku <kaz@ashi.footprints.net>
1572    
1573 kaz 1.93 * mapping.lisp (mapping-update): Provide restart that allows
1574     user to ignore file removal error.
1575    
1576 kaz 1.92 2002-04-19 Kaz Kylheku <kaz@ashi.footprints.net>
1577    
1578     Porting to CMUCL.
1579    
1580     * system.lisp: Conditionally load new module cmucl-unix.
1581    
1582     * mapping.lisp (mapping-dupe-check, mapping-write,
1583     mapping-difference): Fixes related to sort function; we were
1584     relying on CLISP's preservation of the cons cell order.
1585    
1586     * cmucl-unix.lisp: New file.
1587    
1588 kaz 1.89 2002-04-17 Kaz Kylheku <kaz@ashi.footprints.net>
1589    
1590 kaz 1.90 * checkout.lisp (mcvs-checkout): Allow -d to specify current
1591     directory as the checkout directory. Do not complain if the
1592 kaz 1.91 target directory exists, just try to use it anyway,
1593     unless it is the root of an existing Meta-CVS sandbox. Use
1594 kaz 1.90 the mapping-update function to update the sandbox.
1595     These changes allow a Meta-CVS sandbox to blend with an existing
1596     directory structure, a useful feature.
1597    
1598     2002-04-17 Kaz Kylheku <kaz@ashi.footprints.net>
1599    
1600 kaz 1.89 * generic.lisp (mcvs-generic): Change how empty file argument list
1601     is handled. Rather than rewriting it to '(".") we do a proper
1602     map-prefix-lookup. Synchronizing and invoking CVS is elided
1603     if the resulting list of files to process is empty and the --nometa
1604     option is specified.
1605    
1606 kaz 1.87 2002-04-16 Kaz Kylheku <kaz@ashi.footprints.net>
1607    
1608 kaz 1.88 * branch.lisp (parse-sticky): New function.
1609     (read-cvs-entries): New function.
1610     (same-tag-check): New function.
1611     (what-tag-are-we-on): Renamed to what-are-we-sticky-to. Calls
1612     parse-sticky to return structured tag.
1613     (mcvs-merge): Make use of structured tags.
1614     (mcvs-list-branches): Make use of structured tags. Indicate
1615     when sandbox is inconsistently sticky.
1616    
1617     2002-04-16 Kaz Kylheku <kaz@ashi.footprints.net>
1618    
1619 kaz 1.87 * remove.lisp (mcvs-remove): Corrected careless bracketing
1620     introduced on 2002-03-15 that rendered this function ineffective.
1621    
1622 kaz 1.85 2002-04-04 Kaz Kylheku <kaz@ashi.footprints.net>
1623 kaz 1.82
1624 kaz 1.86 Absolute paths resolved against sandbox root.
1625    
1626     * posix.lisp (path-absolute-p): New function. Predicate to
1627     test whether a path is absolute.
1628    
1629     * mapping.lisp (in-sandbox-root-dir): sandbox-translate-paths
1630     function detects absolute path, and treats it as relative to
1631     sandbox root.
1632    
1633     2002-04-04 Kaz Kylheku <kaz@ashi.footprints.net>
1634    
1635 kaz 1.84 New switch command added, plus sticky tag related
1636     bugfixes and enhancement of mcvs list-branches.
1637    
1638     mcvs-main.lisp (*switch-options*): New constant.
1639     (*mcvs-command-table*): New entries.
1640     (*usage*): New help text.
1641    
1642     branch.lisp (what-branch-are-we-on): Function renamed to
1643     what-tag-are-we-on. Tests the first letter which is T or N; if
1644     it is not T, then it's not a branch tag. If there is a tag,
1645     it returns two values; the second value is NIL if it is not
1646     a branch tag, T otherwise.
1647     (mcvs-merge): Modified to use what-tag-are-we-on.
1648     (mcvs-list-branches): Show additional information about the
1649     current sticky tag.
1650     (mcvs-merge-wrapper): Fix wrong parenthesization introduced
1651     earlier today.
1652     (mcvs-switch-wrapper): New function.
1653    
1654 kaz 1.85 2002-04-04 Kaz Kylheku <kaz@ashi.footprints.net>
1655 kaz 1.84
1656 kaz 1.83 * branch.lisp (branch-tag-check): Check reserved symbol HEAD.
1657    
1658 kaz 1.85 2002-04-04 Kaz Kylheku <kaz@ashi.footprints.net>
1659 kaz 1.83
1660 kaz 1.82 New command to list branches.
1661    
1662     * mcvs-main.lisp (*list-branches-options*): New constant.
1663     (*mcvs-command-table*): Entries for new command added.
1664     (*usage*): Help text added.
1665    
1666     * branch.lisp (mcvs-list-branches,
1667     mcvs-list-branches-wrapper): New functions.
1668    
1669 kaz 1.80 2002-04-03 Kaz Kylheku <kaz@ashi.footprints.net>
1670    
1671 kaz 1.81 * branch.lisp (where-is-the-repository): New function.
1672     (cvs-make-or-advance-tag): Pass down CVSROOT to cvs rtag using
1673     the -d global option.
1674    
1675     2002-04-03 Kaz Kylheku <kaz@ashi.footprints.net>
1676    
1677 kaz 1.80 * branch.lisp (what-module-is-this): New function.
1678     (cvs-make-or-advance-tag): Use rtag rather than tag for tagging
1679     the branch being merged. This fixes the failure to merge added files.
1680     (mcvs-merge): Use mcvs-update rather than directly using cvs.
1681    
1682 kaz 1.78 2002-04-02 Kaz Kylheku <kaz@ashi.footprints.net>
1683    
1684 kaz 1.79 Implemented remerge command; redo a merge without moving
1685     around any tags.
1686    
1687     * branch.lisp (mcvs-merge): New keyword parameter remerge-p
1688     to indicate that a re-merge should be done, plus logic for
1689     doing so.
1690     (mcvs-remerge-wrapper): New function.
1691    
1692     * mcvs-main.lisp (*remerge-options*): New constant.
1693     (*mcvs-command-table*): New entry for remerge command.
1694    
1695     2002-04-02 Kaz Kylheku <kaz@ashi.footprints.net>
1696    
1697 kaz 1.78 First cut at implementing more automated branching and merging.
1698    
1699     * mcvs-main.lisp (*branch-options*, *merge-options*): New constants.
1700     (*mcvs-command-table*): New entries for branch and merge commands.
1701     (*usage*): New help text.
1702    
1703     * branch.lisp: New file.
1704     (*branch-char*): New constant.
1705     (tags-from-cvs-log, what-branch-are-we-on, branch-tag-check,
1706     mcvs-branch, mcvs-branch-wrapper, cvs-make-or-advance-tag, mcvs-merge,
1707     mcvs-merge-wrapper): New functions.
1708    
1709 kaz 1.87 2002-04-01 Kaz Kylheku <kaz@ashi.footprints.net>
1710 kaz 1.77
1711     checkout.lisp (mcvs-checkout): Emit informational message
1712     when checkout completes, because it's not obvious what directory
1713     was just created.
1714    
1715 kaz 1.76 2002-02-38 Kaz Kylheku <kaz@ashi.footprints.net>
1716    
1717     Error checking added to mcvs move: verifies that all
1718     sources exist and are known to Meta-CVS.
1719    
1720     * move.lisp (source-check): New function.
1721     (simple-rename, simple-move-to-dir): Use new function.
1722    
1723 kaz 1.74 2002-03-20 Kaz Kylheku <kaz@ashi.footprints.net>
1724    
1725 kaz 1.75 * rcsparse.lisp: File renamed to rcs-utils.lisp.
1726     (rcs-delta): New slot, delta-hash.
1727     (rcs-make-delta-hash): New function.
1728     (rcs-parse): Calls rcs-make-delta-hash to set up new slot.
1729    
1730     * convert.lisp: require changed to match file rename.
1731    
1732     2002-03-20 Kaz Kylheku <kaz@ashi.footprints.net>
1733    
1734 kaz 1.74 Some new macros for slot access.
1735    
1736     * slot-refs.lisp: New file.
1737     (with-slot-refs): New macro.
1738     (with-multi-slot-refs): New macro.
1739    
1740     * rcsparse.lisp (rcs-parse-newphrases, rcs-parse-admin,
1741     rcs-parse-delta): Replace uses
1742     of symbol-macrolet by with-slot-refs and with-multi-slot-refs.
1743    
1744 kaz 1.73 2002-03-19 Kaz Kylheku <kaz@ashi.footprints.net>
1745    
1746     Adding delta parsing to RCS parser.
1747    
1748     * rcsparse.lisp (rcs-delta): New struct.
1749     (rcs-file): New slot, deltas.
1750     (rcs-parse-newphrases): New function, factors out parsing of
1751     ``newphrases'' syntactic element out of rcs-parse-admin.
1752     (rcs-parse-admin): Use rcs-parse-newphrases.
1753     (rcs-parse-delta, rcs-parse-deltas): New functions.
1754     (rcs-parse): Parse both admin and deltas; store deltas in new
1755     rcs-file slot.
1756    
1757 kaz 1.72 2002-03-18 Kaz Kylheku <kaz@ashi.footprints.net>
1758    
1759     * posix.lisp (parse-posix-namestring): New function. Converts POSIX
1760     path to CL Path object.
1761 kaz 1.73
1762     * rcsparse.lisp: New file, implements RCS version file parser.
1763 kaz 1.72 (rcs-admin, rcs-file, rcs-token, rcs-token-stream): New structs.
1764     (rcs-peek-token, rcs-read-token): New generic functions.
1765     (rcs-extract-id-sym-or-num, rcs-extract-string,
1766     rcs-match-optional, rcs-match-token, rcs-parse, rcs-parse-admin,
1767     rcs-special-p): New functions.
1768    
1769     * convert.lisp (classify-tags): Work with association list rather
1770     than raw strings.
1771     (mcvs-convert): Use rcs-parse to extract tags. Fix call to
1772     mapping-generate name. Use parse-posix-namestring when opening
1773     version file. Generate informative chatter.
1774    
1775 kaz 1.69 2002-03-15 Kaz Kylheku <kaz@ashi.footprints.net>
1776    
1777 kaz 1.71 * remove.lisp (mcvs-remove): More detailed error checking.
1778     Checks for remove attempts against MCVS/ area, removes of local
1779     files not versioned under Meta-CVS, and nonexistent files.
1780    
1781     2002-03-15 Kaz Kylheku <kaz@ashi.footprints.net>
1782    
1783 kaz 1.70 * add.lisp (mcvs-add): Error message changed to tell user to use
1784     -R to add directory.
1785    
1786     * remove.lisp (mcvs-remove): New generalized boolean parameter
1787     indicates to do a recursive remove. This is controlled by the
1788     -R option which already exists. Behavior changed to not act
1789     on directories unless recursion is explicitly requested.
1790     (mcvs-remove-wrapper): Extract "R" option, pass down new boolean
1791     to mcvs-remove.
1792    
1793     2002-03-15 Kaz Kylheku <kaz@ashi.footprints.net>
1794    
1795 kaz 1.69 * remove.lisp (mcvs-remove-wrapper): Remove bogus error check.
1796    
1797 kaz 1.66 2002-03-14 Kaz Kylheku <kaz@ashi.footprints.net>
1798    
1799 kaz 1.68 * checkout.lisp (mcvs-checkout): Bugfix: must use checkout-dir, not
1800     module, when testing whether directory exists or was created properly.
1801    
1802     2002-03-14 Kaz Kylheku <kaz@ashi.footprints.net>
1803    
1804 kaz 1.67 Update takes file arguments now.
1805    
1806     * update.lisp (mcvs-update): If filename arguments are given, then
1807     just call mcvs-generic to do the work, but suppress the operation on
1808     meta files. If no filename arguments are given, then update everything.
1809     If the -p option is present, no synchronization is needed, before or
1810     after.
1811     (mcvs-update-wrapper): Pass command arguments down to mcvs-update.
1812    
1813     * mcvs-main.lisp (*update-options*): Add "p" option.
1814    
1815     * generic.lisp (mcvs-generic): New keyword parameter need-sync-after,
1816     a generalized boolean which can tell the function to do a
1817     mapping-synchronize after executing the CVS command.
1818    
1819     2002-03-14 Kaz Kylheku <kaz@ashi.footprints.net>
1820    
1821 kaz 1.66 * filt.lisp (filt-select-map): Do allow a date and revision to be
1822     specified; the revision could be a branch tag.
1823    
1824 kaz 1.62 2002-03-13 Kaz Kylheku <kaz@ashi.footprints.net>
1825    
1826 kaz 1.65 * mapping.lisp (malformed-map): New function.
1827     (mapping-dupe-check): Perform extra error checks when reading
1828     mapping, and turn them into a condition with a ``nice'' error message.
1829    
1830     2002-03-13 Kaz Kylheku <kaz@ashi.footprints.net>
1831    
1832 kaz 1.64 * mcvs-filt.lisp (filt-select-map): Handle error gracefully
1833     when reading map. It's easy to give CVS is a nonexistent tag.
1834    
1835     2002-03-13 Kaz Kylheku <kaz@ashi.footprints.net>
1836    
1837 kaz 1.63 The filt command takes arguments to select alternate revision
1838     of map.
1839    
1840     * mcvs-main.lisp (*filt-options*): New constant.
1841     (*mcvs-command-table*): Updated with new options.
1842     (mcvs-debug-shell): Restart name changed during debugging of filt
1843     changes.
1844    
1845     * filt.lisp (filt-select-map): New function. Loads either the
1846     local mapping, or retrieves an alternate mapping from CVS based
1847     on command line options.
1848     (mcvs-filt): Use filt-select-map rather than mapping-read.
1849    
1850     2002-03-13 Kaz Kylheku <kaz@ashi.footprints.net>
1851    
1852 kaz 1.62 * generic.lisp (mcvs-generic): Add .cvsignore to the list of
1853     metafiles.
1854    
1855 kaz 1.53 2002-03-12 Kaz Kylheku <kaz@ashi.footprints.net>
1856    
1857 kaz 1.61 * import.lisp (mcvs-import): Create a .cvsignore file for ignoring
1858     MAP-LOCAL.
1859    
1860     2002-03-12 Kaz Kylheku <kaz@ashi.footprints.net>
1861    
1862 kaz 1.60 Fix trailing slash bug in mcvs mv.
1863    
1864     * move.lisp (simple-move-to-dir): Canonicalize path after catenating
1865     destination and file base name. This nukes a double slash if
1866     we move to a name with a trailing slash.
1867     (move-guts): Treat a destination name that has a trailing slash
1868     as a directory, unless it exists already as a non-directory.
1869    
1870     2002-03-12 Kaz Kylheku <kaz@ashi.footprints.net>
1871    
1872 kaz 1.59 * mcvs-main.lisp (*cvs-options*): Added "error-terminate" and
1873     "error-continue".
1874     (*usage*): Update and reformat help text.
1875     (mcvs-execute): Process "error-terminate" and "error-continue"
1876     options.
1877    
1878     2002-03-12 Kaz Kylheku <kaz@ashi.footprints.net>
1879    
1880 kaz 1.58 * mapping.lisp (mapping-update): Messages related to moving,
1881     adding or removing files promoted to terse level, so only -Q
1882     can suppress them.
1883    
1884     2002-03-12 Kaz Kylheku <kaz@ashi.footprints.net>
1885    
1886 kaz 1.57 * update.lisp (mcvs-update): Changing level of chatter messages.
1887     * move.lisp (mcvs-move): Likewise.
1888     * add.lisp (mcvs-add): Likewise.
1889     * remove.lisp (mcvs-remove): Likewise.
1890     * checkout.lisp (mcvs-checkout): Likewise.
1891     * generic.lisp (mcvs-generic): Likewise.
1892     * import.lisp (mcvs-import): Likewise.
1893     * mapping.lisp (mapping-dupe-check): Likewise.
1894     (mapping-update): Likewise.
1895    
1896     2002-03-12 Kaz Kylheku <kaz@ashi.footprints.net>
1897    
1898 kaz 1.56 Support for -q, -Q and -e global options.
1899    
1900     * posix.lisp (*editor*): New special variable.
1901     (edit-file): Check *editor* variable; if not nil, use it.
1902    
1903     * mcvs-main.lisp (*usage*): Update help text.
1904     (mcvs-execute): Set *mcvs-chatter-level* according to -q or -Q.
1905     Set *editor* if -e is specified.
1906    
1907     2002-03-12 Kaz Kylheku <kaz@ashi.footprints.net>
1908    
1909 kaz 1.55 * mcvs-main.lisp (*cvs-options*): Remove obsolete "a".
1910     (*cvs-options-arg*): Add missing "r".
1911     (*usage*): New constant, help text.
1912     (mcvs-execute): Process help and version command line options.
1913    
1914     2002-03-12 Kaz Kylheku <kaz@ashi.footprints.net>
1915    
1916 kaz 1.54 * options.lisp (parse-opt): Make error messages more consistent.
1917    
1918     2002-03-12 Kaz Kylheku <kaz@ashi.footprints.net>
1919    
1920 kaz 1.53 * find-bind.lisp (find-bind): Make rem-var optional; sometimes
1921     the user might not care about the remaining unmatched list.
1922    
1923 kaz 1.49 2002-03-11 Kaz Kylheku <kaz@ashi.footprints.net>
1924    
1925 kaz 1.52 * find-bind.lisp (find-bind): Documentation string change. Clarify
1926     that default values are substituted whenever a variable would
1927     otherwise be bound to the value NIL, even through an explicit
1928     match.
1929    
1930     2002-03-11 Kaz Kylheku <kaz@ashi.footprints.net>
1931    
1932 kaz 1.51 Sane filtering of -d option in checkout.
1933    
1934     * find-bind.lisp (find-bind): Variable bindings can specify
1935     a third element, which provides a default value for any variables
1936     that turn out NIL.
1937    
1938     * checkout.lisp (mcvs-checkout): Filter out the -d dir option,
1939     and use it to override the name of the checkout directory,
1940     the way CVS checkout does it.
1941    
1942     2002-03-11 Kaz Kylheku <kaz@ashi.footprints.net>
1943    
1944 kaz 1.50 Bugfix: mcvs add was not processing existing :ignore's in MCVS/TYPES.
1945    
1946     * add.lisp (mcvs-add): Use old types as well as new types
1947     to filter for ignores.
1948    
1949     2002-03-11 Kaz Kylheku <kaz@ashi.footprints.net>
1950    
1951 kaz 1.49 * find-bind.lisp: New file.
1952     (find-bind-extract-vals): New function.
1953     (find-bind): New macro.
1954    
1955     * error.lisp (restart-destructure): Macro removed.
1956     (mcvs-error-handler): Uses generic find-bind instead of
1957     restart-destructure.
1958    
1959 kaz 1.43 2002-03-09 Kaz Kylheku <kaz@ashi.footprints.net>
1960    
1961 kaz 1.48 * filt.lisp (mcvs-filt): Bugfix: do not stop processing line
1962     if F- file name is not found in hash table.
1963    
1964     2002-03-09 Kaz Kylheku <kaz@ashi.footprints.net>
1965    
1966 kaz 1.47 Commit is handled through mcvs-generic, so it can take
1967     filename arguments, and honor --nometa.
1968    
1969     * commit.lisp: File removed.
1970     (mcvs-commit): Function removed.
1971     (mcvs-commit-wrapper): Moved to generic.lisp.
1972    
1973     * generic.lisp (mcvs-commit-wrapper): Moved from commit.lisp,
1974     changed to invoke mcvs-generic.
1975     (mcvs-generic): Only add TYPES file to list if it actually
1976     exists.
1977    
1978     2002-03-09 Kaz Kylheku <kaz@ashi.footprints.net>
1979    
1980 kaz 1.46 New --nometa command line option.
1981    
1982     * mcvs-main.lisp (*cvs-options*): Add "nometa" to list.
1983     (mcvs-execute): Filter global options to recognize
1984     Meta-CVS-specific ones.
1985    
1986     * options.lisp (*nometa-option*): New special variable.
1987     (filter-global-options): New function.
1988    
1989     * generic.lisp (mcvs-generic): Honor *nometa-option* special
1990     variable.
1991    
1992     2002-03-09 Kaz Kylheku <kaz@ashi.footprints.net>
1993    
1994 kaz 1.45 * generic.lisp (mcvs-generic): Make sure TYPES file is
1995     included in list of files.
1996    
1997     2002-03-09 Kaz Kylheku <kaz@ashi.footprints.net>
1998    
1999 kaz 1.44 * mcvs-main.lisp (*add-options*): Support -R option for add.
2000     Thus, recursive add works now.
2001    
2002     2002-03-09 Kaz Kylheku <kaz@ashi.footprints.net>
2003    
2004 kaz 1.43 Fix mcvs filt so it handles suffixed F- files properly.
2005    
2006     * filt.lisp (make-filt-hash): New function.
2007     (mcvs-filt): After matching hex digits, also check for
2008     a suffix match.
2009    
2010 kaz 1.40 2002-02-17 Kaz Kylheku <kaz@ashi.footprints.net>
2011    
2012 kaz 1.42 Support for file type keyword treatment under mcvs add.
2013    
2014     * add.lisp (mcvs-add): Restructured to build up list of new file
2015     suffixes, allow the user to edit the file which determines how
2016     they are treated, filter out ignored files and pass -k options
2017     to multiple cvs adds.
2018    
2019     * types.lisp (*mcvs-new-types*): New constant.
2020     (*types-comments*): Constant moved here from import.lisp.
2021     (types-remove-ignores): New function. Code factored out from
2022     mcvs-import.
2023     (types-let-user-edit): Likewise.
2024     (types-make-cvs-adds): New function.
2025    
2026     * import.lisp (*types-comments*): Constant removed. Moved to
2027     types.lisp
2028     (mcvs-import): Code factored out to new functions in types.lisp, which
2029     are also used by add.lisp.
2030    
2031     2002-02-17 Kaz Kylheku <kaz@ashi.footprints.net>
2032    
2033 kaz 1.41 * print.lisp: New file.
2034     (print-assoc-list): New function.
2035     * types.lisp: Use print-assoc-list to nicely print the types.
2036     * import.lisp (mcvs-import): Don't bother getting user to
2037     edit the types if the type list is empty. In fact, don't
2038     even create the file.
2039    
2040     2002-02-17 Kaz Kylheku <kaz@ashi.footprints.net>
2041    
2042     * add.lisp (mcvs-add): Use new form of mapping-generate-name.
2043    
2044     2002-02-17 Kaz Kylheku <kaz@ashi.footprints.net>
2045    
2046 kaz 1.40 * import.lisp (mcvs-import): Fix broken restart for re-editing
2047     the types file.
2048     (*types-comments*): Drastically shorten the help text.
2049    
2050 kaz 1.38 2002-02-16 Kaz Kylheku <kaz@ashi.footprints.net>
2051    
2052 kaz 1.39 Support for filetypes in import.
2053    
2054     * posix.lisp (suffix): Separator character parameter is optional;
2055     multiple occurences of character lead to one big suffix like
2056     ".tar.gz" instead of ".gz". A leading dot means it's not a suffix but
2057     a hidden file like ".exrc".
2058     (edit-file): New function, brings up text editor for specified file.
2059    
2060     * clisp-linux.lisp (env-lookup): New function for environment
2061     variable lookup.
2062    
2063     * types.lisp: New source file.
2064     (*mcvs-types-name*, *mcvs-types*): New constants for TYPES filename.
2065     (types-read, types-write, types-sanity-check,
2066     types-to-import-wrapper-args): New functions.
2067    
2068     * import.lisp (*types-comments*): New constant.
2069     (mcvs-import): Restructured to build up list of file suffixes,
2070     allow the user to edit the file which determines how they
2071     are treated, filter out ignored files and pass -W options to cvs import
2072     to handle the rest. Failed cvs import is turned into restartable
2073     condition.
2074    
2075     * mapping.lisp (mapping-generate-name): Takes a suffix parameter.
2076     The F-files now carry a suffix obtained from the original file,
2077     because I have concluded that this was the only reasonable way
2078     to integrate with CVS.
2079    
2080     2002-02-16 Kaz Kylheku <kaz@ashi.footprints.net>
2081    
2082 kaz 1.38 * add.lisp (mcvs-add): Last change completely broke add due
2083     to not breaking out of the retry loop.
2084    
2085 kaz 1.36 2002-02-13 Kaz Kylheku <kaz@ashi.footprints.net>
2086    
2087 kaz 1.37 * move.lisp (mcvs-move): If the mapping-update operation returns
2088     nil, or terminates by a non-local jump, restore the filemap.
2089     * mapping.lisp (mapping-update): When returning normally,
2090     return t. When returning after doing a rollback, return nil.
2091    
2092     2002-02-13 Kaz Kylheku <kaz@ashi.footprints.net>
2093    
2094 kaz 1.36 * error.lisp (mcvs-error-handler): Bugfix. We were closing over
2095     a binding of the iteration variable of a dolist, which has only
2096     one binding over the entire loop.
2097    
2098     * mapping.lisp (mapping-update): Gathers up info all local
2099     clobbered files, and then throw the error. Provides restart
2100     which allows user to print the list of clobbered files, and
2101     a restart which allows the user to have those files clobbered.
2102    
2103     2002-02-13 Kaz Kylheku <kaz@ashi.footprints.net>
2104    
2105     * checkout.lisp (mcvs-checkout-wrapper): Bugfix for last bugfix.
2106    
2107 kaz 1.35 2002-02-11 Kaz Kylheku <kaz@ashi.footprints.net>
2108    
2109     * checkout.lisp (mcvs-checkout-wrapper): Bugfix for bad
2110     destructuring-bind if there are no arguments.
2111    
2112 kaz 1.30 2002-02-10 Kaz Kylheku <kaz@ashi.footprints.net>
2113    
2114 kaz 1.34 * mapping.lisp (mapping-difference): Reformatted documentation string.
2115     (mapping-update): Implemented a continue restart which rolls back
2116     the changes done to the local filesystem.
2117    
2118     2002-02-10 Kaz Kylheku <kaz@ashi.footprints.net>
2119    
2120 kaz 1.31 * error.lisp (mcvs-error-handler): Rearranging the menu,
2121     so "T" is clumped with the main options, and any special restarts
2122 kaz 1.32 are clearly separated. Changed wording.
2123 kaz 1.31
2124     2002-02-10 Kaz Kylheku <kaz@ashi.footprints.net>
2125    
2126 kaz 1.30 * update.lisp (mcvs-update): Re-print the "Invoking CVS" chatter
2127     if the user re-tries the error.
2128    
2129     * add.lisp (mcvs-add): CVS failure is now a restartable error;
2130 kaz 1.33 user can decide whether to roll back the effects or retry the
2131     CVS add, or terminate to keep the effects anyway despite
2132     the failed add.
2133 kaz 1.30
2134     2002-02-10 Kaz Kylheku <kaz@ashi.footprints.net>
2135    
2136     * install.sh: Stop the script if there are compilation errors.
2137    
2138 kaz 1.24 2002-02-09 Kaz Kylheku <kaz@ashi.footprints.net>
2139    
2140 kaz 1.29 * error.lisp (*mcvs-errors-occured-p*): New special variable.
2141     (mcvs-error-handler): Set *mcvs-errors-occured-p* to T.
2142     * mcvs-main.lisp (mcvs): Take *mcvs-errors-occured-p* into
2143     account in computing termination status.
2144    
2145     2002-02-09 Kaz Kylheku <kaz@ashi.footprints.net>
2146    
2147 kaz 1.28 * update.lisp: Remove spurious newlines from error messages.
2148     * add.lisp: Likewise.
2149     * options.lisp: Likewise.
2150     * mapping.lisp: Likewise.
2151    
2152     2002-02-09 Kaz Kylheku <kaz@ashi.footprints.net>
2153    
2154 kaz 1.27 Adding some restarts around cvs update.
2155    
2156     * posix.lisp (execute-command-xargs): Bail with nil return
2157     value if any command line fails.
2158    
2159     * update.lisp (mcvs-update): Tests return value of execute-program
2160     and signal condition if it's nil. Provides a continue restart
2161     as well as a retry restart to try the command again.
2162    
2163     * error.lisp (mcvs-error-handler): Show retry restarts as
2164     a special menu item "R".
2165    
2166     2002-02-09 Kaz Kylheku <kaz@ashi.footprints.net>
2167    
2168 kaz 1.26 Added a much improved error handling routine in anticipation
2169     of better use of restarts.
2170    
2171     * error.lisp: New file
2172     (restart-destructure): New macro.
2173     (*mcvs-error-treatment*): Special variable, moved here from
2174     mcvs-main.
2175     (mcvs-error-handler): New function.
2176    
2177     * mcvs-main.lisp (mcvs-top-error-handler): Function removed.
2178     (mcvs-execute): Bind error to new mcvs-error-handler instad
2179     of mcvs-top-error-handler.
2180    
2181     2002-02-09 Kaz Kylheku <kaz@ashi.footprints.net>
2182    
2183 kaz 1.25 * mcvs-main.lisp (*mcvs-command-table*): The "stat" abbreviation
2184     for status command added.
2185    
2186     2002-02-09 Kaz Kylheku <kaz@ashi.footprints.net>
2187    
2188 kaz 1.24 Hooking conversion tool into command structure.
2189    
2190     * mcvs-main.lisp (*convert-options*): New constant.
2191     (*mcvs-command-table*): New entry for mcvs-convert-wrapper.
2192     * convert.lisp (mcvs-convert): Fix reference to nonexistent variable.
2193     (mcvs-convert-wrapper): New function.
2194    
2195 kaz 1.22 2002-02-08 Kaz Kylheku <kaz@ashi.footprints.net>
2196    
2197 kaz 1.23 Beginning work on repository conversion utility.
2198    
2199     * convert.lisp: New file. Contains conversion utility
2200     to make an Meta-CVS repository from an ordinary CVS repository,
2201     while preserving all history, tags and branches.
2202     (remove-attic-component, classify-tags, read-tags,
2203     mcvs-convert): New functions.
2204    
2205     * posix.lisp (suffix): New function. Computes suffix of file.
2206     (execute-program-xargs): New optional parameter, for specifying
2207     fixed part added at the end of each generated command line.
2208    
2209     * mapping.lisp (*mcvs-map-name*, *mcvs-local-map-name*): New constants.
2210     (*mcvs-map*, *mcvs-map-local*): Redefined in terms of new constants.
2211     (mapping-generate-name): New key parameter no-dir for not adding
2212     the directory prefix.
2213    
2214     2002-02-08 Kaz Kylheku <kaz@ashi.footprints.net>
2215    
2216 kaz 1.22 * checkout.lisp (mcvs-checkout): Ensure local mapping is
2217     sorted when written out, for easier comparisons.
2218    
2219 kaz 1.21 2002-02-07 Kaz Kylheku <kaz@ashi.footprints.net>
2220    
2221     * sync.lisp (synchronize-files): Return :dir symbol when either
2222     argument is a directory.
2223     * mapping.lisp (mapping-synchronize): Chatter output messages
2224     are shorter. Handles :dir return value from synchronize-files.
2225     (mapping-update): New sanity checks for moved and added
2226     files, to avoid clobbering local files. Removed redundant
2227     call to ensure-directories-exit in move logic, because
2228     synchronize-files will do it anyway. Chatter messages reordered
2229     to occur before their corresponding action is done.
2230    
2231     2002-02-07 Kaz Kylheku <kaz@ashi.footprints.net>
2232    
2233     Improve error handling, and builtin ``debug shell''.
2234    
2235     * mcvs-main.lisp (*mcvs-error-treatment*): Special variable
2236     can have new domain value, namely :decline.
2237     (mcvs-top-error-handler): Print error message when terminating
2238     non-restartable error. Handle new :decline treatment by
2239     simply returning.
2240     (mcvs-debug-shell): Set *mcvs-error-treatment* to :decline
2241     so that errors are caught by debugger.
2242    
2243 kaz 1.20 2002-02-04 Kaz Kylheku <kaz@ashi.footprints.net>
2244    
2245     * mapping.lisp (mapping-sort): Removed function.
2246     (mapping-write): Sort written map by F- file names,
2247     not by path names. This is far better for merging, because
2248     files stay in the same place when they are renamed.
2249    
2250 kaz 1.17 2002-02-03 Kaz Kylheku <kaz@ashi.footprints.net>
2251    
2252 kaz 1.19 Added status, log and annotate.
2253    
2254     * mcvs-main.lisp: (*log-options*, *status-options*,
2255     *annotate-options*): New constants.
2256     (*mcvs-command-table*): Add new entries.
2257    
2258     * generic-lisp (mcvs-log-wrapper, mcvs-status-wrapper,
2259     mcvs-annotate-wrapper): New functions.
2260    
2261     2002-02-03 Kaz Kylheku <kaz@ashi.footprints.net>
2262    
2263 kaz 1.18 Added tag command.
2264    
2265     * diff.lisp: File renamed to generic.lisp.
2266     (mcvs-diff): Function renamed to mcvs-generic.
2267    
2268     * generic.lisp (mcvs-generic): Function no longer dedicated to
2269     diffing only; takes CVS command to execute as an argument,
2270     also takes arguments and files as separate lists.
2271     (mcvs-diff-wrapper): Modified to invoke mcvs-generic properly.
2272     (mcvs-tag-wrapper): New function, uses mcvs-generic to implement
2273     tag command.
2274    
2275     * mcvs-main.lisp (*tag-options*): New constant.
2276     (*mcvs-command-table*): New entry for tag command.
2277    
2278     2002-02-03 Kaz Kylheku <kaz@ashi.footprints.net>
2279    
2280 kaz 1.17 Added workaround for operating system argument passing limitations,
2281     resembling the Unix xargs utility. Also, trimmed some fat
2282     from the basename function.
2283    
2284     * clisp-linux.lisp: (*argument-limit*): New constant added.
2285     (arglist-to-command-string): Function removed.
2286     (execute-program): Function removed.
2287     (shell-interpreter): New function, wrapper for CLISP's shell
2288     function, turns exit status into T (success) or NIL (failure).
2289    
2290     * diff.lisp (mcvs-diff): Uses execute-program-xargs instead
2291     of execute-program.
2292    
2293     * posix.lisp (basename): Does not canonicalize path name. This
2294     turns out to be an unnecessary performance hit in some cases.
2295     (arglist-to-command-string): New function. Similar to what was
2296     removed from clisp-linux, but this one properly escapes all
2297     shell metacharacters.
2298     (execute-program): New function, calls shell-interpreter.
2299     (execute-program-xargs): New function. Takes two argument lists.
2300     Forms one or more command lines by combining the first argument list
2301     with one or more pieces of the second argument list, and
2302     executes each command. The length of the pieces is determined
2303     by the argument passing limit.
2304    
2305     * dirwalk.lisp (ensure-directories-gone): Add use of
2306     canonicalize-path because basename doesn't do it.
2307    
2308 kaz 1.12 2002-02-02 Kaz Kylheku <kaz@ashi.footprints.net>
2309    
2310 kaz 1.16 Algorithmic efficiency improvements. No longer using
2311     abstract set operations to update file structure or find
2312     duplicates in the maps. Could still streamline the sorting.
2313    
2314     * mapping.lisp (mapping-sort): Express more succinctly using key.
2315     (mapping-dupe-check): Rewrite using loop over sorted lists.
2316     (mapping-difference): New function for computing mapping change.
2317     (mapping-update): Modify to use mapping-difference.
2318    
2319     2002-02-02 Kaz Kylheku <kaz@ashi.footprints.net>
2320    
2321 kaz 1.15 * mapping.lisp (mapping-update): When moving files, ensure
2322     that the target is unlinked if it exists.
2323    
2324     * move.lisp (simple-rename): No longer do target unlinking
2325     here. Also bugfix: it wasn't handling renames of directories
2326     containing just one file.
2327    
2328     2002-02-02 Kaz Kylheku <kaz@ashi.footprints.net>
2329    
2330 kaz 1.13 * mapping.lisp (mapping-dupe-check): New function for
2331     detecting duplicate objects or paths in a mapping.
2332     (mapping-sane-p): Function removed.
2333     (mapping-read): Use mapping-dupe-check to verify a map
2334     when asked by the sanity-check keyword.
2335     (mapping-update): Specify sanity check when reading MCVS/MAP.
2336    
2337 kaz 1.14 * checkout.lisp (mcvs-checkout): Checkout also performs
2338     sanity check.
2339    
2340 kaz 1.13 2002-02-02 Kaz Kylheku <kaz@ashi.footprints.net>
2341    
2342 kaz 1.12 * mcvs-main.lisp (mcvs): Use CLISP's exit function correctly
2343     to establish proper termination status.
2344    
2345 kaz 1.8 2002-01-31 Kaz Kylheku <kaz@ashi.footprints.net>
2346    
2347 kaz 1.10 * mcvs-main.lisp (mcvs-execute): Parse command-specific options
2348     properly based on knowledge of each command's set of options.
2349     (parse-args): Function removed.
2350    
2351 kaz 1.11 * options.lisp (parse-opt): Correctly process long options with
2352     arguments. Argument is part of the string, separated by = symbol.
2353    
2354 kaz 1.10 2002-01-31 Kaz Kylheku <kaz@ashi.footprints.net>
2355    
2356 kaz 1.9 * options.lisp (parse-opt): When multiple options characters are
2357     bunched up into one argument, and one of them other than the
2358     last one takes an argument, then the remaining ones are
2359     considered to constitute a string which is an argument to that
2360     option. For instance -y32 means -y 32, not -y -3 -2, assuming
2361     that y is an option that requires an argument.
2362    
2363     2002-01-31 Kaz Kylheku <kaz@ashi.footprints.net>
2364    
2365     Top level handler terminates by non-local exit back to
2366     mcvs function, rather than by calling (exit).
2367    
2368     * mcvs-main.lisp (mcvs-top-error-handler): Restructured
2369     to call (throw 'mcvs-exit t).
2370     (mcvs-execute): Ensure that NIL is returned by normal exit.
2371     (mcvs): Catches 'mcvs-exit throw, and calls (exit 0) or (exit 1)
2372     accordingly.
2373    
2374    
2375     2002-01-31 Kaz Kylheku <kaz@ashi.footprints.net>
2376    
2377 kaz 1.8 Renamed all ``filemap-'' functions to ``mapping-'' prefix.
2378    
2379     * mapping.lisp (filemap-generate-name, filemap-sort,
2380     filemap-extract-paths, filemap-lookup, filemap-prefix-lookup,
2381     filemap-prefix-matches, filemap-object-lookup,
2382     filemap-same-object-p, filemap-same-path-p, filemap-moved-p,
2383     filemap-rename-files, filemap-sane-p): Old names removed.
2384     (mapping-generate-name, mapping-sort,
2385     mapping-extract-paths, mapping-lookup, mapping-prefix-lookup,
2386     mapping-prefix-matches, mapping-object-lookup,
2387     mapping-same-object-p, mapping-same-path-p, mapping-moved-p,
2388     mapping-rename-files, mapping-sane-p): New names created.
2389     (mapping-read, mapping-write, mapping-synchronize,
2390     mapping-update): Edit calls to renamed functions.
2391     * add.lisp (mcvs-add): Likewise.
2392     * diff.lisp (mcvs-diff): Likewise.
2393     * filt.lisp (mcvs-filt): Likewise.
2394     * import.lisp (mcvs-import): Likewise.
2395     * move.lisp (simple-rename, simple-move-to-dir, move-guts): Likewise.
2396     * remove.lisp (mcvs-remove): Likewise.
2397    
2398 kaz 1.6 2002-01-30 Kaz Kylheku <kaz@ashi.footprints.net>
2399    
2400 kaz 1.7 Factored out repeated code for reading and writing of the MAP and
2401     MAP-LOCAL files.
2402    
2403     * mapping.lisp (mapping-read, mapping-write): New functions.
2404     (mapping-synchronize, mapping-update): Use new functions.
2405     * move.lisp (mcvs-move): Likewise.
2406     * filt.lisp (mcvs-filt): Likewise.
2407     * add.lisp (mcvs-add): Likewise.
2408     * remove.lisp (mcvs-remove): Likewise.
2409     * checkout.lisp (mcvs-checkout): Likewise.
2410     * diff.lisp (mcvs-diff): Likewise.
2411     * import.lisp (mcvs-import): Likewise.
2412    
2413     2002-01-30 Kaz Kylheku <kaz@ashi.footprints.net>
2414    
2415 kaz 1.6 * filt.lisp (mcvs-filt): use *mcvs-dir* variable instead of
2416     hard coding "MCVS" string.
2417    
2418     2002-01-30 Kaz Kylheku <kaz@ashi.footprints.net>
2419    
2420     * MCVS-PAPER: Renamed to Meta-CVS-PAPER
2421    
2422     * README: Change all references to MCVS to Meta-CVS, the
2423     new official name of the program.
2424     * add.lisp: Likewise
2425     * chatter.lisp: Likewise
2426     * checkout.lisp: Likewise
2427     * clisp-linux.lisp: Likewise
2428     * commit.lisp: Likewise
2429     * diff.lisp: Likewise
2430     * dirwalk.lisp: Likewise
2431     * filt.lisp: Likewise
2432     * import.lisp: Likewise
2433     * INSTALL: Likewise
2434     * mapping.lisp: Likewise
2435     * mcvs-main.lisp: Likewise
2436     * Meta-CVS-PAPER: Likewise
2437     * move.lisp: Likewise
2438     * options.lisp: Likewise
2439     * posix.lisp: Likewise
2440     * RELEASE-NOTES: Likewise
2441     * remove.lisp: Likewise
2442     * restart.lisp: Likewise
2443     * seqfuncs.lisp: Likewise
2444     * split.lisp: Likewise
2445     * sync.lisp: Likewise
2446     * system.lisp: Likewise
2447     * update.lisp: Likewise
2448    
2449 kaz 1.4 2002-01-28 Kaz Kylheku <kaz@ashi.footprints.net>
2450    
2451 kaz 1.5 * move.lisp (move-guts): test the actual filesystem as well
2452     as the map for existence of a directory or file. This makes
2453     the move operation behave better. Files can be moved to an
2454     existing directory that is not known to MCVS, and a file
2455     can properly clobber a target file that is not known to MCVS.
2456    
2457     * clisp-linux.lisp (directory-p, regular-p, symlink-p): define
2458     methods for these generic functions for a NIL argument, such
2459     that they return NIL.
2460    
2461     2002-01-28 Kaz Kylheku <kaz@ashi.footprints.net>
2462    
2463 kaz 1.4 * move.lisp (simple-move-to-dir): eliminated a bunch of code
2464     with the result that mcvs mv now works more like the Unix mv
2465     when moving a directory to another directory.
2466    
2467     * mcvs-main.lisp (mcvs-execute): fix bogus error message
2468     when options are given but no command.
2469    
2470     * README: don't use -z3 in example because this style of
2471     specifying an argument to an option doesn't work.
2472    
2473 kaz 1.1 2002-01-27 Kaz Kylheku <kaz@ashi.footprints.net>
2474    
2475     * add.lisp (mcvs-add): Remove bogus test for NIL or T; allow
2476     recursivep to be a generalized boolean variable. This allows
2477     mcvs add -R to work properly.
2478 kaz 1.2
2479     * mcvs-main.lisp (*cvs-command-options-arg*): add support
2480     for -u parameter, useful in cvs diff.
2481 kaz 1.3 (*mcvs-command-table*): Add "fi" shorthand for "filt".

  ViewVC Help
Powered by ViewVC 1.1.5