/[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.37 - (hide annotations)
Sun Jan 12 20:49:45 2003 UTC (11 years, 3 months ago) by kaz
Branch: mcvs-1-0-branch
Changes since 1.205.2.36: +10 -0 lines
Hard link sync optimization.

* code/mapping.lisp (mapping-synchronize): New optional parameter,
specifies map to use instead of reading *map-local*.

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

  ViewVC Help
Powered by ViewVC 1.1.5