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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.309 - (hide annotations)
Sat Dec 2 03:21:25 2006 UTC (7 years, 4 months ago) by kaz
Branch: MAIN
CVS Tags: asdf-import-branch~merged-to-HEAD-0, asdf-import-branch~branch-point
Branch point for: asdf-import-branch
Changes since 1.308: +5 -0 lines
* code/main.lisp (*command-table*): Be more conservative about
which functions filter the output of cvs.
1 kaz 1.308 2006-12-01 Kaz Kylheku <kkylheku@gmail.com>
2    
3 kaz 1.309 * code/main.lisp (*command-table*): Be more conservative about
4     which functions filter the output of cvs.
5    
6     2006-12-01 Kaz Kylheku <kkylheku@gmail.com>
7    
8 kaz 1.308 * code/main.lisp (*command-table*): Fix incorrect entry for
9     help function.
10    
11 kaz 1.307 2006-11-28 Kaz Kylheku <kkylheku@gmail.com>
12    
13     Set all of CLISP's encodings to ISO-8851-1, so the I/O and FFI
14     is transparent to 8 bit characters, without raising any errors.
15     Previously this was handled elsewhere.
16    
17     * code/main.lisp (init): New function to set up encodings.
18     (main, main-debug): Call init.
19    
20 kaz 1.303 2006-11-27 Kaz Kylheku <kkylheku@gmail.com>
21    
22 kaz 1.306 More renaming to get rid of mcvs- prefix.
23    
24     * code/chatter.lisp (*mcvs-debug*): Renamed to *chatter-debug*.
25     (*mcvs-info*, *mcvs-terse*, *mcvs-silent*): Similarly.
26     (*mcvs-chatter-level*): Renamed to *chatter-level*.
27    
28     * code/unix.lisp (*mcvs-editor*): Renamed to *edit-program*.
29    
30     * code/types.lisp (*mcvs-types-name*): Renamed to *types-file*.
31     (*mcvs-types*): Renamed to *types-path*.
32     (*mcvs-new-types*): Renamed to *types-new-path*.
33    
34     * code/mapping.lisp (*mcvs-dir*): Renamed to *admin-dir*.
35     (*mcvs-map-name*): Renamed to *map-file*.
36     (*mcvs-map-local-name*): Renamed to *map-local-file*.
37     (*mcvs-displaced-name*): Renamed to *displaced-file*.
38     (*mcvs-map*): Renamed to *map-path*.
39     (*mcvs-map-local*): Renamed to *map-local-path*.
40     (*mcvs-displaced*): Renamed to *displaced-path*.
41    
42     2006-11-27 Kaz Kylheku <kkylheku@gmail.com>
43    
44 kaz 1.305 Getting rid of mcvs- prefixes.
45    
46     * code/package.lisp (defpackage): shadow the merge symbol.
47    
48     * code/purge.lisp (mcvs-purge): renamed to purge
49     (mcvs-purge-wrapper): renamed to purge-wrapper
50    
51     * code/restore.lisp (mcvs-restore): renamed to restore
52     (mcvs-restore-wrapper): renamed to restore-wrapper
53    
54     * code/update.lisp (mcvs-update): renamed to update
55     (mcvs-update-wrapper): renamed to update-wrapper
56    
57     * code/main.lisp (mcvs-help): renamed to help
58     (*mcvs-command-table*): renamed to *command-table*
59     (mcvs-terminate catch): renamed to terminate.
60    
61     * code/execute.lisp (mcvs-execute): renamed to execute
62    
63     * code/move.lisp (mcvs-move): renamed to move
64     (mcvs-move-wrapper): renamed to move-wrapper
65    
66     * code/grab.lisp (mcvs-grab): renamed to grab
67     (mcvs-grab-wrapper): renamed to grab-wrapper
68    
69     * code/prop.lisp (mcvs-prop): renamed to prop
70     (mcvs-prop-wrapper): renamed to prop-wrapper
71    
72     * code/filt.lisp (mcvs-filt-loop): renamed to filt-loop
73     (mcvs-filt): renamed to filt
74     (mcvs-remote-filt): renamed to remote-filt
75     (mcvs-filt-wrapper): renamed to filt-wrapper
76     (mcvs-remote-filt-wrapper): renamed to remote-filt-wrapper
77    
78     * code/branch.lisp (mcvs-branch): renamed to branch
79     (mcvs-branch-wrapper): renamed to branch-wrapper
80     (mcvs-merge): renamed to merge
81     (mcvs-list-branches): renamed to list-branches
82     (mcvs-merge-wrapper): renamed to merge-wrapper
83     (mcvs-remerge-wrapper): renamed to remerge-wrapper
84     (mcvs-list-branches-wrapper): renamed to list-branches-wrapper
85     (mcvs-switch-wrapper): renamed to switch-wrapper
86    
87     * code/link.lisp (mcvs-link): renamed to ln
88     (mcvs-link-wrapper): renamed to link-wrapper
89    
90     * code/watch.lisp (mcvs-watch): renamed to watch
91     (mcvs-watch-wrapper): renamed to watch-wrapper
92    
93     * code/add.lisp (mcvs-add): renamed to add
94     (mcvs-add-wrapper): renamed to add-wrapper
95    
96     * code/remove.lisp (mcvs-remove): renamed to rm
97     (mcvs-remove-wrapper): renamed to remove-wrapper
98    
99     * code/convert.lisp (mcvs-convert): renamed to convert
100     (mcvs-convert-wrapper): renamed to convert-wrapper
101    
102     * code/error.lisp (mcvs-terminate): renamed to terminate
103     (mcvs-error-handler): renamed to error-handler
104     (*mcvs-error-treatment*): renamed to *error-treatment*
105     (*mcvs-errors-occured-p*): renamed to *errors-occured-p*
106    
107     * code/checkout.lisp (mcvs-checkout): renamed to checkout
108     (mcvs-checkout-wrapper): renamed to checkout-wrapper
109     (mcvs-export-wrapper): renamed to export-wrapper
110    
111     * code/generic.lisp (mcvs-generic): renamed to generic
112     (mcvs-commit-wrapper): renamed to commit-wrapper
113     (mcvs-diff-wrapper): renamed to diff-wrapper
114     (mcvs-tag-wrapper): renamed to tag-wrapper
115     (mcvs-log-wrapper): renamed to log-wrapper
116     (mcvs-status-wrapper): renamed to status-wrapper
117     (mcvs-annotate-wrapper): renamed to annotate-wrapper
118     (mcvs-watchers-wrapper): renamed to watchers-wrapper
119     (mcvs-edit-wrapper): renamed to edit-wrapper
120     (mcvs-unedit-wrapper): renamed to unedit-wrapper
121     (mcvs-editors-wrapper): renamed to editors-wrapper
122     (mcvs-sync-to-wrapper): renamed to sync-to-wrapper
123     (mcvs-sync-from-wrapper): renamed to sync-from-wrapper
124    
125     * code/create.lisp (mcvs-create): renamed to create
126     (mcvs-create-wrapper): renamed to create-wrapper
127    
128     * code/remap.lisp (mcvs-remap): renamed to remap
129     (mcvs-remap-wrapper): renamed to remap-wrapper
130    
131     * code/mapping.lisp (mcvs-locate): renamed to locate
132    
133     2006-11-27 Kaz Kylheku <kkylheku@gmail.com>
134    
135 kaz 1.304 * code/clisp-ffi.lisp (readlink): No need to coerce result of
136     readlink-ll to string type.
137     (getcwd): Add comment.
138    
139     2006-11-27 Kaz Kylheku <kkylheku@gmail.com>
140    
141 kaz 1.303 Ported to Cygwin.
142    
143     * code/clisp-ffi.lisp (eval-when): Rename :linux-libc6 feature to
144     just linux. Only push it onto *features* if :cygwin isn't there.
145     Our platform support is restricted to Linux and Cygwin for the time
146     being.
147     (def-libc-call-out): Change macro to handle both Cygwin and Linux.
148     The only difference is the library.
149     (errno-location): Cygwin variant uses __errno function rather than
150     __errno_location. Otherwise it works the same as Linux.
151     (edeadlk, enametoolong, enolck, enosys, enotempty,
152     eloop, ewouldblock): Remove these error constants, since we don't
153     use them anyway and those that exist on Cygwin have different values.
154     (struct dirent): Define Cygwin variant of structure.
155     (readdir): Cygwin variation added.
156     (struct stat): Define Cygwin variant of structure. Small change in
157     Linux variant.
158     (stat, lstat, fstat): Cygwin versions defined. These go to _*64
159     functions.
160     (sighup, sigint, sigquit, sigill, sigtrap, sigabrt, sigemt,
161     sigfpe, sigkill, sigbus, sigsegv, sigsys, sigpipe, sigalrm,
162     sigterm, sigurg, sigstop, sigtstp, sigcont, sigchld, sigcld,
163     sigttin, sigttou, sigio, sigpoll, sigxcpu, sigxfsz, sigvtalrm,
164     sigprof, sigwinch, siglost, sigusr1, sigusr2): Define for Cygwin.
165     (getcwd-ll): Not specific to Linux, read-time conditional removed.
166    
167    
168 kaz 1.297 2006-11-26 Kaz Kylheku <kkylheku@gmail.com>
169    
170 kaz 1.302 * code/main.lisp (main, main-debug): Isolate CLISP-specific expression
171     with #+clisp.
172    
173     2006-11-26 Kaz Kylheku <kkylheku@gmail.com>
174    
175 kaz 1.301 Implement automatic ``| mcvs filt'' right in the program.
176    
177     * code/main.lisp (*global-options*): Add "nofilt" option.
178     (*mcvs-command-table*): Add a new boolean column that specifies
179     which commands add filtering to their execution of CVS.
180     (*usage*): Add help text for --nofilt option, and make a reference
181     to it in the paragraph about filt.
182     (mcvs-execute): Pull extra boolean from the command table,
183     and also take into account the value of *nofilt-option*.
184     Set up the filtering accordingly, using the new
185     with-filtered-execute-program macro.
186    
187     * code/options.lisp (*nofilt-option*): New variable.
188     (filter-mcvs-options): Parse out "nofilt" and set value of
189     *nofilt-option*.
190    
191     2006-11-26 Kaz Kylheku <kkylheku@gmail.com>
192    
193 kaz 1.300 Implement process pipes. This feature is quite different from
194     CLISP's make-pipe-*-stream because it doesn't exec a different
195     process image in the child. Rather, the child process evaluates
196     an arbitrary Lisp expression. Special trickery is used to ensure
197     that both the *standard-output* and file descriptor 1 are
198     redirected (or, *standard-input* and file descriptor 0 in the
199     case of an input pipe), so that the process /can/ spawn child
200     programs, as well as use the standrad Lisp file streams, all being
201     correctly redirected.
202    
203     * code/clisp-unix.lisp (process-pipe): New struct.
204     (create-process-pipe, close-process-pipe): New functions.
205     (*default-execute-filter*): New special variable. This can be set
206     in order to automatically add an input or output pipe to a
207     process spawned by the execute-program function.
208     (execute-program): Observe the value of *default-execute-filter*
209     and set up a pipe as required. This means that an additional process
210     is spawned, which handles output from the command being run, or
211     possibly supplied input to it.
212     (with-filtered-execute-program): Macro which sets up the
213     *default-execute-filter* dynamic variable, using syntax which is
214     similar to that of create-process-pipe. The macro asserts that
215     in this dynamic scope, calls to execute-program will set up such and
216     such a filter. A boolean variable additionally controls whether the
217     construct has any effect at all, allowing it to be turned on and
218     off.
219    
220     2006-11-26 Kaz Kylheku <kkylheku@gmail.com>
221    
222 kaz 1.299 Fix for new issue. CLISP now sets up some restarts, which ANSI
223     CL allows. Meta-CVS previously assumed that if there are any
224     restarts visible, they were set up by Meta-CVS itself. The
225     manifestation of this problem is that there is /always/ a menu,
226     even for trivial errors which should just terminate.
227    
228     * code/error.lisp (mcvs-error-handler): Filter the output of
229     compute-restarts to only work with restarts that are named by symbols
230     from the META-CVS package.
231    
232     2006-11-26 Kaz Kylheku <kkylheku@gmail.com>
233    
234 kaz 1.298 Bugfix and enhancmenet in new CLISP FFI module.
235    
236     * code/clisp-ffi.lisp (pipe): New call-out function added.
237     (spawn): Fix reversed result comparison.
238     (defpackage): Export some new symbols.
239    
240     2006-11-26 Kaz Kylheku <kkylheku@gmail.com>
241    
242 kaz 1.297 Bugfix and enhancement in mcvs-filt.
243    
244     * code/mcvs.filt (mcvs-filt-loop): When a "/F-" pattern is found,
245     suggesting a F- name embedded in a path, the algorithm was skipping
246     ahead from that position by 7 characters instead of 3. That's because
247     that pattern used to be the 7 character "MCVS/F-" string long ago.
248     The enhancement is that the F- names are now not filtered if they
249     immediately follow a ".#", which is part of the prefix used by CVS
250     for naming backup files. The names must not be decoded in this context
251     since the backup files are not mapped to human-readable names.
252    
253 kaz 1.291 2006-11-23 Kaz Kylheku <kkylheku@gmail.com>
254    
255 kaz 1.296 Introduce mcvs-debug tool for reproducing Meta-CVS problems in
256     a debugging environment.
257    
258     * code/main.lisp (mcvs-execute): The setup of *interactive-error-io*
259     and *mcvs-error-treatment* is no longer done here, but in the caller.
260     Setting these here interferes with debugging.
261     (mcvs-debug-shell): Removed.
262     (main): Dependency on CLISP removed. Sets up *interactive-error-io*
263     and *mcvs-error-treatment* as mcvs-execute did previously.
264     Return value from mcvs-execute is now ignored.
265     (main-debug): New function. Sets *interactive-error-io* to
266     *terminal-io*, and *mcvs-error-treatment* to :decline.
267     Otherwise behaves like main.
268    
269     * code/install.sh: Create mcvs-debug.mem in lib directory, and
270     mcvs-debug in bin directory. In mcvs-debug, the debugger is enabled
271     by passing ``-on-debug debug'' to CLISP.
272    
273     * code/package.lisp (defpackage): Export main-debug.
274    
275     2006-11-23 Kaz Kylheku <kkylheku@gmail.com>
276    
277 kaz 1.295 * code/package.lisp (defpackage): Use keywords instead of strings.
278    
279     2006-11-23 Kaz Kylheku <kkylheku@gmail.com>
280    
281 kaz 1.294 Get rid of the ffi-pointer-null stuff, since c-pointer foreign types
282     are automatically converted to null now.
283    
284     * code/clisp-ffi.lisp (null-pointer-p): Function removed.
285    
286     * code/clisp-unix.lisp (pointer-null, null-to-nil, when-not-null):
287     macros removed.
288     (opendir, closedir): Revert to normal Lisp null checks.
289    
290     2006-11-23 Kaz Kylheku <kkylheku@gmail.com>
291    
292 kaz 1.293 Stylistic change.
293    
294     * code/add.lisp: Change in-package calls not to use the all-caps
295     "META-CVS" string string, but rather the :meta-cvs keyword.
296     * code/branch.lisp: Likewise.
297     * code/chatter.lisp: Likewise.
298     * code/checkout.lisp: Likewise.
299     * code/clisp-unix.lisp: Likewise.
300     * code/cmucl-unix.lisp: Likewise.
301     * code/convert.lisp: Likewise.
302     * code/create.lisp: Likewise.
303     * code/dirwalk.lisp: Likewise.
304     * code/error.lisp: Likewise.
305     * code/execute.lisp: Likewise.
306     * code/filt.lisp: Likewise.
307     * code/find-bind.lisp: Likewise.
308     * code/generic.lisp: Likewise.
309     * code/grab.lisp: Likewise.
310     * code/link.lisp: Likewise.
311     * code/main.lisp: Likewise.
312     * code/mapping.lisp: Likewise.
313     * code/memoize.lisp: Likewise.
314     * code/move.lisp: Likewise.
315     * code/multi-hash.lisp: Likewise.
316     * code/options.lisp: Likewise.
317     * code/paths.lisp: Likewise.
318     * code/print.lisp: Likewise.
319     * code/prop.lisp: Likewise.
320     * code/purge.lisp: Likewise.
321     * code/rcs-utils.lisp: Likewise.
322     * code/remap.lisp: Likewise.
323     * code/remove.lisp: Likewise.
324     * code/restart.lisp: Likewise.
325     * code/restore.lisp: Likewise.
326     * code/seqfuncs.lisp: Likewise.
327     * code/slot-refs.lisp: Likewise.
328     * code/split.lisp: Likewise.
329     * code/sync.lisp: Likewise.
330     * code/types.lisp: Likewise.
331     * code/unix.lisp: Likewise.
332     * code/update.lisp: Likewise.
333     * code/watch.lisp: Likewise.
334    
335     2006-11-23 Kaz Kylheku <kkylheku@gmail.com>
336    
337 kaz 1.292 Rewrote the CLISP bindings. The CLISP FFI is used to directly
338     access the glibc shared library on Linux. This completely eliminates
339     the need to create a custom linking set. Meta-CVS can now be built
340     without any C development tools. The downside is that the the FFI
341     definitions are not portable, since they depend on the glibc ABI.
342     Support for other C libraries has to be hacked in the clisp-ffi.lisp
343     module now. The main() hack is gone now too.
344    
345     * code/unix-bindings/link.sh: Removed.
346     * code/unix-bindings/Makefile: Likewise.
347     * code/unix-bindings/wrap.c: Likewise.
348    
349     * code/unix-bindings/unix.lisp: Renamed to
350     code/unix-bindings/clisp-ffi.lisp. Contains revamped FFI definitions
351     targetting Linux glibc.
352    
353     * code/install.sh: Substantially simplified. No longer builds a CLISP
354     linking set. No longer builds the mcvs-upgrade tool, which is not
355     useful any longer. Error tests eliminated with use of ``set -e''.
356 kaz 1.291
357 kaz 1.292 * code/mcvs.lisp: Updated to load everything properly.
358 kaz 1.291
359 kaz 1.290 2004-12-16 Kaz Kylheku <kaz@ashi.footprints.net>
360    
361     Add hack to get our own main() function which calls the one
362     inside CLISP.
363    
364     * code/unix-bindings/link.sh: Add objcopy hack.
365    
366     * code/unix-bindings/wrap.c (main): New function.
367    
368 kaz 1.289 2004-12-10 Kaz Kylheku <kaz@ashi.footprints.net>
369    
370     Get rid of CLISP 2.27 support.
371    
372     * code/unix-bindings/unix.lisp (null-pointer-p): Function removed.
373    
374     * code/clisp-unix.lisp: The :clisp-old symbol no longer conditionally
375     pushed onto *features*
376     (pointer-null): Just version of the macro present; no more
377     read-time switch.
378    
379 kaz 1.288 2004-07-25 Kaz Kylheku <kaz@ashi.footprints.net>
380    
381     * code/unix-bindings/unix.lisp: Get rid of bogus version check
382     which assumes that the version can be read as a floating point
383     number! Rather than rely on the version, check for the specific
384     features.
385    
386 kaz 1.285 2004-03-07 Kaz Kylheku <kaz@ashi.footprints.net>
387    
388 kaz 1.287 * code/install.sh: Generated mcvs-upgrade script cleans away
389     old Meta-CVS package and does garbage collection.
390    
391     2004-03-07 Kaz Kylheku <kaz@ashi.footprints.net>
392    
393 kaz 1.285 Revamped loading system. Got rid of require/provide in all
394     Lisp source files.
395    
396     * code/mcvs.lisp: New file. Responsible for compiling and loading
397     everything in the right order.
398    
399     * code/mcvs-main.lisp: File renamed to main.lisp.
400    
401     * code/mcvs-package.lisp: File renamed to package.lisp.
402    
403     * code/system.lisp: File removed.
404    
405 kaz 1.286 * code/install.sh: Use module mcvs for compiling and loading.
406    
407 kaz 1.284 2004-02-03 Kaz Kylheku <kaz@ashi.footprints.net>
408    
409     * docs/Meta-CVS-PAPER.txt: Revising and editing.
410    
411 kaz 1.283 2004-02-02 Kaz Kylheku <kaz@ashi.footprints.net>
412    
413     * code/convert.lisp (mcvs-convert): Ensure that the converted
414     project has TYPES and .cvsignore files, not just a MAP, and that
415     these have all the branch and version tags. This is important,
416     because users might end up independently adding these on branches
417     and end up with merge problems.
418    
419 kaz 1.281 2004-01-31 Kaz Kylheku <kaz@ashi.footprints.net>
420    
421 kaz 1.282 * code/clisp-unix.lisp (current-dir-restore): An inner macro
422     called in-original-dir is now visible to the body enclosed in
423     current-dir-restore. This allows the current directory to be
424     temporarily escaped back to the original directory.
425    
426     * code/convert.lisp (mcvs-convert): Fixed to no longer assume
427     that the target directory is a sibling of the source. The two can be
428     located anywhere.
429     (*convert-help*): Revise text.
430 kaz 1.281
431 kaz 1.282 2004-01-31 Kaz Kylheku <kaz@ashi.footprints.net>
432    
433     * code/remap.lisp (mcvs-remap): Provide a restart for continuing
434     in the case when an F- file is referenced in the MAP, but no
435     working copy of it exists. By continuing through all these
436     errors, the MAP is cleaned of the nonexistent entries, which
437     provies a way to clean up after the naive ``mcvs convert''
438     algorithm.
439    
440     * code/convert.lisp (*convert-help*): Add text recommending the use
441 kaz 1.281 of ``mcvs remap'' to clean up.
442    
443     2004-01-31 Kaz Kylheku <kaz@ashi.footprints.net>
444    
445 kaz 1.282 * code/convert.lisp (mcvs-convert): RCS files that are in an Attic
446 kaz 1.281 subdirectory in the source CVS project end up in the Attic
447     directory of the target Meta-CVS project.
448     (remove-attic-component): Return second value that indicates
449     whether the Attic component was stripped.
450    
451 kaz 1.278 2004-01-28 Kaz Kylheku <kaz@ashi.footprints.net>
452    
453 kaz 1.282 * code/convert.lisp (mcvs-convert): Skip CVS directories.
454 kaz 1.280 In the repository, these contain things like watcher and editor lists,
455     which probably should not be be replicated in the Meta-CVS sandbox.
456     Sort the newly created MAP properly.
457     (remove-attic-component): If input is "Attic", produce ".".
458    
459     2004-01-28 Kaz Kylheku <kaz@ashi.footprints.net>
460    
461 kaz 1.279 More convert-related changes.
462    
463 kaz 1.282 * code/mcvs-main.lisp (*mcvs-command-table*): Add *convert-help*.
464 kaz 1.279
465 kaz 1.282 * code/convert.lisp (mcvs-convert): Bugfix: failure to increment
466 kaz 1.279 branch number by two to generate unique branch tags.
467     Bugfix: paths going into MAP must be canonicalized.
468     (*convert-help*): New string constant.
469    
470     2004-01-28 Kaz Kylheku <kaz@ashi.footprints.net>
471    
472 kaz 1.278 * code/execute.lisp (execute-program-xargs): In the case that
473     there are no variable args passed, the fixed trailing args should
474     still be passed to the command.
475    
476     2004-01-28 Kaz Kylheku <kaz@ashi.footprints.net>
477    
478     Fixes to convert command to make it useable.
479    
480     * code/posix.lisp (suffix): Return dir name as additional value.
481    
482     * code/convert.lisp (remove-attic-component): Rewrite with
483     different semantics.
484     (mcvs-convert): Fix path handling bug whereby basenames
485     instead of full paths were written to MAP file.
486     Don't call rcs to make tags when there are none.
487     Extra tracing to tell user what is going on.
488    
489 kaz 1.276 2004-01-26 Kaz Kylheku <kaz@ashi.footprints.net>
490    
491 kaz 1.277 * code/grab.lisp (mcvs-grab): Bugfixes to repeated grab over
492     partial sandbox: abstract path instead of real path used for
493     reading new symbolic link targets, and execute permissions.
494    
495     2004-01-26 Kaz Kylheku <kaz@ashi.footprints.net>
496    
497 kaz 1.276 * code/branch.lisp (equal-sticky): Add missing cases for handling
498     the valid tag value NIL.
499    
500 kaz 1.273 2004-01-08 Kaz Kylheku <kaz@ashi.footprints.net>
501    
502 kaz 1.275 * code/link.lisp (*link-help*): Grammar fix.
503    
504     2004-01-08 Kaz Kylheku <kaz@ashi.footprints.net>
505    
506 kaz 1.274 * code/options.lisp (process-cvs-options): Update
507     --version copyright message to 2004.
508    
509     2004-01-08 Kaz Kylheku <kaz@ashi.footprints.net>
510    
511 kaz 1.273 Parsing directory sticky tag from CVS/Tag requires
512     slightly different logic from the sticky tags in CVS/Entries.
513     CVS/Entries doesn't distinguish branch and version
514     sticky tags.
515    
516     This change gets rid of the incorrect warning about
517     not all files being on the same tag when the working
518     copy is sticky to a version tag.
519    
520     * code/branch.lisp (parse-sticky): Function renamed to
521     parse-dir-sticky.
522     (parse-entries-sticky): New function.
523     (equal-sticky): New function.
524     (read-cvs-entries): Use parse-entries-sticky.
525     (same-tag-check): Use equal-sticky instead of equal.
526     (what-are-we-sticky-to): Use parse-dir-sticky.
527    
528     2004-01-08 Kaz Kylheku <kaz@ashi.footprints.net>
529    
530     Cleanup.
531    
532     * code/grab.lisp (*grab-help*): Spelling error.
533    
534     * code/system.lisp: Require posix module before clisp-unix,
535     which wants it.
536    
537     * code/clisp-unix.lisp: Don't bother requiring posix,
538     since it comes from system.
539     Require "chatter" rather than "chatter.lisp"; this is why
540     were not getting the compiled version of this module
541     into the images.
542    
543     2004-01-08 Kaz Kylheku <kaz@ashi.footprints.net>
544    
545     Upgrade to CLISP 2.32.
546    
547     * code/unix-bindings/unix.lisp: If the CLISP version is
548     newer than 2.31 then set the variables ffi::*output-c-functions*
549     and ffi::*output-c-variables* to get the old translator
550     behavior.
551    
552     * code/rcs-utils.lisp: We can't use #s read syntax for
553     specifying an rcs-token structure literal, because
554     we have not specialized make-load-form. This used to
555     work anyway but now breaks under CLISP 2.32.
556    
557 kaz 1.272 2003-07-15 Kaz Kylheku <kaz@ashi.footprints.net>
558    
559     * code/mcvs-generic.lisp (mcvs-generic): Removed
560     the default-include-meta-files keyword parameter.
561     (mcvs-tag, mcvs-commit): Remove use of keyword parameter.
562     This fixes the silly behavior of including meta files
563     even when the command line specifies a file list.
564     Also, bugfix: *nometa-option* now works when
565     global-if-empty-file-list is true, and there are no files.
566    
567     * code/update.lisp (mcvs-update): Remove use of keyword
568     parameter in call to mcvs-generic.
569    
570 kaz 1.270 2003-07-06 Kaz Kylheku <kaz@ashi.footprints.net>
571    
572 kaz 1.271 Based on a patch from Walter C. Pelissero <walter@pelissero.de>
573    
574 kaz 1.270 * code/mcvs-main.lisp (with-open-file-ignore-errors): New macro.
575     (mcvs-execute): Use new macro to properly handle opening the
576     controlling terminal when there are errors other than
577     the non-existence of the object.
578    
579     2003-06-12 Kaz Kylheku <kaz@ashi.footprints.net>
580    
581     * code/mcvs-main.lisp (mcvs-help): Move some special declarations
582     out of the function to the top level.
583    
584 kaz 1.269 2003-05-25 Kaz Kylheku <kaz@ashi.footprints.net>
585    
586     * code/filt.lisp (mcvs-filt-loop): Do not filter F- names that
587     are embedded in paths (preceded by a slash). This supersedes
588     the old behavior which was to avoid filtering F- names preceded
589     by "MCVS/".
590    
591 kaz 1.268 2003-04-30 Kaz Kylheku <kaz@ashi.footprints.net>
592    
593     * code/generic.lisp (mcvs-generic): The after-synchronization
594     was going in both directions rather than just MCVS -> tree.
595    
596     2003-04-30 Kaz Kylheku <kaz@ashi.footprints.net>
597    
598     * code/mcvs-main.lisp (mcvs-execute): If not able to open controlling
599     tty, emit some warning messages that interactive error handling is
600     disabled. This alerts users to problems, like missing /dev directory
601     on Cygwin.
602    
603 kaz 1.267 2003-04-24 Kaz Kylheku <kaz@ashi.footprints.net>
604    
605     * docs/generate.sh: Use valid shell syntax for identifiers.
606    
607     2003-04-24 Kaz Kylheku <kaz@ashi.footprints.net>
608    
609     * code/mcvs-main.lisp (mcvs-execute): Bugfix: add missing OPEN
610     option to avoid trying to create the controlling terminal device
611     if it does not exist, and yield NIL as expected.
612    
613 kaz 1.265 2003-04-23 Kaz Kylheku <kaz@ashi.footprints.net>
614    
615 kaz 1.266 New commands, sync-from-cvs and sync-to-cvs.
616    
617     * code/mcvs-main.lisp (*sync-to-cvs-options*, *sync-from-cvs-options*):
618     New option constants.
619     (*mcvs-command-table*): New entries.
620     (*usage*): New help text.
621    
622     * code/generic.lisp (mcvs-generic): New keyword parameter
623     no-invoke-cvs.
624     (mcvs-sync-to-wrapper, mcvs-sync-from-wrapper): New functions.
625    
626     2003-04-23 Kaz Kylheku <kaz@ashi.footprints.net>
627    
628 kaz 1.265 Improved error handling again in a flash of sanity. The whole
629     idea of ``bail'' as a restart is gone. All code which must perform
630     some complex cleanup action does so as part of normal unwinding.
631     And so termination becomes safe.
632    
633     * code/update.lisp (mcvs-update): Change bail restart to continue.
634    
635     * code/mcvs-main.lisp (*global-options*): Remove "error-bail".
636     (*usage*): Remove description of --error-bail.
637     (mcvs-execute): Bind *mcvs-error-treatment* to :terminate rather
638     than :bail if controlling TTY cannot be opened.
639    
640     * code/move.lisp (mcvs-move): Change "Undoing move" error message
641     to "Undoing changes to map".
642    
643     * code/add.lisp (mcvs-add): Get rid of bail restart; move cleanup
644     code into unwind-protect block.
645    
646     * code/error.lisp (*mcvs-error-treatment*): Touch up docstring.
647     (mcvs-error-handler): Remove anything having to do with :bail.
648     Change description of `T' command to suggest that it is safe.
649    
650     * code/options.lisp (filter-mcvs-options): Remove handling of
651     "error-bail" option.
652    
653     * code/mapping.lisp (mapping-update): Get rid of outermost
654     restart-case, which had just a bail restart. Replace it with
655     unwind-protect block which does exactly the same restoration.
656    
657 kaz 1.264 2003-04-22 Kaz Kylheku <kaz@ashi.footprints.net>
658    
659     Improved error handling. Use of tty for user interaction, plus
660     new global option for selecting non-interactive bail behavior.
661    
662     * code/mcvs-main.lisp (*global-options*): add --error-bail option.
663     (*usage*): Describe new option.
664     (mcvs-execute): Dynamically bind *interactive-error-io* variable
665     to a stream formed by opening the controlling tty.
666     Send error message to *error-output* rather than *standard-output*.
667    
668     * code/unix-bindings/unix.lisp (unix-funcs:ctermid): New function,
669     FFI interface to mcvs_ctermid.
670    
671     * code/unix-bindings/wrap.c (mcvs_ctermid): New function.
672    
673     * code/chatter.lisp (chatter): Chatter now goes to *error-output*
674     rather than *standard-output*.
675    
676     * code/error.lisp (*interactive-error-io*): New special variable,
677     holds stream open to controlling tty.
678     (mcvs-terminate): New function.
679     (mcvs-error-handler): Use *interactive-error-io* to print menu
680     and obtain user input. Support the :bail value of
681     *mcvs-error-treatment* Plus some cosmetic changes.
682    
683     * code/options.lisp (filter-mcvs-options): Support --error-bail option.
684    
685     * code/filt.lisp (mcvs-filt-loop): Bugfix, (read-line t ...)
686     should be (read-line *standard-input* ...) because t stands
687     for *terminal-io* rather than *standard-io*, unlike in the
688     format function!
689    
690     * code/rcs-utils.lisp (rcs-read-token): Read from *standard-input*
691     rather than *terminal-io*.
692    
693    
694 kaz 1.263 2003-04-21 Kaz Kylheku <kaz@ashi.footprints.net>
695    
696     Slightly redesigned error handling protocol.
697    
698     * code/update.lisp (mcvs-update): Change continue restart to bail.
699    
700     * code/add.lisp (mcvs-add): Likewise.
701    
702     * code/error.lisp (mcvs-error-handler): Specially recognize two
703     additional restart symbols, bail and info. A bail restart performs
704     any rolling back and cleanup and terminates. Continuation is now
705     properly reserved for actions that proceed boldly to finish
706     the job, possibly irretrievably clobbering precious data.
707     The info restart is now a standard way to indicate that more
708     details about the error can be obtained, so this does not have
709     to be represented as a special action with an ad-hoc restart.
710    
711     * code/create.lisp (mcvs-create): Change show restart to info.
712    
713     * code/remap.lisp (mcvs-remap): Change ignore restart to continue.
714    
715     * code/mapping.lisp (mapping-update): Change ignore and do-clobber
716     restarts to continue, and print-clobbers restart to info.
717     Change continue restart to bail.
718    
719 kaz 1.262 2003-04-14 Kaz Kylheku <kaz@ashi.footprints.net>
720    
721     New command, remote-filt.
722    
723     * code/mcvs-main.lisp (*remote-filt-options*): New option constant.
724     (*mcvs-command-table*): Entries for new command added.
725     (*usage*): Help text added.
726    
727     * code/filt.lisp (filt-select-map): New keyword parameter for
728     specifing repository module. CVS up -p or co -p command generated
729     accordingly. Also, little glitch fixed: the local case descends
730     into the MCVS directory, to avoid a warning message that occurs
731     when CVS is used in server mode.
732     (mcvs-filt-loop): New function, contains most of the old mcvs-filt
733     function body.
734     (mcvs-filt): Calls new mcvs-filt-loop to do actual filtering work.
735     (mcvs-remote-filt, mcvs-remote-filt-wrapper): New functions.
736    
737     * code/clisp-unix.lisp (with-input-from-program): Macro changed
738     to include debug tracing of the invoked command.
739    
740 kaz 1.261 2003-04-13 Kaz Kylheku <kaz@ashi.footprints.net>
741    
742     * code/grab.lisp (read-word-hash): Convert each token to a simple
743     string object. This can save a lot of memory when large numbers
744     of files have to be analyzed.
745    
746 kaz 1.260 2003-04-12 Kaz Kylheku <kaz@ashi.footprints.net>
747    
748     * code/mapping.lisp (mapping-read): Provide a restart for
749     file errors, which lets the user interactively substitute an
750     empty map if the file can't be read. This is intended to handle
751     the case when MCVS/MAP is missing; for example, the user
752     updated to a sticky date for which no revision of the MAP
753     exists. The effect of continuing will be that all files
754     will disappear.
755    
756     2003-04-12 Kaz Kylheku <kaz@ashi.footprints.net>
757    
758     Revamped the synchronization logic. Synchronization now happens
759     in a specific direction. For example, if we are doing a diff,
760     we just need to push changes from the tree to the MCVS directory,
761     not the other way around. Or: before an update or commit, we push from
762     the tree to MCVS, then after the update, in the other direction.
763    
764     * code/update.lisp (mcvs-update): The before update is done
765     in the :left direction only, and the after update in the :right.
766    
767     * code/move.lisp (mcvs-move): The just-in-case sync is done
768     in the :left direction only.
769    
770     * code/link.lisp (mcvs-link): Likewise.
771    
772     * code/remove.lisp (mcvs-remove): Likewise.
773    
774     * code/add.lisp (mcvs-add): Get rid of mapping-synchronize call;
775     it's completely unnecessary, since the new files are not even
776     in the MAP-LOCAL, and the add logic explicitly links them into
777     the MCVS directory.
778    
779     * code/generic.lisp (mcvs-generic): New keyword parameter,
780     need-sync-before. Before-synchronization done in :left direction,
781     after-synchronization in :right direction. Before-synchronization
782     is now not done by default; need-sync-before must be specified.
783     (mcvs-commit-wrapper): Specify before and after sync.
784     (mcvs-diff-wrapper, mcvs-status-wrapper,
785     mcvs-edit-wrapper): Explicitly specify before sync.
786     (mcvs-tag-wrapper, mcvs-annotate-wrapper): Implicitly specify no sync.
787     (mcvs-unedit-wrapper): Add before sync.
788    
789     * code/sync.lisp (synchronize-files): New key parameter :direction,
790     values can be :left, :right or :either. Default is :either.
791     If the value is :left or :right, then a sync is done only in that
792     direction, otherwise the value :no-sync is returned.
793     Behavior change: if the left file is missing (F- file in MCVS
794     directory) it is not re-created, but rather :no-sync is returned.
795     Also, if both files exist, have the same timestamp, and are
796     distinct objects, if the direction is :left or :right, then
797     the appropriate restart is automatically chosen. So this will
798     do the right thing on filesystems where link() is performed by
799     copying, without bothering the user with the error.
800    
801     * code/mapping.lisp (mapping-synchronize): New :direction key
802     parameter, passed down to synchronize-filed. The new :no-sync
803     return value from synchronize-files is handled.
804     (mapping-update): Select the :right direction for synchronizing
805     moves, adds or rollbacks.
806    
807 kaz 1.259 2003-04-06 Kaz Kylheku <kaz@ashi.footprints.net>
808    
809     * code/execute.lisp (execute-program-xargs): Fix again: perform
810     all of the split command lines, even if some of them fail.
811     The returned status is a logical AND combination; if all of the
812     subcommands succeeded then it's T, otherwise NIL.
813    
814    
815 kaz 1.258 2003-03-31 Kaz Kylheku <kaz@ashi.footprints.net>
816    
817     * code/execute.lisp (execute-program-xargs): Bugfix: if program
818     execution fails, then bail out of the entire function, not just
819     the inner loop. Otherwise the program is wrongly run again,
820     on a bogus file list.
821    
822 kaz 1.257 2003-03-04 Kaz Kylheku <kaz@ashi.footprints.net>
823    
824     * code/update.lisp (mcvs-update): Simplified restart code.
825    
826     2003-03-04 Kaz Kylheku <kaz@ashi.footprints.net>
827    
828     * code/restart.lisp (parse-restart-case-keywords): New function.
829     (super-restart-case-expander): Some logic factored out
830     into new function.
831    
832 kaz 1.256 2003-03-03 Kaz Kylheku <kaz@ashi.footprints.net>
833    
834     * code/mapping.lisp (mapping-update): Rewrite restart-bind
835     block using super-restart-case.
836    
837 kaz 1.254 2003-03-01 Kaz Kylheku <kaz@ashi.footprints.net>
838    
839 kaz 1.255 * code/restart.lisp (super-restart-case-expander): Roll the
840     functionality of :report-format into :report.
841     (super-restart-case): Slight rearrangement of the tagbody
842     to eliminate the skip around the out-code.
843    
844     2003-03-01 Kaz Kylheku <kaz@ashi.footprints.net>
845    
846 kaz 1.254 * code/restart.lisp (super-restart-case-expander): New function.
847     (super-restart-case): New macro.
848    
849     * code/create.lisp (mcvs-create): Rewrite a restart-bind
850     construct more succinctly using super-restart-case.
851    
852 kaz 1.253 2003-02-26 Kaz Kylheku <kaz@ashi.footprints.net>
853    
854     * code/create.lisp (mcvs-create): After the TYPES file is
855     edited, scan the MCVS directory for unexpected files.
856     The intent is to detect text editor backups. If any are
857     found, some interactive error handling lets the user acknowledge
858     their deletion. If they are not deleted, then cvs import will
859     bring them into the repository. This behavior was discovered
860     by Johannes Grødem who suggested that it could be handled.
861    
862 kaz 1.252 2003-02-25 Kaz Kylheku <kaz@ashi.footprints.net>
863    
864     * code/unix-bindings/wrap.c (mcvs_spawn): One more waitpid() bug!
865     The SIGCHLD signal handler was being set in the child process only,
866     so although we fixed the waitpid() behavior in the CVS child
867     process, we did not fix it in the Meta-CVS process. The ECHILD
868     problem was sporadically reproduced by Johannes Grødem on a fast
869     Athlon machine; it requires CVS to exit before Meta-CVS reaches
870     the waitpid() call.
871    
872 kaz 1.251 2003-02-24 Kaz Kylheku <kaz@ashi.footprints.net>
873    
874     * code/options.lisp (format-opt): Some one-argument options of
875     CVS must appear as one command parameter, with no separation
876     between the option letter and the argument characters.
877     For example, ``cvs log -r foo::bar'' is invalid, it must
878     be ``cvs log -rfoo::bar''. The format-opt function now
879     formats *all* one-letter options that have one argument
880     as one string.
881    
882 kaz 1.250 2003-02-23 Kaz Kylheku <kaz@ashi.footprints.net>
883    
884     * code/mcvs-main.lisp (*usage*): Add help text for --up option.
885    
886    
887 kaz 1.249 2003-02-20 Kaz Kylheku <kaz@ashi.footprints.net>
888    
889     Fix remaining occurences of SIG_IGN action for SIGCHLD being
890     passed to child processes.
891    
892     * code/unix-bindings/unix.lisp (unix-funcs:default-sigchld): New call
893     out function.
894    
895     * code/clisp-unix.lisp (with-input-from-program,
896     with-output-to-program): Call the new default-sigchild function
897     to set SIGCHILD signal handler to SIG_DFL just before creating
898     the pipe.
899    
900     * code/unix-bindings/wrap.c (mcvs_default_sigchld): New function.
901    
902 kaz 1.248 2003-02-17 Kaz Kylheku <kaz@ashi.footprints.net>
903    
904     Fix portability mistakes.
905    
906     * code/grab.lisp (read-word-hash): Use the standard code-char
907     function instead of the int-char CLISP extension.
908    
909     * code/branch.lisp (parse-sticky, mcvs-list-branches): Use the
910     portable subseq function instead of CLISP's ext::substring.
911    
912 kaz 1.246 2003-02-12 Kaz Kylheku <kaz@ashi.footprints.net>
913    
914 kaz 1.247 New --up option added for escaping out of nested sandboxes.
915    
916     * code/mcvs-main.lisp (*cvs-options*): Added "up" 1 arg option.
917    
918     * code/options.lisp (*nesting-escape-option*): New global,
919     default value 0.
920     (filter-mcvs-options): Filter new option, parse out and validate
921     integer argument.
922    
923     * code/mapping.lisp (mcvs-locate): When searching for MCVS
924     directory, skip N matches, where N is the value of
925     *nesting-escape-option*.
926    
927     2003-02-12 Kaz Kylheku <kaz@ashi.footprints.net>
928    
929     * code/mcvs-main.lisp (*cvs-options*): Constant renamed
930     to *global-options*.
931    
932     2003-02-12 Kaz Kylheku <kaz@ashi.footprints.net>
933    
934 kaz 1.246 * code/unix-bindings/wrap.c (mcvs-spawn): In the child process,
935     reset the signal handler for SIGCHLD to SIG_DFL before exec-ing
936     the new image. This is needed because CLISP set it to SIG_IGN,
937     which causes child reaping problems in spawned programs.
938     This should fix the ``No child processes'' problem when running
939     CVS from Meta-CVS.
940    
941 kaz 1.245 2003-02-11 Kaz Kylheku <kaz@ashi.footprints.net>
942    
943     * code/memoize.lisp (remove-key-aux-rest, strip-lambda-list,
944     extract-tests, remove-tests, memoize-expander, factor-memo-labels,
945     define-memoized-function, memoized-labels): Documentation strings
946     added to this cryptic code.
947    
948 kaz 1.244 2003-02-02 Kaz Kylheku <kaz@ashi.footprints.net>
949    
950     Make tag command work on whole tree if no arguments are given,
951     just like commit.
952    
953     * code/generic.lisp (mcvs-generic): no-fix-empty-filelist keyword
954     parameter renamed to global-if-empty-file-list, which more closely
955     reveals the purpose.
956     (mcvs-commit-wrapper): Use new keyword name.
957     (mcvs-tag-wrapper): Specify T value for :global-if-empty-filelist
958     argument, so the whole project is tagged by default if no arguments
959     are given.
960    
961 kaz 1.243 2003-02-01 Kaz Kylheku <kaz@ashi.footprints.net>
962    
963     * code/unix-bindings/wrap.c (impl_spawn): Try waitpid again in a loop
964     while it returns -1, and errno is EINTR.
965     Reported by Johannes Grødem <johs@copyleft.no>.
966    
967 kaz 1.242 2003-01-30 Kaz Kylheku <kaz@ashi.footprints.net>
968    
969     * code/paths.lisp: Move some (declaim inline) to the correct
970     location, before the function to be inlined.
971    
972     * code/clisp-unix.lisp: Likewise.
973     * code/cmucl-unix.lisp: Likewise.
974     * code/mapping.lisp: Likewise.
975    
976 kaz 1.240 2003-01-25 Kaz Kylheku <kaz@ashi.footprints.net>
977    
978     * code/unix-bindings/wrap.c (mcvs_getcwd): If getcwd() returns
979     NULL, it only means that the buffer is too small if errno is also
980     set to ERANGE. This second condition was not being tested.
981 kaz 1.241 Reported by Johannes Grødem <johs@copyleft.no>.
982 kaz 1.240
983     * code/clisp-unix.lisp (getcwd-error): New condition.
984     (initialize-instance (getcwd-error)): New method.
985     (getcwd): Raise getcwd-error condition if unix-funcs::getcwd
986     returns NIL.
987    
988 kaz 1.239 2003-01-15 Kaz Kylheku <kaz@ashi.footprints.net>
989    
990     * code/unix-bindings/impl.c: File renamed to wrap.c.
991     (impl_null_pointer_p, impl_get_errno, impl_set_errno, impl_readdir,
992     impl_readlink, impl_stat, impl_lstat, impl_fstat, impl_getcwd,
993     impl_spawn): Prefix changed from ``impl_'' to ``mcvs_''.
994    
995     * code/unix-bindings/link.sh, code/unix-bindings/Makefile,
996     code/unix-bindings/unix.lisp: Updated accordingly.
997    
998 kaz 1.237 2003-01-13 Kaz Kylheku <kaz@ashi.footprints.net>
999    
1000 kaz 1.238 Support -k CVS option in merge and remerge commands.
1001     Reported by Jamie Wellnitz.
1002    
1003     * code/mcvs-main.lisp (*merge-options*, *remerge-options*): Add
1004     one argument -k option.
1005    
1006     * code/merge.lisp (mcvs-merge): Support extra argument for passing
1007     command options. Pass them down to mcvs-update.
1008     (mcvs-merge-wrapper, mcvs-remerge-wrapper): Don't ignore command
1009     options but pass them to mcvs-merge.
1010    
1011     2003-01-13 Kaz Kylheku <kaz@ashi.footprints.net>
1012    
1013 kaz 1.237 * code/install.sh: More fail-safe way to locate library directory;
1014     works even when clisp executable is a symlink. Thanks to Sam
1015     Steingold, CLISP maintainer, for tip.
1016    
1017 kaz 1.236 2003-01-12 Kaz Kylheku <kaz@ashi.footprints.net>
1018    
1019     Hard link sync optimization.
1020    
1021     * code/mapping.lisp (mapping-synchronize): New optional parameter,
1022     specifies map to use instead of reading *map-local*.
1023    
1024     * code/mcvs-generic.lisp (mcvs-generic): Pass extra parameter to
1025     mapping-synchronize to only sync the selected subset of files.
1026    
1027 kaz 1.235 2003-01-01 Kaz Kylheku <kaz@ashi.footprints.net>
1028    
1029     * code/unix-bindings/impl.c (impl_spawn): For Cygwin, re-implemented
1030     this function as a wrapper for the spawnvp function. The combination
1031     of fork + execvp + waitpid does not work because waitpid is broken;
1032     it waits for thep rocess, but then returns -1 and sets errno
1033     to ECHILD.
1034    
1035 kaz 1.234 2002-12-27 Kaz Kylheku <kaz@ashi.footprints.net>
1036    
1037     * code/options.lisp (process-cvs-options): The version number
1038     now has three components.
1039    
1040 kaz 1.233 2002-12-13 Kaz Kylheku <kaz@ashi.footprints.net>
1041    
1042     * code/install.sh: Now works under CLISP installations which
1043     call the CLISP executable lisp.exe rather than lisp.run.
1044     This is the case under Cygwin as of CLISP 2.30 or so.
1045    
1046 kaz 1.232 2002-12-03 Kaz Kylheku <kaz@ashi.footprints.net>
1047    
1048     * code/sync.lisp (synchronize-files): Call exec-check using
1049     file info object, rather than file name. This cuts in half
1050     the number of calls to stat().
1051    
1052     2002-12-03 Kaz Kylheku <kaz@ashi.footprints.net>
1053 kaz 1.231
1054     Discontinuing use of CLISP's ext:run-program function in favor
1055     of a new workalike which doesn't rely on the shell interpreter.
1056    
1057     * code/unix-bindings/unix.lisp (unix-funcs:spawn): New C call out
1058     function (unix-funcs:run-program): New function, implemented using
1059     spawn.
1060    
1061     * code/unix-bindings/impl.c (impl_spawn): New function; wraps
1062     up fork, execvp and waitpid.
1063    
1064     * code/clisp-unix.lisp: Switch from ext:run-program to
1065     unix-funcs:run-program.
1066    
1067 kaz 1.230 2002-11-20 Kaz Kylheku <kaz@ashi.footprints.net>
1068    
1069     Some security fixes. Funny I didn't think of this sooner!
1070    
1071     * code/types.lisp (types-read): Make sure *read-eval* is bound to
1072     nil when calling READ.
1073    
1074     * code/mapping.lisp (mapping-read-raw-map, displaced-path-read):
1075     Likewise.
1076    
1077    
1078 kaz 1.228 2002-11-16 Kaz Kylheku <kaz@ashi.footprints.net>
1079    
1080 kaz 1.229 * code/unix.lisp (invoke-editor-on): Honor the CVSEDITOR and VISUAL
1081 kaz 1.228 environment variables, not just EDITOR.
1082    
1083 kaz 1.227 2002-11-09 Kaz Kylheku <kaz@ashi.footprints.net>
1084    
1085     * code/link.lisp (mcvs-link): Revamped link command to behave properly
1086     when the destination object is a directory. It must create the link in
1087     that directory, rather than try to create a link with that name.
1088     Plus handles various tricky cases. Trailing slash in destination name,
1089     destination that is a directory within target directory, attempted
1090     link creation in MCVS etc.
1091    
1092 kaz 1.226 2002-11-03 Kaz Kylheku <kaz@ashi.footprints.net>
1093    
1094     More support for -n option.
1095    
1096     * code/mcvs-main.lisp (*usage*): Document -n option.
1097    
1098     * code/move.lisp (mcvs-move-wrapper): Remove bogus error check
1099     for presence of global options.
1100    
1101     * code/options.lisp (honor-dry-run): New macro for conditionally
1102     not executing some forms if it's a dry run, and logging some
1103     debugging information.
1104    
1105     * code/sync.lisp (synchronize-files): Honor dry run.
1106    
1107     * code/mapping.lisp (mapping-synchronize, mapping-update): Likewise.
1108    
1109     2002-11-03 Kaz Kylheku <kaz@ashi.footprints.net>
1110    
1111     Start of support for global option -n (dry run).
1112    
1113     * code/options.lisp (*dry-run-option*): New boolean variable.
1114     (process-cvs-options): Look for -n and set *dry-run-option*.
1115    
1116     * code/types.lisp (types-write): Do not write file if *dry-run-option*
1117     is true.
1118    
1119     * code/types.lisp (mapping-write): Likewise.
1120    
1121     * code/add.lisp (mcvs-add): When calling types-let-user-edit,
1122     temporarily disable the dry run option, so that TYPES-NEW can
1123     be written. When the dry run option is in effect, do not try
1124     to cvs add the TYPES file.
1125    
1126     2002-11-03 Kaz Kylheku <kaz@ashi.footprints.net>
1127    
1128     * code/branch.lisp (*branch-help*): New string constant.
1129    
1130     * code/mcvs-main.lisp (*mcvs-command-table*): *branch-help* hooked in.
1131    
1132     2002-11-02 Kaz Kylheku <kaz@ashi.footprints.net>
1133    
1134     * code/mcvs-main (*args*, *options*): Unused variables removed.
1135     (mcvs-execute): Global option processing code removed.
1136    
1137     * code/options.lisp (*print-usage*): New boolean variable; tells
1138     mcvs-execute to print usage and terminate.
1139     (filter-mcvs-options): New function. Does the job that
1140     filter-global-options did.
1141     (process-cvs-options): Does the global option processing that
1142     was previously in mcvs-execute.
1143     (filter-global-options): Now just calls filter-mcvs-options,
1144     process-cvs-options.
1145    
1146 kaz 1.225 2002-11-02 Kaz Kylheku <kaz@ashi.footprints.net>
1147    
1148     * INSTALL: Include caveat about GCC 3 problems.
1149    
1150 kaz 1.222 2002-10-30 Kaz Kylheku <kaz@ashi.footprints.net>
1151    
1152 kaz 1.224 * code/prop.lisp (mcvs-prop): If there are no options specified,
1153     don't do anything.
1154    
1155     2002-10-30 Kaz Kylheku <kaz@ashi.footprints.net>
1156    
1157 kaz 1.223 * code/mcvs-package.lisp: New file, defines META-CVS package.
1158    
1159     * code/purge.lisp: Put all symbols in new package.
1160     * code/restore.lisp: Likewise.
1161     * code/paths.lisp: Likewise.
1162     * code/install.sh: Likewise.
1163     * code/restart.lisp: Likewise.
1164     * code/update.lisp: Likewise.
1165     * code/move.lisp: Likewise.
1166     * code/grab.lisp: Likewise.
1167     * code/unix.lisp: Likewise.
1168     * code/slot-refs.lisp: Likewise.
1169     * code/prop.lisp: Likewise.
1170     * code/multi-hash.lisp: Likewise.
1171     * code/rcs-utils.lisp: Likewise.
1172     * code/branch.lisp: Likewise.
1173     * code/find-bind.lisp: Likewise.
1174     * code/execute.lisp: Likewise.
1175     * code/link.lisp: Likewise.
1176     * code/split.lisp: Likewise.
1177     * code/watch.lisp: Likewise.
1178     * code/clisp-unix.lisp: Likewise.
1179     * code/add.lisp: Likewise.
1180     * code/chatter.lisp: Likewise.
1181     * code/print.lisp: Likewise.
1182     * code/types.lisp: Likewise.
1183     * code/remove.lisp: Likewise.
1184     * code/convert.lisp: Likewise.
1185     * code/error.lisp: Likewise.
1186     * code/options.lisp: Likewise.
1187     * code/dirwalk.lisp: Likewise.
1188     * code/checkout.lisp: Likewise.
1189     * code/generic.lisp: Likewise.
1190     * code/sync.lisp: Likewise.
1191     * code/create.lisp: Likewise.
1192     * code/memoize.lisp: Likewise.
1193     * code/seqfuncs.lisp: Likewise.
1194     * code/cmucl-unix.lisp: Likewise.
1195     * code/remap.lisp: Likewise.
1196    
1197     * code/mapping.lisp: Put symbols in new package. Replace use
1198     of CLISP specific substring function with subseq.
1199     * code/filt.lisp: Likewise.
1200    
1201     * code/mcvs-main.lisp: Put symbols in new package. The mcvs
1202     function is renamed to main.
1203    
1204     * code/install.sh: Generate mcvs script that uses qualified name
1205     of new startup functiont to start the software.
1206    
1207     2002-10-30 Kaz Kylheku <kaz@ashi.footprints.net>
1208    
1209 kaz 1.222 * code/unix-bindings/unix.lisp: Rewrote defpackage to take only
1210     selected symbols from CLISP's FFI package rather using the whole
1211     thing. FFI, and the packages it uses, are moving targets.
1212     The symbol def-c-call-out is interned in unix-funcs.
1213     (unix-funcs:def-c-call-out): New internal macro. CLISP says that
1214     ffi:def-c-call-out is obsolescent.
1215    
1216     * code/unix-bindings/Makefile: The ``clean'' target removes
1217     unix.lib, not only unix.fas.
1218    
1219 kaz 1.221 2002-10-27 Kaz Kylheku <kaz@ashi.footprints.net>
1220    
1221     Bugfix to the directory restructuring code. A clobbering
1222     file add was not actually removing the clobbered file, but leaving
1223     it up to the synchronization algorithm, so the time-stamp would
1224     decide whether the local file gets clobbered by the repository one,
1225     or whether it wins.
1226    
1227     * code/mapping.lisp (mapping-update): Logic for handling added
1228     file ensures that a clobbered local file is removed first.
1229    
1230 kaz 1.218 2002-10-26 Kaz Kylheku <kaz@ashi.footprints.net>
1231    
1232 kaz 1.220 New link command for creating symlinks.
1233    
1234     * mcvs-main.lisp (*link-options*): New option constant.
1235     (*mcvs-command-table*): Entries for new command added.
1236     (*usage*): Help text added.
1237    
1238     * link.lisp: New file.
1239     (mcvs-link, mcvs-link-wrapper): New functions.
1240    
1241     2002-10-26 Kaz Kylheku <kaz@ashi.footprints.net>
1242    
1243 kaz 1.219 * code/grab.lisp (*grab-help*): Rewritten.
1244    
1245     * code/checkout.lisp (*export-help*): Formatted for 80 columns.
1246    
1247     2002-10-26 Kaz Kylheku <kaz@ashi.footprints.net>
1248    
1249 kaz 1.218 * code/mcvs-main.lisp (*usage*): Expand tabs to spaces.
1250    
1251     * code/add.lisp (*add-help*): Likewise.
1252    
1253     * code/remove.lisp (*remove-help*): Likewise.
1254    
1255     * code/create.lisp (*create-help*): Likewise.
1256    
1257     2002-10-26 Kaz Kylheku <kaz@ashi.footprints.net>
1258    
1259     * code/purge.lisp (mcvs-purge): Get rid the processing of the
1260     nonexistent -n option from purge code. The global option -n does an
1261     adequate job of implementing a dry run.
1262    
1263     2002-10-26 Kaz Kylheku <kaz@ashi.footprints.net>
1264    
1265     * code/mapping.lisp (mapping-removed-files): Skip over the MCVS/CVS
1266     directory, which can contain CVS-generated files with F- names and a ,t
1267     suffix. These trip up the algorithm.
1268    
1269 kaz 1.217 2002-10-21 Kaz Kylheku <kaz@ashi.footprints.net>
1270    
1271     Add help to move command.
1272    
1273     * code/mcvs-main.lisp (*mcvs-command-table*): Added *move-help*.
1274    
1275     * code/move.lisp (*mcvs-help*): New constant.
1276    
1277 kaz 1.216 2002-10-20 Kaz Kylheku <kaz@ashi.footprints.net>
1278    
1279     Fix broken ``filt -r''.
1280    
1281     * code/mapping.lisp (mapping-read-raw-map): New function; reads
1282     map from stream and does sanity check.
1283     (mapping-read): Argument can be a filename or stream. Call to
1284     mapping-read-raw-map to factor out common code for both cases.
1285    
1286     * code/filt.lisp (filt-select-map): This was still just
1287     reading the raw structure from the cvs coprocess, which worked under
1288     the old map format, when the internal and external representations
1289     were the same. Now it calls mapping-read on the stream.
1290    
1291     2002-10-19 Kaz Kylheku <kaz@ashi.footprints.net>
1292    
1293     * UPGRADE-EXISTING: New file.
1294    
1295     2002-10-19 Kaz Kylheku <kaz@ashi.footprints.net>
1296    
1297     * code/mcvs-main.lisp: Clear out *modules* list before requiring
1298     modules. This is needed so that mcvs-upgrade works, because there
1299     is already a populated list in the Lisp image.
1300    
1301 kaz 1.215 2002-10-17 Kaz Kylheku <kaz@ashi.footprints.net>
1302    
1303     Detect failure to start text editor.
1304    
1305     * code/unix.lisp (*editor*, invoke-editor-on): Change name of *editor*
1306     to *mcvs-editor*, due to name-clash with a CLISP extension!
1307    
1308     * code/mcvs-main.lisp (mcvs-execute): Likewise.
1309    
1310     * code/types.lisp (types-let-user-edit): Provide an individual
1311     restart-case block around the invocation of the text editor,
1312     which lets the user re-try the editor.
1313    
1314 kaz 1.210 2002-10-13 Kaz Kylheku <kaz@ashi.footprints.net>
1315    
1316 kaz 1.214 * code/install.sh: generate a script called mcvs-upgrade.
1317    
1318     2002-10-13 Kaz Kylheku <kaz@ashi.footprints.net>
1319    
1320 kaz 1.213 * code/prop.lisp (mcvs-prop): Read *mcvs-map*, not *mcvs-map-local*.
1321    
1322     2002-10-13 Kaz Kylheku <kaz@ashi.footprints.net>
1323    
1324 kaz 1.212 * code/mcvs-main.lisp (*watchers-options*): New constant.
1325     (*edit-options*): Likewise.
1326     (*unedit-options*): Likewise.
1327     (*editors-options*): Likewise.
1328     (*mcvs-command-table*): Added watchers, edit unedit, and editors
1329     commands.
1330     (*usage*): Updated.
1331    
1332     * code/generic.lisp (mcvs-watchers-wrapper, mcvs-edit-wrapper,
1333     mcvs-unedit-wrapper, mcvs-editors-wrapper): New functions.
1334    
1335     2002-10-13 Kaz Kylheku <kaz@ashi.footprints.net>
1336    
1337 kaz 1.211 * code/mcvs-main.lisp (*usage*): Describe export and watch commands.
1338    
1339     2002-10-13 Kaz Kylheku <kaz@ashi.footprints.net>
1340    
1341     * code/mcvs-main.lisp (*watch-options*): New constant.
1342     (*mcvs-command-table*): New entry for watch command.
1343    
1344     * code/watch.lisp: New file.
1345    
1346     2002-10-13 Kaz Kylheku <kaz@ashi.footprints.net>
1347    
1348 kaz 1.210 * code/mcvs-main.lisp (*export-options*): New constant.
1349     (*mcvs-command-table*): New entries for export command.
1350    
1351 kaz 1.211 * code/checkout.lisp (mcvs-checkout): New keyword to specify export
1352     behavior. This causes cvs export to be run instead of checkout,
1353     and the MCVS directory to be deleted after.
1354 kaz 1.210 (mcvs-checkout-wrapper): Common function factored out into a flet.
1355 kaz 1.211 (mcvs-export-wrapper): New function. Verifies that one of -D and -r
1356     options is present, then runs mcvs-checkout, specifying export
1357     behavior.
1358 kaz 1.210
1359 kaz 1.206 2002-10-12 Kaz Kylheku <kaz@ashi.footprints.net>
1360    
1361 kaz 1.209 * code/mcvs-main.lisp (*update-options*): Added -C option.
1362    
1363     * code/update.lisp (mcvs-update): Fall back on the mcvs-generic
1364     if --metaonly or --nometa is specified to run CVS on specific
1365     files.
1366    
1367     2002-10-12 Kaz Kylheku <kaz@ashi.footprints.net>
1368    
1369 kaz 1.208 * code/filt.lisp (mcvs-filt): Do not filter F- names if
1370     immediately preceded by MCVS/ prefix.
1371    
1372     2002-10-12 Kaz Kylheku <kaz@ashi.footprints.net>
1373    
1374     * code/clisp-unix.lisp (execute-program): Provide debug traces
1375     for command execution.
1376    
1377     2002-10-12 Kaz Kylheku <kaz@ashi.footprints.net>
1378    
1379 kaz 1.207 Rethink some decisions in the previous change. Reusing the
1380     name posix.lisp for a new file will cause problems for people
1381     using mcvs grab to keep up with Meta-CVS patches.
1382    
1383     * code/posix.lisp: Renamed to unix.lisp.
1384    
1385     * code/clisp-posix.lisp: Renamed back to clisp-unix.lisp, for
1386     the sake of consistency.
1387    
1388     * code/system.lisp: Updated.
1389    
1390     * code/cmucl.lisp: Likewise.
1391    
1392     Don't call a new file posix.lisp, because
1393     it can create confusion with the old file that used to be called
1394     posix.lisp,
1395    
1396     2002-10-12 Kaz Kylheku <kaz@ashi.footprints.net>
1397    
1398 kaz 1.206 Minor reorganization.
1399    
1400 kaz 1.207 * code/posix.lisp: File renamed to paths.lisp, module renamed
1401     to "paths".
1402 kaz 1.206 (*editor*): Variable removed.
1403     (arglist-to-command-string, execute-programs-xargs,
1404     invoke-editor-on): Functions removed.
1405    
1406 kaz 1.207 * code/posix.lisp: New file.
1407 kaz 1.206 (*editor*): Variable moved here from paths.lisp.
1408     (arglist-to-command-string, invoke-editor-on): Functions moved here
1409     from paths.lisp.
1410    
1411 kaz 1.207 * code/editor.lisp: New file.
1412 kaz 1.206 (*argument-limit*): Variable definition moved here.
1413     (execute-programs-xargs): Function moved here from paths.lisp.
1414    
1415 kaz 1.207 * code/clisp-unix.lisp: Renamed to clisp-posix.lisp.
1416 kaz 1.206 Requires "posix" module now.
1417     (*argument-limit*): Variable removed.
1418    
1419 kaz 1.207 * code/system.lisp: Remove references to old clisp-linux module.
1420 kaz 1.206 Added requires for new paths and execute modules.
1421    
1422 kaz 1.207 * code/cmucl-unix.lisp (*argument-limit*): Variable definition removed.
1423 kaz 1.206
1424 kaz 1.205 2002-10-09 Kaz Kylheku <kaz@ashi.footprints.net>
1425    
1426     * code/add.lisp (*add-help*): Remove spurious text cut and pasted from
1427     checkout help.
1428    
1429 kaz 1.196 2002-10-06 Kaz Kylheku <kaz@ashi.footprints.net>
1430    
1431 kaz 1.204 * code/prop.lisp (mcvs-prop): Result of real-to-abstract-path
1432     must be canonicalized.
1433    
1434     * code/remove.lisp (mcvs-remove): Likewise.
1435    
1436     * code/generic.lisp (mcvs-generic): Likewise.
1437    
1438     2002-10-06 Kaz Kylheku <kaz@ashi.footprints.net>
1439    
1440 kaz 1.203 * code/move.lisp (move-guts, mcvs-move): Canonicalize the destination
1441     path in mcvs-move, rather than mcvs-guts.
1442    
1443     2002-10-06 Kaz Kylheku <kaz@ashi.footprints.net>
1444    
1445 kaz 1.202 * code/create.lisp (mcvs-create): Add the DISPLACED filename
1446     to the .cvsignore file.
1447    
1448     2002-10-06 Kaz Kylheku <kaz@ashi.footprints.net>
1449    
1450 kaz 1.201 * code/posix.lisp (path-prefix-equal): Handle empty strings.
1451    
1452     2002-10-06 Kaz Kylheku <kaz@ashi.footprints.net>
1453    
1454 kaz 1.200 * code/move.lisp (move-guts): If an error occurs for each
1455     source in a multiple move, and the user skips each source,
1456     generate the error that all sources were skipped.
1457    
1458     2002-10-06 Kaz Kylheku <kaz@ashi.footprints.net>
1459    
1460 kaz 1.199 * code/move.lisp (source-check): Generate error if a move
1461     of the sandbox root is attempted.
1462    
1463     2002-10-06 Kaz Kylheku <kaz@ashi.footprints.net>
1464    
1465 kaz 1.198 * code/remap.lisp (mcvs-remap): Preserve property lists of
1466     mapping entries, and pick up changes in execute permission.
1467    
1468     * code/mapping.lisp (mapping-convert-out): If the mapping entry's
1469     executable flag is nil, then remove the :exec entry from the property
1470     list.
1471    
1472     2002-10-06 Kaz Kylheku <kaz@ashi.footprints.net>
1473    
1474 kaz 1.197 * code/mapping.lisp (equal-filemaps): Repair completely broken
1475     function.
1476    
1477     * code/move.lisp (mcvs-move): Added little hack for turning
1478     no-op moves into errors. Without this the behavior is confusing,
1479     since the program appears to do nothing.
1480    
1481     2002-10-06 Kaz Kylheku <kaz@ashi.footprints.net>
1482    
1483 kaz 1.196 * code/add.lisp (mcvs-add): Provide a continue restart around
1484     the code that builds up the expanded-paths for each iteration of the
1485     loop. Without this, errors in that code cause the program to bail, even
1486     though errors in the rest of the loop body are continuable.
1487    
1488 kaz 1.189 2002-10-05 Kaz Kylheku <kaz@ashi.footprints.net>
1489    
1490 kaz 1.195 * code/dirwalk.lisp (dirwalk): If the argument is not a directory,
1491     the callback must still be invoked. This was done prior to
1492     a 2002-05-20 commit. I can't quite remember why it was changed;
1493     but I seem to recall thinking about the new dirwalk-skip catch,
1494     and how it must be always visible to the callback closure, so
1495     that the (skip) mechanism works.
1496    
1497     2002-10-05 Kaz Kylheku <kaz@ashi.footprints.net>
1498    
1499 kaz 1.194 * code/add.lisp (mcvs-add): Reshuffle restart to a higher nesting
1500     level, so that an error on one item won't abort the whole operation.
1501    
1502     2002-10-05 Kaz Kylheku <kaz@ashi.footprints.net>
1503    
1504 kaz 1.193 * code/convert.lisp (mcvs-convert): Maintenance so that this tool
1505     at least runs, even though it doesn't do anything resembling a
1506     reasonable conversion job.
1507    
1508     2002-10-05 Kaz Kylheku <kaz@ashi.footprints.net>
1509    
1510 kaz 1.192 * code/clisp-unix.lisp (guid-gen): Changes for Cygwin broke the
1511     case when /dev/urandom is available.
1512    
1513     2002-10-05 Kaz Kylheku <kaz@ashi.footprints.net>
1514    
1515 kaz 1.191 * code/find-bind.lisp (find-bind): Allow empty variable list, as
1516     described by the documented syntax.
1517    
1518     2002-10-05 Kaz Kylheku <kaz@ashi.footprints.net>
1519    
1520 kaz 1.190 * code/error.lisp (mcvs-error-handler): Simplify roundabout way
1521     of printing error message.
1522    
1523     * code/mapping.lisp (mapping-write): Incorporate the low level error
1524     message into the more informative error message.
1525    
1526     2002-10-05 Kaz Kylheku <kaz@ashi.footprints.net>
1527    
1528 kaz 1.189 Error messages no longer specify prefixes like "mcvs:" or
1529     "mcvs-remove:".
1530    
1531     When no restarts are available, the error handler now adds the "mcvs:"
1532     prefix when dumping the error text to the standard error stream,
1533     and also adds a terminating newline.
1534    
1535     The inability to write to the MAP file is converted to a more
1536     informative error message.
1537    
1538     New --debug option is supported to set the chatter level to 3.
1539    
1540     * code/chatter.lisp: Use the symbolic constant when defining the
1541     default chatter level value.
1542    
1543     * code/mcvs-main.lisp (*cvs-options*, mcvs-help, mcvs-execute): Added
1544     support for --debug option, and removed of prefixes from error
1545     messages.
1546    
1547     * code/options.lisp (filter-global-options): Support --debug.
1548     (parse-opt): Removed prefixes from error messages.
1549    
1550     * code/mapping.lisp (mapping-rename-files, mapping-dupe-check,
1551     mapping-convert-in, mapping-synchronize, mapping-update): Removed
1552     prefixes from error messages.
1553     (mapping-write): Trap write error and convert to more informative
1554     error message.
1555    
1556     * code/error.lisp (mcvs-error-handler): In the case when no restarts
1557     are available, format the error message by adding the mcvs: prefix
1558     and a terminating newline.
1559    
1560     * code/purge.lisp (mcvs-purge): Removed prefixes from error messages.
1561    
1562     * code/restore.lisp (mcvs-restore): Likewise.
1563    
1564     * code/move.lisp (move-guts, mcvs-move): Likewise.
1565    
1566     * code/grab.lisp (mcvs-grab): Likewise.
1567    
1568     * code/prop.lisp (mcvs-prop): Likewise.
1569    
1570     * code/filt.lisp (filt-select-map, mcvs-filt): Likewise.
1571    
1572     * code/branch.lisp (where-is-the-repository, mcvs-branch,
1573     cvs-make-or-advance-tag, mcvs-merge, mcvs-list-branches,
1574     mcvs-switch-wrapper): Likewise.
1575    
1576     * code/add.lisp (mcvs-add, mcvs-add): Likewise.
1577    
1578     * code/remove.lisp (mcvs-remove): Likewise.
1579    
1580     * code/convert.lisp (classify-tags, mcvs-convert): Likewise.
1581    
1582     * code/checkout.lisp (mcvs-checkout): Likewise.
1583    
1584     * code/generic.lisp (mcvs-generic, mcvs-diff-wrapper): Likewise.
1585    
1586     * code/create.lisp (mcvs-create, mcvs-create): Likewise.
1587    
1588     * code/remap.lisp (mcvs-remap, mcvs-remap): Likewise.
1589    
1590 kaz 1.188 2002-09-25 Kaz Kylheku <kaz@ashi.footprints.net>
1591    
1592     Minimal changes for building on Cygwin.
1593    
1594     * code/install.sh (space_check, dash_check): Function definitions
1595     modified to conform to bash2.
1596    
1597     * code/clisp-unix.lisp (*have-dev-random*, *mcvs-random-state*):
1598     New special variables.
1599     (guid-gen): Rewritten to fall back on the Common Lisp random
1600     function if /dev/urandom is not available.
1601    
1602 kaz 1.180 2002-09-21 Kaz Kylheku <kaz@ashi.footprints.net>
1603    
1604 kaz 1.187 * code/mcvs-main.lisp (*options*): New variable. Gives
1605     scripts access to to some global options. The *args* variable now
1606     holds only the remaining arguments after the options.
1607     (mcvs-execute): Sets up *args* and *options* accordingly.
1608     No longer parses out the --error-continue and --error-terminate
1609     options.
1610    
1611     * code/options.lisp (filter-global-options): The handling of
1612     --error-continue and --error-terminate is done here. This is
1613     the place to handle options that must be removed (not passed
1614     down to CVS) and which do not trigger immediate actions in
1615     mcvs-execute.
1616    
1617     2002-09-21 Kaz Kylheku <kaz@ashi.footprints.net>
1618    
1619 kaz 1.186 * code/mcvs-main.lisp (*args*): New global variable. Gives
1620 kaz 1.185 scripts access to command line.
1621    
1622     2002-09-21 Kaz Kylheku <kaz@ashi.footprints.net>
1623    
1624 kaz 1.184 * code/mcvs-main.lisp (*cvs-options*): Add -i parameter which
1625     takes the name of a script to invoke.
1626     (*usage*): Updated to describe new option.
1627     (mcvs-execute): Parse out -i option and load the specified file.
1628    
1629     2002-09-21 Kaz Kylheku <kaz@ashi.footprints.net>
1630    
1631 kaz 1.183 * code/install.sh: Don't specify -K full option when running
1632     specific, generated CLISP image already. When generating mcvs.mem,
1633     load the compiled version mcvs-main, rather than mcvs-main.lisp.
1634    
1635     2002-09-21 Kaz Kylheku <kaz@ashi.footprints.net>
1636    
1637 kaz 1.182 * code/install.sh: Check that the installation target path won't
1638     look like a command line option to shell commands.
1639    
1640     2002-09-21 Kaz Kylheku <kaz@ashi.footprints.net>
1641    
1642 kaz 1.181 * code/mcvs-main.lisp (*mcvs-command-table*): Added help for remove.
1643    
1644     * code/remove.lisp (*remove-help*): New string constant.
1645    
1646     2002-09-21 Kaz Kylheku <kaz@ashi.footprints.net>
1647    
1648 kaz 1.180 * code/grab.lisp (mcvs-grab): Inspect the execute permissions
1649     of stable and moved files, and update the :EXEC propery of
1650     their mapping entries accordingly. In other words, grab changes
1651     in execute permissions properly.
1652    
1653 kaz 1.179 2002-09-18 Kaz Kylheku <kaz@ashi.footprints.net>
1654    
1655     * code/restore.lisp (mcvs-restore): Was still generating old-style
1656     mapping entries.
1657    
1658     * code/clisp-unix.lisp (executable-p (string)): New method for
1659     executable-p generic function that takes a filename.
1660    
1661 kaz 1.177 2002-09-17 Kaz Kylheku <kaz@ashi.footprints.net>
1662    
1663 kaz 1.178 * code/install.sh: Check that the installation target path
1664     does not contain any spaces. It cannot, because it is used
1665     in the #! line of an interpreter script. As a consequence of
1666     this check, whitespace precautions in the expansion of $TARGET,
1667     $TARGET_LIB and $TARGET_BIN have been removed.
1668    
1669     2002-09-17 Kaz Kylheku <kaz@ashi.footprints.net>
1670    
1671 kaz 1.177 * code/checkout.lisp (mcvs-checkout): If a subdirectory path
1672     is specified, verify that it is relative, and that it points
1673     within the module.
1674    
1675 kaz 1.175 2002-09-16 Kaz Kylheku <kaz@ashi.footprints.net>
1676    
1677 kaz 1.176 * code/mcvs-main.lisp (*checkout-options*): Removed -A and -N
1678     options.
1679     (*mcvs-command-table*): Added help for checkout and add.
1680    
1681     * code/checkout.lisp (*checkout-help*): New string constant.
1682    
1683     * code/add.help (*add-help*): Likewise.
1684    
1685     * code/create.lisp (*create-help*): Mention interactive file
1686     type specification.
1687    
1688     2002-09-16 Kaz Kylheku <kaz@ashi.footprints.net>
1689    
1690 kaz 1.175 * code/mcvs-main.lisp (*mcvs-command-table*): Add *grab-help*.
1691    
1692     * code/grab.lisp (*grab-help*): New string constant.
1693    
1694 kaz 1.172 2002-09-11 Kaz Kylheku <kaz@ashi.footprints.net>
1695    
1696 kaz 1.174 * code/clisp-linux.lisp: File removed.
1697    
1698     2002-09-11 Kaz Kylheku <kaz@ashi.footprints.net>
1699    
1700 kaz 1.173 Implement help text for create command.
1701    
1702     * code/mcvs-main.lisp (mcvs-help): Fixes.
1703     (*mcvs-command-table*): Add *create-help*.
1704    
1705     * code/create.lisp (*create-help*): New string constant.
1706    
1707     2002-09-11 Kaz Kylheku <kaz@ashi.footprints.net>
1708    
1709 kaz 1.172 Revamping help system to support more detailed help
1710     for individual commands.
1711    
1712     * code/mcvs-main.lisp (mcvs-help): New function.
1713     (*help-options*): New constant.
1714     (*mcvs-command-table*): New entry in each sublist element;
1715     this is either nil, or a string containing help text.
1716     (mcvs-execute): Update to use new table structure.
1717    
1718 kaz 1.171 2002-09-10 Kaz Kylheku <kaz@ashi.footprints.net>
1719    
1720     * code/filt.lisp (mcvs-filt): Bugfix: was trying to
1721     use NIL as if it were a mapping-entry struct after an unsuccessful
1722     gethash.
1723    
1724     2002-09-10 Kaz Kylheku <kaz@ashi.footprints.net>
1725    
1726     Fix installation braindamage. The problem is that
1727     the linkkit material is architecture specific; it was
1728     wrong to copy that from CLISP.
1729    
1730     * code/install.sh (CLISP_PATH, CLISP_ROOT, CLISP_LIB): New
1731     variables, dynamically computed from clisp's location.
1732     The script now runs the clisp-link under $CLISP_LIB rather
1733     than using a replica, and uses $CLISP_LIB/linkkit rather
1734     than a replica linkkit.
1735     (CLISP): Variable renamed to LISPRUN.
1736    
1737     * code/clisp-link: File removed.
1738     * code/linkkit/modules.d: Likewise.
1739     * code/linkkit/modules.c: Likewise.
1740     * code/linkkit/clisp.h: Likewise.
1741    
1742 kaz 1.168 2002-09-08 Kaz Kylheku <kaz@ashi.footprints.net>
1743    
1744 kaz 1.170 Fix mistake dating back to April.
1745    
1746     * code/branch.lisp (mcvs-merge): Symbol T was being invoked
1747     as function in the case that merge is invoked on a sandbox
1748     that is sticky to a non-branch tag.
1749    
1750     2002-09-08 Kaz Kylheku <kaz@ashi.footprints.net>
1751    
1752 kaz 1.169 Another stupid error.
1753    
1754     * code/create.lisp (mcvs-create): Fix use to unbound
1755     variable file-info which should be fi.
1756    
1757     2002-09-08 Kaz Kylheku <kaz@ashi.footprints.net>
1758    
1759 kaz 1.168 Fix stupid error.
1760    
1761     * code/mcvs-main.lisp (*move-options*): New constant.
1762     (*mcvs-command-table*): Fix broken entry for "move" and "mv".
1763    
1764 kaz 1.167 2002-09-07 Kaz Kylheku <kaz@ashi.footprints.net>
1765    
1766     Eliminate inappropriate pluralization in messages.
1767    
1768     * code/grab.lisp (mcvs-grab): Use ~:p to substitute a 's'
1769     if the parameter is other than 1.
1770    
1771     * code/options.lisp (parse-opt): Likewise.
1772    
1773 kaz 1.165 2002-09-06 Kaz Kylheku <kaz@ashi.footprints.net>
1774    
1775 kaz 1.166 * code/prop.lisp (mcvs-prop): Support --value option to
1776     associate an arbitrary value with a property indicator.
1777    
1778     * code/mcvs-main.lisp (*usage*): Describe --value and
1779     clarify syntax.
1780    
1781     2002-09-06 Kaz Kylheku <kaz@ashi.footprints.net>
1782    
1783 kaz 1.165 Unify command option parsing, and enable it to handle options with
1784     any number of required parameters.
1785    
1786     * code/options.lisp (parse-opt): Function rewritten. Argument
1787     syntax and semantics have changed. Options are specified
1788     as an association list whose member are string-integer
1789     pairs. The string is the option name, the integer specifies
1790     the number of required parameters.
1791     (option-spec-expand): New function.
1792     (option-spec): New macro.
1793     (define-option-constant): New macro.
1794    
1795     * code/mcvs-main.lisp (*cvs-options-arg*): Constant removed.
1796     (*cvs-options*, *create-options*, *grab-options*, *checkout-options*,
1797     *add-options*, *remove-options*, *update-options*,
1798     *switch-options*, *commit-options*, *diff-options*, *tag-options*,
1799     *log-options*, *status-options*, *annotate-options, *filt-options*,
1800     *convert-options*, *branch-options*, *merge-options*,
1801     *remerge-options*, *list-branches-options*, *remap-options*,
1802     *purge-options*, *restore-options*, *prop-options*): Constant
1803     definitions refactored using define-option-constant macro.
1804     (*mcvs-command-table*): Use , rather than ,@ to insert
1805     option specs.
1806     (*usage*): Suggest cleaner syntax for prop options.
1807     (mcvs-execute): Switch to new parse-opt.
1808    
1809 kaz 1.162 2002-09-05 Kaz Kylheku <kaz@ashi.footprints.net>
1810    
1811 kaz 1.164 New prop command for manipulating property lists.
1812    
1813     * code/mcvs-main.lisp (*prop-options*): New constant.
1814     (*mcvs-command-table*): New entry.
1815     (*usage*): Update.
1816    
1817     * code/mapping.lisp (mapping-entry-parse-plist): Just unconditionally
1818     set execute slot based on :exec property.
1819    
1820     * code/prop.lisp: New file.
1821    
1822     2002-09-05 Kaz Kylheku <kaz@ashi.footprints.net>
1823    
1824 kaz 1.163 Be transparent with respect to mapping entry property lists:
1825     preserve unrecognized indicators and values.
1826    
1827     * code/mapping.lisp (mapping-entry): New slot, raw-plist,
1828     records raw property list from external mapping representation.
1829     (mapping-entry-parse-attributes): Renamed to mapping-entry-parse-plist.
1830     Argument dropped; parses raw-plist slot instead.
1831     (mapping-convert-in): Set raw-plist slot to value of fourth list
1832     element of :FILE entry, or fifth list element of :SYMLINK entry.
1833     (mapping-convert-out): Unify any slot values that are represented as
1834     properties into raw-plist, and insert any non-empty plists into
1835     external representation.
1836    
1837     2002-09-05 Kaz Kylheku <kaz@ashi.footprints.net>
1838    
1839 kaz 1.162 Low level support for versioning executable bit.
1840    
1841     * code/unix-bindings/unix.lisp (unix-funcs:chmod): New callout
1842     function.
1843    
1844     * code/clisp-unix.lisp (executable-p, make-executable,
1845     make-non-executable): New generic functions.
1846     (executable-p (file-info), make-executable (file-info),
1847     make-executable (string), make-non-executable (file-info),
1848     make-non-executable (string)): New methods.
1849    
1850     * code/add.lisp (mcvs-add): Record whether new file is
1851     executable or not, by setting executable slot in mapping-entry.
1852    
1853     * code/create.lisp (mcvs-create): Likewise.
1854    
1855     * code/sync.lisp (synchronize-files): New parameter,
1856     should-be-executable, tells function which way to set
1857     permissions after synchronizing files.
1858    
1859     * code/mapping.lisp (mapping-entry): New slot, executable.
1860     (mapping-entry-parse-attributes): New function, parses
1861     new optional property list from :FILE entries in a mapping.
1862     (mapping-convert-in): Parse property list that may be present in fourth
1863     list element of a :FILE entry.
1864     (mapping-convert-out): Write out executable flag as
1865     :EXEC property, if true.
1866     (mapping-synchronize): Pass executable flag down to synchronize-files.
1867    
1868 kaz 1.161 2002-09-02 Kaz Kylheku <kaz@ashi.footprints.net>
1869    
1870     * code/grab.lisp (determine-moved-files): Rename local
1871     variable for clarity.
1872     (determine-moved-symlinks): Actually compute what symlinks
1873     are moved. Takes one more argument, the stable-files list.
1874     (mcvs-grab): Fix small destructuring-bind bug in symlink
1875     moving code. Also, read the targets of moved symlinks into
1876     the map, like it is already done with stable symlinks.
1877    
1878 kaz 1.160 2002-09-01 Kaz Kylheku <kaz@ashi.footprints.net>
1879    
1880     * code/grab.lisp (mcvs-grab): Iterate over stable symlinks,
1881     and incorporate changed targets into the mapping. In other
1882     words, notice and incorporate retargetted symlinks.
1883    
1884 kaz 1.159 2002-08-31 Kaz Kylheku <kaz@ashi.footprints.net>
1885    
1886     Merging new symbolic link support from symlink-branch.
1887    
1888 kaz 1.160 * code/mapping.lisp (mapping-update): Resolve merge conflict.
1889 kaz 1.159 The branch fixed the 2002-08-24 bug also.
1890    
1891     2002-08-31 Kaz Kylheku <kaz@ashi.footprints.net>
1892    
1893     * code/grab.lisp (move-candidates): Function renamed to
1894     determine-moved-files.
1895     (determine-moved-symlinks): New function, doesn't do anything
1896     yet.
1897     (mcvs-grab): Updated to process symlinks and use new
1898     mapping-entry structure.
1899    
1900     2002-08-26 Kaz Kylheku <kaz@ashi.footprints.net>
1901    
1902     * code/remap.lisp (mcvs-remap): Use new mapping entry structure.
1903     For now, preserve symbolic link entries as they are, processing only
1904     files.
1905    
1906     * code/mapping.lisp (equal-mapping-entries, equal-mappings): New
1907     functions.
1908    
1909     2002-08-25 Kaz Kylheku <kaz@ashi.footprints.net>
1910    
1911     * code/clisp-unix.lisp (initialize-instance link-error): Make
1912     error message less confusing about which path refers to the
1913     object being created, and which path refers to what it links to.
1914    
1915     * code/mapping.lisp (mapping-rename-files): Bugfix: destructuring-bind
1916     appeared in place of with-slots.
1917     (mapping-synchronize): When creating symbolic link, ensure that
1918     its directory exists.
1919     (mapping-update): Likewise.
1920    
1921     2002-08-25 Kaz Kylheku <kaz@ashi.footprints.net>
1922    
1923     * code/add.lisp (mcvs-add): Change to new mapping-entry data structure
1924     and handle symbolic links.
1925    
1926     * code/create.lisp (mcvs-create): Likewise.
1927    
1928     * code/filt.lisp (make-filt-hash, mcvs-filt): Change to new
1929     mapping-entry data structure. Filt does not care about symlinks.
1930    
1931     * code/types.lisp (types-remove-ignores, types-make-cvs-adds):
1932     Change to new mapping-entry data structure.
1933    
1934     * code/mapping.lisp (mapping-generate-name): Renamed to
1935     mapping-generate-id. Interface changes slightly.
1936     (mapping-extract-kind): New function, factored out from mcvs-generic.
1937     (mapping-update): Unlink existing symbolic link before
1938     re-linking it.
1939    
1940     * code/convert.lisp (mcvs-convert): Use new name and interface
1941     of mapping-generate-name function.
1942    
1943     * code/create.lisp (mcvs-create): Likewise.
1944    
1945     * code/generic.lisp (mcvs-generic): Code to extract :file
1946     entries from map factored out to mapping-extract-kind.
1947    
1948    
1949     2002-08-25 Kaz Kylheku <kaz@ashi.footprints.net>
1950    
1951     * code/generic.lisp (mcvs-generic): Use new mapping-entry data structure.
1952     Filter out mapping entries which are other than of the :file type, so
1953     we don't pass to CVS things it doesn't know about, like symbolic
1954     links.
1955    
1956     2002-08-24 Kaz Kylheku <kaz@ashi.footprints.net>
1957    
1958     Support for symbolic links added to the mapping module. The format of
1959     the map file has changed to accomodate this. The new format of the
1960     list entries is (:keyword "id" "path" ...) where the keyword is either
1961     :file or :symlink (for now, extensible obviously), "id" is a unique
1962     identifier (for regular files, it is their MCVS/F-* name) and "path" is
1963     the sandbox path. Other things can follow; for symlinks, there is a
1964     string representing the symlink target. Internally, a new data type
1965     called mapping-entry is used; this is a struct. So the functions which
1966     read and write maps now convert between the struct format and the above
1967     format.
1968    
1969     * code/unix-bindings/unix.lisp (unix-funcs:readlink): New function.
1970    
1971     * code/unix-bindings/impl.c (impl_readlink): New function.
1972    
1973     * code/clisp-unix.lisp (readlink-error): New condition.
1974     (initialize-instance readlink-error): New method for
1975     initialize-instance generic function, specialized for readlink-error.
1976     (readlink): New function.
1977    
1978     * code/mapping.lisp (mapping-entry): New struct, with slots
1979     file, id, path and target.
1980     (mapping-same-object-p): Renamed to mapping-same-id-p.
1981     (mapping-object-lookup, mapping-moved-p): Unused functions removed.
1982     (mapping-extract-paths, mapping-lookup, mapping-prefix-lookup,
1983     mapping-prefix-matches, mapping-same-path-p, mapping-rename-files,
1984     mapping-removed-files): Functions updated to use the new data
1985     structure.
1986     (mapping-dupe-checks): Rewritten for new data structure, and to
1987     use hashes rather than silly sorting.
1988     (mapping-convert-old-style-in, mapping-convert-in,
1989     mapping-convert-out): New functions.
1990     (mapping-read): Handle new and old style representations,
1991     handle conversion to internal representation.
1992     (mapping-write): Convert to new-style external representation
1993     before writing out.
1994     (mapping-synchronize): Handle symbolic links. If a link is missing,
1995     create it. If it's present but different from what it should be,
1996     erase it and re-create it.
1997     (mapping-update): Use new data structure. Handle symbolic links.
1998    
1999     * code/remove.lisp (mcvs-remove): Refer to new function
2000     name, mapping-same-id-p.
2001    
2002 kaz 1.158 2002-08-24 Kaz Kylheku <kaz@ashi.footprints.net>
2003    
2004     * mapping.lisp (mapping-update): Bugfix
2005     in logic which prints clobbering moves. The functions
2006     abstract-to-real-path and second were applied in the wrong order.
2007    
2008 kaz 1.159 2002-08-23 Kaz Kylheku <kaz@ashi.footprints.net>
2009    
2010     * code/clisp-unix.lisp (link-error): New slot, kind. Holds
2011     the string "symbolic" or "hard".
2012     (initialize-instance link-error): Use new slot in constructing
2013     message.
2014     (link): Specify "hard" value for :kind slot of condition.
2015     (symlink): New function.
2016    
2017     * code/clisp-linux.lisp: Likewise.
2018    
2019 kaz 1.156 2002-08-17 Kaz Kylheku <kaz@ashi.footprints.net>
2020    
2021 kaz 1.159 * code/posix.lisp (execute-program): Function removed.
2022     * code/clisp-linux.lisp (execute-program): Function added. Works
2023 kaz 1.157 in terms of CLISP's run-program function rather than the shell
2024     function, thus eliminating the need to build a command string
2025     and escape shell characters.
2026     * clisp-unix.lisp (excecute-program): Likewise.
2027    
2028     2002-08-17 Kaz Kylheku <kaz@ashi.footprints.net>
2029    
2030 kaz 1.159 * code/posix.lisp (edit-file): Function renamed to invoke-file-on,
2031 kaz 1.156 because this name clashes with a standard Common Lisp symbol.
2032 kaz 1.159 * code/types.lisp (types-let-user-edit): Updated to use new name.
2033 kaz 1.156
2034 kaz 1.155 2002-08-05 Kaz Kylheku <kaz@ashi.footprints.net>
2035    
2036     Use getcwd to to implement mcvs-locate.
2037    
2038     * code/unix-bindings/unix.lisp (getcwd): New call out,
2039     invokes impl_getcwd.
2040    
2041     * code/unix-bindings/impl.c (impl_getcwd): New function,
2042     use getcwd() to obtain current working directory, resizing dynamic
2043     buffer if necessary to get the entire path.
2044    
2045     * code/clisp-unix.lisp (getcwd): New wrapper function.
2046    
2047     * code/dirwalk.lisp (go-up): Function removed.
2048    
2049     * code/mapping.lisp (mcvs-locate): Rewritten to obtain
2050     path using getcwd, then try looking for MCVS directory
2051     in successively shorter prefixes of that path.
2052    
2053 kaz 1.152 2002-08-04 Kaz Kylheku <kaz@ashi.footprints.net>
2054    
2055 kaz 1.154 Working back support for CLISP 2.27.
2056    
2057     * code/install.sh: Bogus *null-pointer* hack is no longer added
2058     to the generated mcvs script, since we have our own FFI functions for
2059     doing the test.
2060    
2061     * code/unix-bindings/unix.lisp (unix-funcs:null-pointer-p): New
2062     function, tests a C pointer for null, returns T or NIL.
2063     * code/unix-bindings/impl.c (impl_null_pointer_p): New function,
2064     C implementation of unix-funcs:null-pointer-p.
2065    
2066     * code/clisp-unix.lisp (pointer-null): New macro, uses
2067     ffi:foreign-address-null under CLISP 2.28 or greater, or
2068     unix-funcs:null-pointer-p, under an older CLISP.
2069    
2070     2002-08-04 Kaz Kylheku <kaz@ashi.footprints.net>
2071    
2072 kaz 1.153 Fixes to get clean build from fresh checkout.
2073    
2074     * code/unix-bindings/link.sh: Remove test for presence of unix.c;
2075     this was causing the failure to add the unix module to the module
2076     list, which caused it to generate an empty modules.h file under
2077     code/unix-bindings-linking-set, resulting in a bad build of lisp.run.
2078    
2079     * code/unix-bindings/Makefile: Add ``clean'' target, so we
2080     can do a make clean here.
2081    
2082     2002-08-04 Kaz Kylheku <kaz@ashi.footprints.net>
2083    
2084 kaz 1.152 Retargetting CVS with new system call bindings that are not GNU/Linux
2085     specific.
2086    
2087     * code/install.sh: The way Meta-CVS is installed changes now.
2088     The argument is now a prefix above a bin and lib directory.
2089     Invokes clisp-link to build a new CLISP linking set in the
2090     directory code/unix-bindings-linking-set. The lisp executable
2091     (lisp.run) is copied to $TARGET/lib/clisp/meta-cvs/ and the Meta-CVS
2092     memory image is also copied there under the name lispinit.mem.
2093     The mcvs script is then generated in $TARGET/bin, correctly referring
2094     to these images.
2095    
2096     * code/system.lisp: Choose the new clisp-unix module, if running
2097     under a CLISP image which has the new bindings loaded. Otherwise fall
2098     back on the old clisp-linux, which uses the linuxlibc6 module.
2099    
2100     * code/clisp-unix.lisp: New file, closely based on clisp-linux.lisp,
2101     but targetting new bindings in the unix-funcs package.
2102    
2103     * code/clisp-link: New file. Script borrowed from CLISP distribution,
2104     needed for building CLISP executables with custom modules added.
2105    
2106     * code/linkkit: New directory. This is needed by by clisp-link.
2107     * code/linkkit/modules.c: Borrowed file from CLISP, needed
2108     by clisp-link.
2109     * code/linkkit/clisp.h: Likewise.
2110     * code/linkkit/modules.d: Likewise.
2111    
2112     * code/unix-bindings: New directory. This is a module kit used
2113     by clisp-link to extend the Lisp executable and memory image
2114     with new C functions.
2115    
2116     * code/unix-bindings/link.sh: Definitions of variables needed
2117     by clisp-link.
2118    
2119     * code/unix-bindings/unix.lisp: The glue module which defines the Lisp
2120     interface to the external C functions. Most of the functions call
2121     directly into the system's C library, but a few call to wrapper
2122     functions. Compiling unix.lisp produces a unix.c file which is
2123     compiled and linked into the CLISP executable, and a unix.fas which
2124     contains the Lisp interface bits that are loaded as part of the Lisp
2125     image.
2126    
2127     * code/unix-bindings/Makefile: Rules for compiling the module, invoked by clisp-link.
2128    
2129     * code/unix-bindings/impl.c: Some special functions that help
2130     implement the binding.
2131    
2132 kaz 1.149 2002-07-31 Kaz Kylheku <kaz@ashi.footprints.net>
2133    
2134 kaz 1.150 More changes to syntax of grab command. Now -A must be
2135     specified to do a grab onto main trunk.
2136    
2137     * code/mcvs-main.lisp (*grab-options*): -A option added.
2138    
2139     * code/grab.lisp (mcvs-grab): Test for presence of -A
2140     option. Check that either -A or -r is present, but not both.
2141    
2142     2002-07-31 Kaz Kylheku <kaz@ashi.footprints.net>
2143    
2144 kaz 1.149 Syntax of grab command changed. The branch is no longer
2145     specified as an argument after the module name. Rather,
2146     it is specified using the -r option.
2147    
2148     * code/mcvs-main.lisp (*grab-options*): -r added to list.
2149    
2150     * code/grab.lisp (mcvs-grab, mcvs-grab-wrapper): Argument
2151     syntax change, support -r option.
2152 kaz 1.152
2153     * INSTALL: Instructions change, since building the GNU/Linux libc
2154     into CLISP is no longer required.
2155 kaz 1.149
2156 kaz 1.147 2002-07-27 Kaz Kylheku <kaz@ashi.footprints.net>
2157    
2158 kaz 1.148 * docs/meta-cvs.latex: Rewrote most of Introduction.
2159    
2160     2002-07-27 Kaz Kylheku <kaz@ashi.footprints.net>
2161    
2162 kaz 1.147 New scripts for building LaTeX document. These do the right thing
2163     to minimize the number of times latex is run. Make proved useless.
2164    
2165     * docs/generate.sh: New file.
2166     * docs/cleanup.sh: New file.
2167    
2168 kaz 1.146 2002-07-20 Kaz Kylheku <kaz@ashi.footprints.net>
2169    
2170     * INSTALL: Revising CLISP installation instructions to the
2171     easier method using --build.
2172    
2173 kaz 1.145 2002-07-18 Kaz Kylheku <kaz@ashi.footprints.net>
2174    
2175     * README: Renaming file to QUICK-GUIDE.
2176    
2177     2002-07-17 Kaz Kylheku <kaz@ashi.footprints.net>
2178 kaz 1.142
2179 kaz 1.144 * code/generic.lisp (mcvs-generic): Support new keyword,
2180     :no-fix-empty-file-list. Specifies that if no files are passed,
2181     and the --metaonly option is not present, the CVS command is to be
2182     executed without any file arguments.
2183     (mcvs-commit-wrapper): Specify :no-fix-empty-file-list t when
2184     calling mcvs-generic. Thus commit now has the behavior that
2185     when it is passed no file arguments, it does a true global commit.
2186    
2187     2002-07-16 Kaz Kylheku <kaz@ashi.footprints.net>
2188    
2189 kaz 1.143 * code/restore.lisp (mcvs-restore): Work properly with
2190     partial sandboxes; that is, move things to lost+found
2191     directory at the top of the partial sandbox, rather than
2192     the abstract root.
2193    
2194     2002-07-16 Kaz Kylheku <kaz@ashi.footprints.net>
2195    
2196 kaz 1.142 * code/mcvs-main.lisp (usage): Updated to describe restore
2197     command.
2198    
2199 kaz 1.139 2002-07-14 Kaz Kylheku <kaz@ashi.footprints.net>
2200    
2201 kaz 1.141 * code/grab.lisp (mcvs-grab): If there are only added files
2202     or only removed files, don't bother scanning any files,
2203     since there are no moves to compute.
2204    
2205     2002-07-14 Kaz Kylheku <kaz@ashi.footprints.net>
2206    
2207 kaz 1.140 * code/find-bind.lisp (vector-bind): New macro, binds symbols
2208 kaz 1.139 to elements of a vector.
2209     (find-bind-extract-vals): Rewrite using vectors. Fixes
2210     a bug: the old version was not handling duplicate keys
2211     properly.
2212     (find-bind): Integrate with new find-bind-extract-vals.
2213    
2214 kaz 1.138 2002-07-11 Kaz Kylheku <kaz@ashi.footprints.net>
2215    
2216     Directory structure rearrangement; source files are moved
2217     under code/ subdirectory. A documentation directory is added.
2218    
2219 kaz 1.133 2002-07-07 Kaz Kylheku <kaz@ashi.footprints.net>
2220    
2221 kaz 1.137 * move.lisp (move-guts): When moving multiple sources to
2222     a target directory, provide a restart to skip a bad source.
2223    
2224     2002-07-07 Kaz Kylheku <kaz@ashi.footprints.net>
2225    
2226 kaz 1.136 * seqfuncs.lisp (intersection-difference): Support a new
2227     keyword parameter :squash-nil.
2228    
2229     * mapping.lisp (mapping-difference): Filter non-moved pairs
2230     directly in intersection-difference call using :squash-nil,
2231     eliminating the need to do a second remove-if pass.
2232    
2233     2002-07-07 Kaz Kylheku <kaz@ashi.footprints.net>
2234    
2235 kaz 1.135 * mapping.lisp (mapping-difference): Rewrite using
2236     intersection-difference.
2237    
2238     2002-07-07 Kaz Kylheku <kaz@ashi.footprints.net>
2239    
2240 kaz 1.134 * grab.lisp (added-removed): Function removed.
2241     (mcvs-grab): Use new intersection-difference function
2242     instead of added-removed.
2243    
2244     2002-07-07 Kaz Kylheku <kaz@ashi.footprints.net>
2245    
2246 kaz 1.133 * seqfuncs.lisp (intersection-difference): New function.
2247    
2248 kaz 1.131 2002-07-06 Kaz Kylheku <kaz@ashi.footprints.net>
2249    
2250 kaz 1.132 * grab.lisp (mcvs-grab): Upgraded to work with partial sandbox.
2251     Extra parameter added to specify subdirectory. File analysis
2252     is only done on visible files.
2253     (mcvs-grab-wrapper): Take optional parameter to specify
2254     subdirectory.
2255    
2256     2002-07-06 Kaz Kylheku <kaz@ashi.footprints.net>
2257    
2258     * mapping.lisp (mapping-update): If no-delete-removed is
2259     true, nevertheless print the ``* removing...'' messages
2260     to show that removal from the mapping is going on.
2261    
2262     2002-07-06 Kaz Kylheku <kaz@ashi.footprints.net>
2263    
2264     * remap.lisp (mcvs-remap): Remap only the visible sandbox,
2265     and combine resulting map with the invisible portion.
2266    
2267     2002-07-06 Kaz Kylheku <kaz@ashi.footprints.net>
2268    
2269     * remove.lisp (mcvs-remove): Added path conversions to support
2270     partial sandboxes.
2271    
2272     2002-07-06 Kaz Kylheku <kaz@ashi.footprints.net>
2273    
2274     * generic.lisp (mcvs-generic): Added path conversions to support
2275     partial sandboxes.
2276    
2277     2002-07-06 Kaz Kylheku <kaz@ashi.footprints.net>
2278    
2279     * add.lisp (mcvs-add): Added path conversions to support
2280     partial sandboxes.
2281    
2282     2002-07-06 Kaz Kylheku <kaz@ashi.footprints.net>
2283    
2284 kaz 1.131 * grab.lisp (mcvs-grab): Bugfix: determination of common words
2285     was failing on small file sets because the min function was
2286     used instead of the max to compute the threshold.
2287 kaz 1.132
2288     2002-07-05 Kaz Kylheku <kaz@ashi.footprints.net>
2289    
2290     * move.lisp (source-check): Use real source path for checking
2291     against MCVS/ area.
2292     (mcvs-move): Ditto for destination path.
2293    
2294     2002-07-05 Kaz Kylheku <kaz@ashi.footprints.net>
2295    
2296     * mapping.lisp (mapping-update): Make sure only those files
2297     are processed which are visible in the sandbox. If a file
2298     is moved out of or into visibility, this is indicated in the
2299     diagnostic output.
2300    
2301     2002-07-05 Kaz Kylheku <kaz@ashi.footprints.net>
2302    
2303     * mapping.lisp (real-path-exists): Use path-prefix-equal, because
2304     that handles all the tricky cases.
2305     (abstract-to-real-path): Handle the case when abstract path
2306     is the same as the path prefix, with or without the trailing
2307     slash.
2308    
2309     2002-07-05 Kaz Kylheku <kaz@ashi.footprints.net>
2310    
2311     Start of experimental ``partial sandbox'' work.
2312    
2313     * mapping.lisp (*mcvs-displaced-name*, *mcvs-displaced*): New
2314     constants, hold name of administrative file MCVS/DISPLACED which stores
2315     the displaced path prefix.
2316     (*displaced-path-prefix*): New special variable, holds displaced
2317     path prefix read from MCVS/DISPLACED.
2318     (*displaced-path-length*): New special variable, holds length
2319     of string stored in *displaced-path-prefix*.
2320     (real-path-exists, abstract-to-real-path, real-to-abstract-path):
2321     New functions for mapping between actual sandbox path, and
2322     the abstract sandbox path stored in the mapping.
2323     (in-sandbox-root-dir): Macro modified to read *mcvs-displaced*
2324     administrative file, and set up the new special variables.
2325     (mapping-synchronize): Only operate on files that are present
2326     in the sandbox; i.e. that have real paths corresponding to their
2327     abstract paths. Convert to the real path when calling lower
2328     level file manipulation functions.
2329     (mapping-update): Likewise, but this conversion is not complete.
2330     (displaced-path-read, displaced-path-write): New functions for
2331     reading and writing MCVS/DISPLACED.
2332    
2333     * checkout.lisp (mcvs-checkout): One extra optional parameter.
2334     Specifies the subdirectory for executing a partial checkout.
2335     (mcvs-checkout-wrapper): Parse out optional parameter.
2336    
2337     * grab.lisp (mcvs-grab): For now, when calling mcvs-checkout,
2338     specify the new parameter as nil. Eventually, grab will work
2339     over partial checkouts.
2340    
2341     * move.lisp: Upgraded to work with partial sandboxes.
2342     (source-check): Convert source parameter to real path for
2343     existence check.
2344     (move-guts): Convert destination parameter to real path before
2345     invoking (stat ...) on it.
2346     (mcvs-move): Map all path arguments to abstract paths.
2347 kaz 1.131
2348 kaz 1.130 2002-07-04 Kaz Kylheku <kaz@ashi.footprints.net>
2349    
2350     * find-bind.lisp (find-bind-extract-vals): Rewrite for
2351     efficiency. No impact on Meta-CVS, just done for the sake of improving
2352     the quality of this highly reusable code. There is specialized
2353     code now depending on whether the input sequence is a list or
2354     a vector. A single pass is made over the sequence, with multiple
2355     passes over the search values. The sequence could be large,
2356     whereas the list of search values is typically going to be small.
2357     (find-bind): Modified to reflect slight interface change
2358     in find-bind-extract-vals.
2359    
2360 kaz 1.129 2002-07-03 Kaz Kylheku <kaz@ashi.footprints.net>
2361    
2362     * mcvs-main.lisp (*usage*): Describe --meta and --metaonly options.
2363    
2364 kaz 1.127 2002-07-02 Kaz Kylheku <kaz@ashi.footprints.net>
2365    
2366 kaz 1.128 * purge.lisp (mcvs-purge): Factor out code for computing
2367     deleted files.
2368    
2369     * mapping.lisp (mapping-removed-files): New function, contains
2370     code factored from mcvs-purge.
2371    
2372     * restore.lisp: New file.
2373     (mcvs-restore, mcvs-restore-wrapper): New functions.
2374    
2375     2002-07-02 Kaz Kylheku <kaz@ashi.footprints.net>
2376    
2377 kaz 1.127 * checkout.lisp (mcvs-checkout): Don't delete the MCVS directory
2378     of an existing checkout.
2379    
2380 kaz 1.125 2002-07-01 Kaz Kylheku <kaz@ashi.footprints.net>
2381    
2382 kaz 1.126 Adding purge command.
2383    
2384     * mcvs-main.lisp (*purge-options*): New constant.
2385     (*mcvs-command-table*): New entry.
2386     (*usage*): Update.
2387    
2388     * purge.lisp: New file.
2389     (mcvs-purge, mcvs-purge-wrapper): New functions.
2390    
2391     2002-07-01 Kaz Kylheku <kaz@ashi.footprints.net>
2392    
2393 kaz 1.125 Grab no longer synchronizes to recreate deleted files immediately
2394     before blowing them away.
2395    
2396     * grab.lisp (mcvs-grab): Specify :no-sync t when calling mcvs-remove.
2397    
2398     * remove.lisp (mcvs-remove): Support new no-sync keyword. This tells
2399     mcvs-remove that the files being removed from the mapping,
2400     don't exist in the sandbox. So it's not necessary to call
2401     mapping-synchronize, and mapping-update can be told via
2402     :no-delete-removed t not to try to remove deleted files.
2403    
2404     * mapping.lisp (mapping-update): New no-delete-removed keyword
2405     parameter.
2406    
2407 kaz 1.121 2002-06-29 Kaz Kylheku <kaz@ashi.footprints.net>
2408 kaz 1.120
2409 kaz 1.123 * create.lisp (mcvs-create): Take out vendor branch parameter,
2410     use "Created-by-Meta-CVS" as the vendor tag.
2411     (mcvs-create-wrapper): Take out vendor branch parameter.
2412    
2413     2002-06-29 Kaz Kylheku <kaz@ashi.footprints.net>
2414    
2415 kaz 1.122 * generic.lisp (mcvs-tag-wrapper): This one needs to include
2416     meta files by default.
2417    
2418     2002-06-29 Kaz Kylheku <kaz@ashi.footprints.net>
2419    
2420 kaz 1.120 Moving toward sane, user-friendly handling of meta-files.
2421     Two new options are added --meta and --metaonly.
2422     All reporting commands---diff, log, annotate---default to
2423     not including the meta files. The update command remains special.
2424     It does not include meta files if given filename arguments.
2425     If invoked with no arguments, it does a global CVS up.
2426     The commit command defaults to including the meta files.
2427     The three options simply override default behavior.
2428    
2429 kaz 1.124 * options.lisp (*nometa-option*): Eliminated useless docstring.
2430 kaz 1.120 (*meta-option*): New variable.
2431     (*nometa-option*): New variable.
2432     (filter-global-options): Clean rewrite using find-bind.
2433    
2434     * generic.lisp (mcvs-generic): New keyword parameters
2435     default-include-meta-files, need-update-after. Implements new logic
2436     related to the new options. Performs (mapping-update) if
2437     need-update-after is true and metafiles were subject to cvs update.
2438     (mcvs-commit-wrapper): Calls mcvs-generic with
2439     :default-include-meta-files t.
2440    
2441     * update.lisp (mcvs-update): No longer overrides the *nometa-option*
2442     special variable. Passes :need-update-after t to mcvs-generic.
2443    
2444     * mcvs-main.lisp (*cvs-options*): New options entered into list.
2445    
2446 kaz 1.121 2002-06-28 Kaz Kylheku <kaz@ashi.footprints.net>
2447 kaz 1.114
2448 kaz 1.119 * memoize.lisp (memoize-expander): Use ordinary hash for memoizing
2449     monadic functions.
2450    
2451 kaz 1.121 2002-06-28 Kaz Kylheku <kaz@ashi.footprints.net>
2452 kaz 1.119
2453 kaz 1.117 Word comparisons are case-insensitive in mcvs grab now.
2454     Also, common words are determined and eliminated from the correlation.
2455     Common words are those that appear in at least 5 of the
2456     added or removed files, or 20% of them, whichever is greater.
2457    
2458     Noticed some unnecessary use of string-lessp on F-file names in
2459     mapping.lisp.
2460    
2461     * grab.lisp (read-word-hash): Use #'equalp test for case-insensitive
2462     string comparisons.
2463     (added-removed): Use string< instead of string-lessp for comparing
2464     paths.
2465     (determine-common-words, eliminate-common-words): New functions.
2466 kaz 1.118 (move-candidates): Acceptance threshold reduced to 30%, since
2467 kaz 1.117 elimination of common words reduces the similarity correlation.
2468     (mcvs-grab): Use string< instead of string-lessp when sorting paths.
2469     Do the common words computation.
2470    
2471     * mapping.lisp (mapping-dupe-check, mapping-write,
2472     mapping-difference): Use string< instead of string-lessp.
2473    
2474 kaz 1.121 2002-06-28 Kaz Kylheku <kaz@ashi.footprints.net>
2475 kaz 1.117
2476 kaz 1.116 * memoize.lisp (factor-memo-labels): New function, rips apart
2477     functions generated by memoize-expander, in order to factor
2478     out the multi-hash defining let blocks.
2479     (memoized-labels): Interface corrected. Also, use new function to
2480     generate a labels block that allows for mutually recursive memoized
2481     functions which preserve hash contents across arbitrarily mutually
2482     recursive calls. This is done by enclosing the functions in one big
2483     let block which binds all the hashes.
2484    
2485 kaz 1.121 2002-06-28 Kaz Kylheku <kaz@ashi.footprints.net>
2486 kaz 1.116
2487 kaz 1.115 * seqfuncs.lisp (lcs-list): Specify #'eq test for memoization
2488     parameters.
2489    
2490 kaz 1.121 2002-06-28 Kaz Kylheku <kaz@ashi.footprints.net>
2491 kaz 1.115
2492 kaz 1.114 Adding some cool code: a multi-hash datatype which implements
2493     multi-dimensional sparse arrays using a tree of hash tables,
2494     and a function memoizer which uses multi hash to index on
2495     function arguments.
2496    
2497     * multi-hash.lisp (multi-hash): New class.
2498     (initialize-instance): New method on multi-hash.
2499     (multi-hash-common-code): New macro.
2500     (get-multi-hash, set-multi-hash): New functions.
2501    
2502     * memoize.lisp (define-memoized-function,
2503     memoized-labels): New macros.
2504     (remove-key-aux-rest strip-lambda-list, extract-tests,
2505     remove-tests, memoize-expander): New functions.
2506    
2507     * seqfuncs.lisp (lcs-list): Function is now correctly
2508     memoized using define-memoized-function.
2509    
2510 kaz 1.113 2002-06-26 Kaz Kylheku <kaz@ashi.footprints.net>
2511    
2512     * grab.lisp (read-word-hash): Memory use optimizations: use smaller
2513     initial size for tokens; re-use the same token object when the
2514     hash already contains a duplicate.
2515     (correlate): Renamed to correlate-word-hashes.
2516     (correlate-paths): New function; computes a confidence-reducing
2517     factor based on the differences between two paths.
2518     (move-candidates): Use correlate-paths to lower the confidence
2519     for distant moves. This could help sort out ambiguities when
2520     projects contain very similar or duplicate files which are subject
2521     to parallel moves.
2522    
2523     * seqfuncs.lisp (lcs-list, lcs-vector,
2524     longest-common-subsequence): New functions.
2525    
2526 kaz 1.112 2002-06-25 Kaz Kylheku <kaz@ashi.footprints.net>
2527    
2528     New feature: grab command. Takes snapshot of code and imports
2529     it to a branch, trying to determine which of the added and
2530     removed files are actually moves.
2531    
2532     * grab.lisp: New file.
2533     (read-word-hash, word-hash-file, correlate, added-removed,
2534     move-candidates, mcvs-grab, mcvs-grab-wrapper): New functions.
2535    
2536     * mcvs-main.lisp (*grab-options*): New constant.
2537     (*mcvs-command-table*): New entry.
2538     (*usage*): New text.
2539    
2540     * checkout.lisp (mcvs-checkout): Write out MAP-LOCAL even
2541     if :no-generate t is specified.
2542    
2543 kaz 1.110 2002-06-24 Kaz Kylheku <kaz@ashi.footprints.net>
2544    
2545 kaz 1.111 * checkout.lisp (mcvs-checkout): New key parameter, no-generate.
2546     Tells the checkout function not to unpack the MCVS directory.
2547     This will be useful when mcvs-checkout is used as a subfunction
2548     of the new grab command. Failed CVS call is now turned into
2549     an error. The MCVS subdirectory is *always* deleted, even if the
2550     checkout did not create the checkout directory.
2551    
2552     2002-06-24 Kaz Kylheku <kaz@ashi.footprints.net>
2553    
2554 kaz 1.110 * dirwalk.lisp (dirwalk-fi): Bugfix: top call was not
2555     passing down keyword parameters to recursive call.
2556    
2557 kaz 1.107 2002-06-23 Kaz Kylheku <kaz@ashi.footprints.net>
2558    
2559 kaz 1.109 * posix.lisp (canonicalize-path): Use concatenate-string
2560     instead of format.
2561    
2562     2002-06-23 Kaz Kylheku <kaz@ashi.footprints.net>
2563    
2564 kaz 1.108 * posix.lisp (parse-posix-namestring): Clean rewrite.
2565    
2566     2002-06-23 Kaz Kylheku <kaz@ashi.footprints.net>
2567    
2568 kaz 1.107 The ``import'' command is renamed to ``create''.
2569    
2570 kaz 1.262 * mcvs-main.lisp (*create-options*): Renamed to *import-options*.
2571 kaz 1.107 (*mcvs-command-table*): Updated.
2572     (*usage*): Updated.
2573    
2574     * import.lisp: File renamed to create.lisp.
2575     (mcvs-import): Renamed to mcvs-create; some arguments renamed.
2576     (mcvs-import-wrapper): Renamed to mcvs-create-wrapper.
2577    
2578     * README: Updated.
2579    
2580 kaz 1.104 2002-06-22 Kaz Kylheku <kaz@ashi.footprints.net>
2581    
2582 kaz 1.106 * split.lisp (split-fields): Optimized to extract tokens directly
2583     from the input string using subseq rather than construct them
2584     character by character.
2585 kaz 1.105
2586     2002-06-22 Kaz Kylheku <kaz@ashi.footprints.net>
2587    
2588 kaz 1.104 * find-bind.lisp (find-bind): Use #'values instead of #'(lambda (x) x).
2589    
2590 kaz 1.102 2002-06-21 Kaz Kylheku <kaz@ashi.footprints.net>
2591    
2592 kaz 1.103 * clisp-linux.sh (:clisp-old): Added to *features*
2593     for CLISP 2.28 or higher.
2594     (*null-pointer*): Only defined when :clisp-old is present.
2595     (pointer-null): Use new ffi:foreign-pointer-null if :clisp-old
2596     feature is not present.
2597    
2598     * install.sh: Don't do *null-pointer* workaround hack
2599     unless :clisp-old feature is present in the memory image.
2600    
2601     2002-06-21 Kaz Kylheku <kaz@ashi.footprints.net>
2602    
2603 kaz 1.102 * types.lisp (types-make-cvs-adds): Serious bugfix. Forgot
2604     to strip MCVS/ prefix from those F- files which don't match
2605     any type entries. This caused cvs add to fail for unsuffixed
2606     files.
2607    
2608 kaz 1.101 2002-06-08 Kaz Kylheku <kaz@ashi.footprints.net>
2609    
2610     * types.lisp (types-to-import-wrapper-args): Don't use backquote
2611     template to generate a list that will be destructively catenated
2612     by mapcan.
2613    
2614 kaz 1.100 2002-05-22 Kaz Kylheku <kaz@ashi.footprints.net>
2615    
2616     * checkout.lisp (mcvs-checkout): If a checkout directory is
2617     created and then the CVS checkout fails, the directory is
2618     then removed.
2619    
2620 kaz 1.97 2002-05-20 Kaz Kylheku <kaz@ashi.footprints.net>
2621    
2622 kaz 1.100 * find-bind.lisp (find-bind-extract-vals, find-bind): Process default
2623 kaz 1.99 values in find-bind-extract-vals, instead of in the expansion of
2624     find-bind, thereby reducing some macro bloat.
2625    
2626     2002-05-20 Kaz Kylheku <kaz@ashi.footprints.net>
2627    
2628 kaz 1.98 * remap.lisp (mcvs-remap): Loads MAP as well as MAP-LOCAL.
2629     If it the mappings differ, an error is signaled. The user can choose
2630     to ignore the error, in which case MAP is clobbered.
2631    
2632     2002-05-20 Kaz Kylheku <kaz@ashi.footprints.net>
2633    
2634 kaz 1.97 Adding mcvs remap command.
2635    
2636     * dirwalk.lisp (dirwalk-fi, dirwalk, for-each-file-info): Default
2637     behavior is now preorder (visit directory before its entries).
2638     A keyword is provided to select the old postorder behavior.
2639     A catch is provided in dirwalk-fi that allows the caller to
2640     skip processing the currently traversed directory. The for-each-*
2641     macros provide a local function called (skip) to do this.
2642     (delete-recursive): This function depends on postorder behavior
2643     in for-each-file-info, so it explicitly selects it now.
2644    
2645     * mcvs.lisp (*remap-options*): New constant.
2646     (*mcvs-command-table*): Add entry for new function.
2647     (*usage*): Describes new function.
2648    
2649     * remap.lisp: New file.
2650     (mcvs-remap, mcvs-remap-wrapper): New functions.
2651    
2652 kaz 1.96 2002-05-15 Kaz Kylheku <kaz@ashi.footprints.net>
2653    
2654     * sync.lisp (synchronize-files): Signal an error when the two files
2655     to be synchronized have the same time stamp. Provide two restarts
2656     for doing the synchronization either way.
2657    
2658 kaz 1.95 2002-05-06 Kaz Kylheku <kaz@ashi.footprints.net>
2659    
2660     * mapping.lisp (in-sandbox-root-dir): Fix symbol macro
2661     sandbox-down-path; it was referring to the (quote #:DOWNPATH-NNN)
2662     rather than #:DOWNPATH-NNN.
2663    
2664 kaz 1.93 2002-05-04 Kaz Kylheku <kaz@ashi.footprints.net>
2665    
2666 kaz 1.94 * import.lisp (mcvs-import): Specify -I ! argument to cvs import
2667     so that it does not ignore any F- files.
2668    
2669     2002-05-04 Kaz Kylheku <kaz@ashi.footprints.net>
2670    
2671 kaz 1.93 * mapping.lisp (mapping-update): Provide restart that allows
2672     user to ignore file removal error.
2673    
2674 kaz 1.92 2002-04-19 Kaz Kylheku <kaz@ashi.footprints.net>
2675    
2676     Porting to CMUCL.
2677    
2678     * system.lisp: Conditionally load new module cmucl-unix.
2679    
2680     * mapping.lisp (mapping-dupe-check, mapping-write,
2681     mapping-difference): Fixes related to sort function; we were
2682     relying on CLISP's preservation of the cons cell order.
2683    
2684     * cmucl-unix.lisp: New file.
2685    
2686 kaz 1.89 2002-04-17 Kaz Kylheku <kaz@ashi.footprints.net>
2687    
2688 kaz 1.90 * checkout.lisp (mcvs-checkout): Allow -d to specify current
2689     directory as the checkout directory. Do not complain if the
2690 kaz 1.91 target directory exists, just try to use it anyway,
2691     unless it is the root of an existing Meta-CVS sandbox. Use
2692 kaz 1.90 the mapping-update function to update the sandbox.
2693     These changes allow a Meta-CVS sandbox to blend with an existing
2694     directory structure, a useful feature.
2695    
2696     2002-04-17 Kaz Kylheku <kaz@ashi.footprints.net>
2697    
2698 kaz 1.89 * generic.lisp (mcvs-generic): Change how empty file argument list
2699     is handled. Rather than rewriting it to '(".") we do a proper
2700     map-prefix-lookup. Synchronizing and invoking CVS is elided
2701     if the resulting list of files to process is empty and the --nometa
2702     option is specified.
2703    
2704 kaz 1.87 2002-04-16 Kaz Kylheku <kaz@ashi.footprints.net>
2705    
2706 kaz 1.88 * branch.lisp (parse-sticky): New function.
2707     (read-cvs-entries): New function.
2708     (same-tag-check): New function.
2709     (what-tag-are-we-on): Renamed to what-are-we-sticky-to. Calls
2710     parse-sticky to return structured tag.
2711     (mcvs-merge): Make use of structured tags.
2712     (mcvs-list-branches): Make use of structured tags. Indicate
2713     when sandbox is inconsistently sticky.
2714    
2715     2002-04-16 Kaz Kylheku <kaz@ashi.footprints.net>
2716    
2717 kaz 1.87 * remove.lisp (mcvs-remove): Corrected careless bracketing
2718     introduced on 2002-03-15 that rendered this function ineffective.
2719    
2720 kaz 1.85 2002-04-04 Kaz Kylheku <kaz@ashi.footprints.net>
2721 kaz 1.82
2722 kaz 1.86 Absolute paths resolved against sandbox root.
2723    
2724     * posix.lisp (path-absolute-p): New function. Predicate to
2725     test whether a path is absolute.
2726    
2727     * mapping.lisp (in-sandbox-root-dir): sandbox-translate-paths
2728     function detects absolute path, and treats it as relative to
2729     sandbox root.
2730    
2731     2002-04-04 Kaz Kylheku <kaz@ashi.footprints.net>
2732    
2733 kaz 1.84 New switch command added, plus sticky tag related
2734     bugfixes and enhancement of mcvs list-branches.
2735    
2736     mcvs-main.lisp (*switch-options*): New constant.
2737     (*mcvs-command-table*): New entries.
2738     (*usage*): New help text.
2739    
2740     branch.lisp (what-branch-are-we-on): Function renamed to
2741     what-tag-are-we-on. Tests the first letter which is T or N; if
2742     it is not T, then it's not a branch tag. If there is a tag,
2743     it returns two values; the second value is NIL if it is not
2744     a branch tag, T otherwise.
2745     (mcvs-merge): Modified to use what-tag-are-we-on.
2746     (mcvs-list-branches): Show additional information about the
2747     current sticky tag.
2748     (mcvs-merge-wrapper): Fix wrong parenthesization introduced
2749     earlier today.
2750     (mcvs-switch-wrapper): New function.
2751    
2752 kaz 1.85 2002-04-04 Kaz Kylheku <kaz@ashi.footprints.net>
2753 kaz 1.84
2754 kaz 1.83 * branch.lisp (branch-tag-check): Check reserved symbol HEAD.
2755    
2756 kaz 1.85 2002-04-04 Kaz Kylheku <kaz@ashi.footprints.net>
2757 kaz 1.83
2758 kaz 1.82 New command to list branches.
2759    
2760     * mcvs-main.lisp (*list-branches-options*): New constant.
2761     (*mcvs-command-table*): Entries for new command added.
2762     (*usage*): Help text added.
2763    
2764     * branch.lisp (mcvs-list-branches,
2765     mcvs-list-branches-wrapper): New functions.
2766    
2767 kaz 1.80 2002-04-03 Kaz Kylheku <kaz@ashi.footprints.net>
2768    
2769 kaz 1.81 * branch.lisp (where-is-the-repository): New function.
2770     (cvs-make-or-advance-tag): Pass down CVSROOT to cvs rtag using
2771     the -d global option.
2772    
2773     2002-04-03 Kaz Kylheku <kaz@ashi.footprints.net>
2774    
2775 kaz 1.80 * branch.lisp (what-module-is-this): New function.
2776     (cvs-make-or-advance-tag): Use rtag rather than tag for tagging
2777     the branch being merged. This fixes the failure to merge added files.
2778     (mcvs-merge): Use mcvs-update rather than directly using cvs.
2779    
2780 kaz 1.78 2002-04-02 Kaz Kylheku <kaz@ashi.footprints.net>
2781    
2782 kaz 1.79 Implemented remerge command; redo a merge without moving
2783     around any tags.
2784    
2785     * branch.lisp (mcvs-merge): New keyword parameter remerge-p
2786     to indicate that a re-merge should be done, plus logic for
2787     doing so.
2788     (mcvs-remerge-wrapper): New function.
2789    
2790     * mcvs-main.lisp (*remerge-options*): New constant.
2791     (*mcvs-command-table*): New entry for remerge command.
2792    
2793     2002-04-02 Kaz Kylheku <kaz@ashi.footprints.net>
2794    
2795 kaz 1.78 First cut at implementing more automated branching and merging.
2796    
2797     * mcvs-main.lisp (*branch-options*, *merge-options*): New constants.
2798     (*mcvs-command-table*): New entries for branch and merge commands.
2799     (*usage*): New help text.
2800    
2801     * branch.lisp: New file.
2802     (*branch-char*): New constant.
2803     (tags-from-cvs-log, what-branch-are-we-on, branch-tag-check,
2804     mcvs-branch, mcvs-branch-wrapper, cvs-make-or-advance-tag, mcvs-merge,
2805     mcvs-merge-wrapper): New functions.
2806    
2807 kaz 1.87 2002-04-01 Kaz Kylheku <kaz@ashi.footprints.net>
2808 kaz 1.77
2809     checkout.lisp (mcvs-checkout): Emit informational message
2810     when checkout completes, because it's not obvious what directory
2811     was just created.
2812    
2813 kaz 1.76 2002-02-38 Kaz Kylheku <kaz@ashi.footprints.net>
2814    
2815     Error checking added to mcvs move: verifies that all
2816     sources exist and are known to Meta-CVS.
2817    
2818     * move.lisp (source-check): New function.
2819     (simple-rename, simple-move-to-dir): Use new function.
2820    
2821 kaz 1.74 2002-03-20 Kaz Kylheku <kaz@ashi.footprints.net>
2822    
2823 kaz 1.75 * rcsparse.lisp: File renamed to rcs-utils.lisp.
2824     (rcs-delta): New slot, delta-hash.
2825     (rcs-make-delta-hash): New function.
2826     (rcs-parse): Calls rcs-make-delta-hash to set up new slot.
2827    
2828     * convert.lisp: require changed to match file rename.
2829    
2830     2002-03-20 Kaz Kylheku <kaz@ashi.footprints.net>
2831    
2832 kaz 1.74 Some new macros for slot access.
2833    
2834     * slot-refs.lisp: New file.
2835     (with-slot-refs): New macro.
2836     (with-multi-slot-refs): New macro.
2837    
2838     * rcsparse.lisp (rcs-parse-newphrases, rcs-parse-admin,
2839     rcs-parse-delta): Replace uses
2840     of symbol-macrolet by with-slot-refs and with-multi-slot-refs.
2841    
2842 kaz 1.73 2002-03-19 Kaz Kylheku <kaz@ashi.footprints.net>
2843    
2844     Adding delta parsing to RCS parser.
2845    
2846     * rcsparse.lisp (rcs-delta): New struct.
2847     (rcs-file): New slot, deltas.
2848     (rcs-parse-newphrases): New function, factors out parsing of
2849     ``newphrases'' syntactic element out of rcs-parse-admin.
2850     (rcs-parse-admin): Use rcs-parse-newphrases.
2851     (rcs-parse-delta, rcs-parse-deltas): New functions.
2852     (rcs-parse): Parse both admin and deltas; store deltas in new
2853     rcs-file slot.
2854    
2855 kaz 1.72 2002-03-18 Kaz Kylheku <kaz@ashi.footprints.net>
2856    
2857     * posix.lisp (parse-posix-namestring): New function. Converts POSIX
2858     path to CL Path object.
2859 kaz 1.73
2860     * rcsparse.lisp: New file, implements RCS version file parser.
2861 kaz 1.72 (rcs-admin, rcs-file, rcs-token, rcs-token-stream): New structs.
2862     (rcs-peek-token, rcs-read-token): New generic functions.
2863     (rcs-extract-id-sym-or-num, rcs-extract-string,
2864     rcs-match-optional, rcs-match-token, rcs-parse, rcs-parse-admin,
2865     rcs-special-p): New functions.
2866    
2867     * convert.lisp (classify-tags): Work with association list rather
2868     than raw strings.
2869     (mcvs-convert): Use rcs-parse to extract tags. Fix call to
2870     mapping-generate name. Use parse-posix-namestring when opening
2871     version file. Generate informative chatter.
2872    
2873 kaz 1.69 2002-03-15 Kaz Kylheku <kaz@ashi.footprints.net>
2874    
2875 kaz 1.71 * remove.lisp (mcvs-remove): More detailed error checking.
2876     Checks for remove attempts against MCVS/ area, removes of local
2877     files not versioned under Meta-CVS, and nonexistent files.
2878    
2879     2002-03-15 Kaz Kylheku <kaz@ashi.footprints.net>
2880    
2881 kaz 1.70 * add.lisp (mcvs-add): Error message changed to tell user to use
2882     -R to add directory.
2883    
2884     * remove.lisp (mcvs-remove): New generalized boolean parameter
2885     indicates to do a recursive remove. This is controlled by the
2886     -R option which already exists. Behavior changed to not act
2887     on directories unless recursion is explicitly requested.
2888     (mcvs-remove-wrapper): Extract "R" option, pass down new boolean
2889     to mcvs-remove.
2890    
2891     2002-03-15 Kaz Kylheku <kaz@ashi.footprints.net>
2892    
2893 kaz 1.69 * remove.lisp (mcvs-remove-wrapper): Remove bogus error check.
2894    
2895 kaz 1.66 2002-03-14 Kaz Kylheku <kaz@ashi.footprints.net>
2896    
2897 kaz 1.68 * checkout.lisp (mcvs-checkout): Bugfix: must use checkout-dir, not
2898     module, when testing whether directory exists or was created properly.
2899    
2900     2002-03-14 Kaz Kylheku <kaz@ashi.footprints.net>
2901    
2902 kaz 1.67 Update takes file arguments now.
2903    
2904     * update.lisp (mcvs-update): If filename arguments are given, then
2905     just call mcvs-generic to do the work, but suppress the operation on
2906     meta files. If no filename arguments are given, then update everything.
2907     If the -p option is present, no synchronization is needed, before or
2908     after.
2909     (mcvs-update-wrapper): Pass command arguments down to mcvs-update.
2910    
2911     * mcvs-main.lisp (*update-options*): Add "p" option.
2912    
2913     * generic.lisp (mcvs-generic): New keyword parameter need-sync-after,
2914     a generalized boolean which can tell the function to do a
2915     mapping-synchronize after executing the CVS command.
2916    
2917     2002-03-14 Kaz Kylheku <kaz@ashi.footprints.net>
2918    
2919 kaz 1.66 * filt.lisp (filt-select-map): Do allow a date and revision to be
2920     specified; the revision could be a branch tag.
2921    
2922 kaz 1.62 2002-03-13 Kaz Kylheku <kaz@ashi.footprints.net>
2923    
2924 kaz 1.65 * mapping.lisp (malformed-map): New function.
2925     (mapping-dupe-check): Perform extra error checks when reading
2926     mapping, and turn them into a condition with a ``nice'' error message.
2927    
2928     2002-03-13 Kaz Kylheku <kaz@ashi.footprints.net>
2929    
2930 kaz 1.64 * mcvs-filt.lisp (filt-select-map): Handle error gracefully
2931     when reading map. It's easy to give CVS is a nonexistent tag.
2932    
2933     2002-03-13 Kaz Kylheku <kaz@ashi.footprints.net>
2934    
2935 kaz 1.63 The filt command takes arguments to select alternate revision
2936     of map.
2937    
2938     * mcvs-main.lisp (*filt-options*): New constant.
2939     (*mcvs-command-table*): Updated with new options.
2940     (mcvs-debug-shell): Restart name changed during debugging of filt
2941     changes.
2942    
2943     * filt.lisp (filt-select-map): New function. Loads either the
2944     local mapping, or retrieves an alternate mapping from CVS based
2945     on command line options.
2946     (mcvs-filt): Use filt-select-map rather than mapping-read.
2947    
2948     2002-03-13 Kaz Kylheku <kaz@ashi.footprints.net>
2949    
2950 kaz 1.62 * generic.lisp (mcvs-generic): Add .cvsignore to the list of
2951     metafiles.
2952    
2953 kaz 1.53 2002-03-12 Kaz Kylheku <kaz@ashi.footprints.net>
2954    
2955 kaz 1.61 * import.lisp (mcvs-import): Create a .cvsignore file for ignoring
2956     MAP-LOCAL.
2957    
2958     2002-03-12 Kaz Kylheku <kaz@ashi.footprints.net>
2959    
2960 kaz 1.60 Fix trailing slash bug in mcvs mv.
2961    
2962     * move.lisp (simple-move-to-dir): Canonicalize path after catenating
2963     destination and file base name. This nukes a double slash if
2964     we move to a name with a trailing slash.
2965     (move-guts): Treat a destination name that has a trailing slash
2966     as a directory, unless it exists already as a non-directory.
2967    
2968     2002-03-12 Kaz Kylheku <kaz@ashi.footprints.net>
2969    
2970 kaz 1.59 * mcvs-main.lisp (*cvs-options*): Added "error-terminate" and
2971     "error-continue".
2972     (*usage*): Update and reformat help text.
2973     (mcvs-execute): Process "error-terminate" and "error-continue"
2974     options.
2975    
2976     2002-03-12 Kaz Kylheku <kaz@ashi.footprints.net>
2977    
2978 kaz 1.58 * mapping.lisp (mapping-update): Messages related to moving,
2979     adding or removing files promoted to terse level, so only -Q
2980     can suppress them.
2981    
2982     2002-03-12 Kaz Kylheku <kaz@ashi.footprints.net>
2983    
2984 kaz 1.57 * update.lisp (mcvs-update): Changing level of chatter messages.
2985     * move.lisp (mcvs-move): Likewise.
2986     * add.lisp (mcvs-add): Likewise.
2987     * remove.lisp (mcvs-remove): Likewise.
2988     * checkout.lisp (mcvs-checkout): Likewise.
2989     * generic.lisp (mcvs-generic): Likewise.
2990     * import.lisp (mcvs-import): Likewise.
2991     * mapping.lisp (mapping-dupe-check): Likewise.
2992     (mapping-update): Likewise.
2993    
2994     2002-03-12 Kaz Kylheku <kaz@ashi.footprints.net>
2995    
2996 kaz 1.56 Support for -q, -Q and -e global options.
2997    
2998     * posix.lisp (*editor*): New special variable.
2999     (edit-file): Check *editor* variable; if not nil, use it.
3000    
3001     * mcvs-main.lisp (*usage*): Update help text.
3002     (mcvs-execute): Set *mcvs-chatter-level* according to -q or -Q.
3003     Set *editor* if -e is specified.
3004    
3005     2002-03-12 Kaz Kylheku <kaz@ashi.footprints.net>
3006    
3007 kaz 1.55 * mcvs-main.lisp (*cvs-options*): Remove obsolete "a".
3008     (*cvs-options-arg*): Add missing "r".
3009     (*usage*): New constant, help text.
3010     (mcvs-execute): Process help and version command line options.
3011    
3012     2002-03-12 Kaz Kylheku <kaz@ashi.footprints.net>
3013    
3014 kaz 1.54 * options.lisp (parse-opt): Make error messages more consistent.
3015    
3016     2002-03-12 Kaz Kylheku <kaz@ashi.footprints.net>
3017    
3018 kaz 1.53 * find-bind.lisp (find-bind): Make rem-var optional; sometimes
3019     the user might not care about the remaining unmatched list.
3020    
3021 kaz 1.49 2002-03-11 Kaz Kylheku <kaz@ashi.footprints.net>
3022    
3023 kaz 1.52 * find-bind.lisp (find-bind): Documentation string change. Clarify
3024     that default values are substituted whenever a variable would
3025     otherwise be bound to the value NIL, even through an explicit
3026     match.
3027    
3028     2002-03-11 Kaz Kylheku <kaz@ashi.footprints.net>
3029    
3030 kaz 1.51 Sane filtering of -d option in checkout.
3031    
3032     * find-bind.lisp (find-bind): Variable bindings can specify
3033     a third element, which provides a default value for any variables
3034     that turn out NIL.
3035    
3036     * checkout.lisp (mcvs-checkout): Filter out the -d dir option,
3037     and use it to override the name of the checkout directory,
3038     the way CVS checkout does it.
3039    
3040     2002-03-11 Kaz Kylheku <kaz@ashi.footprints.net>
3041    
3042 kaz 1.50 Bugfix: mcvs add was not processing existing :ignore's in MCVS/TYPES.
3043    
3044     * add.lisp (mcvs-add): Use old types as well as new types
3045     to filter for ignores.
3046    
3047     2002-03-11 Kaz Kylheku <kaz@ashi.footprints.net>
3048    
3049 kaz 1.49 * find-bind.lisp: New file.
3050     (find-bind-extract-vals): New function.
3051     (find-bind): New macro.
3052    
3053     * error.lisp (restart-destructure): Macro removed.
3054     (mcvs-error-handler): Uses generic find-bind instead of
3055     restart-destructure.
3056    
3057 kaz 1.43 2002-03-09 Kaz Kylheku <kaz@ashi.footprints.net>
3058    
3059 kaz 1.48 * filt.lisp (mcvs-filt): Bugfix: do not stop processing line
3060     if F- file name is not found in hash table.
3061    
3062     2002-03-09 Kaz Kylheku <kaz@ashi.footprints.net>
3063    
3064 kaz 1.47 Commit is handled through mcvs-generic, so it can take
3065     filename arguments, and honor --nometa.
3066    
3067     * commit.lisp: File removed.
3068     (mcvs-commit): Function removed.
3069     (mcvs-commit-wrapper): Moved to generic.lisp.
3070    
3071     * generic.lisp (mcvs-commit-wrapper): Moved from commit.lisp,
3072     changed to invoke mcvs-generic.
3073     (mcvs-generic): Only add TYPES file to list if it actually
3074     exists.
3075    
3076     2002-03-09 Kaz Kylheku <kaz@ashi.footprints.net>
3077    
3078 kaz 1.46 New --nometa command line option.
3079    
3080     * mcvs-main.lisp (*cvs-options*): Add "nometa" to list.
3081     (mcvs-execute): Filter global options to recognize
3082     Meta-CVS-specific ones.
3083    
3084     * options.lisp (*nometa-option*): New special variable.
3085     (filter-global-options): New function.
3086    
3087     * generic.lisp (mcvs-generic): Honor *nometa-option* special
3088     variable.
3089    
3090     2002-03-09 Kaz Kylheku <kaz@ashi.footprints.net>
3091    
3092 kaz 1.45 * generic.lisp (mcvs-generic): Make sure TYPES file is
3093     included in list of files.
3094    
3095     2002-03-09 Kaz Kylheku <kaz@ashi.footprints.net>
3096    
3097 kaz 1.44 * mcvs-main.lisp (*add-options*): Support -R option for add.
3098     Thus, recursive add works now.
3099    
3100     2002-03-09 Kaz Kylheku <kaz@ashi.footprints.net>
3101    
3102 kaz 1.43 Fix mcvs filt so it handles suffixed F- files properly.
3103    
3104     * filt.lisp (make-filt-hash): New function.
3105     (mcvs-filt): After matching hex digits, also check for
3106     a suffix match.
3107    
3108 kaz 1.40 2002-02-17 Kaz Kylheku <kaz@ashi.footprints.net>
3109    
3110 kaz 1.42 Support for file type keyword treatment under mcvs add.
3111    
3112     * add.lisp (mcvs-add): Restructured to build up list of new file
3113     suffixes, allow the user to edit the file which determines how
3114     they are treated, filter out ignored files and pass -k options
3115     to multiple cvs adds.
3116    
3117     * types.lisp (*mcvs-new-types*): New constant.
3118     (*types-comments*): Constant moved here from import.lisp.
3119     (types-remove-ignores): New function. Code factored out from
3120     mcvs-import.
3121     (types-let-user-edit): Likewise.
3122     (types-make-cvs-adds): New function.
3123    
3124     * import.lisp (*types-comments*): Constant removed. Moved to
3125     types.lisp
3126     (mcvs-import): Code factored out to new functions in types.lisp, which
3127     are also used by add.lisp.
3128    
3129     2002-02-17 Kaz Kylheku <kaz@ashi.footprints.net>
3130    
3131 kaz 1.41 * print.lisp: New file.
3132     (print-assoc-list): New function.
3133     * types.lisp: Use print-assoc-list to nicely print the types.
3134     * import.lisp (mcvs-import): Don't bother getting user to
3135     edit the types if the type list is empty. In fact, don't
3136     even create the file.
3137    
3138     2002-02-17 Kaz Kylheku <kaz@ashi.footprints.net>
3139    
3140     * add.lisp (mcvs-add): Use new form of mapping-generate-name.
3141    
3142     2002-02-17 Kaz Kylheku <kaz@ashi.footprints.net>
3143    
3144 kaz 1.40 * import.lisp (mcvs-import): Fix broken restart for re-editing
3145     the types file.
3146     (*types-comments*): Drastically shorten the help text.
3147    
3148 kaz 1.38 2002-02-16 Kaz Kylheku <kaz@ashi.footprints.net>
3149    
3150 kaz 1.39 Support for filetypes in import.
3151    
3152     * posix.lisp (suffix): Separator character parameter is optional;
3153     multiple occurences of character lead to one big suffix like
3154     ".tar.gz" instead of ".gz". A leading dot means it's not a suffix but
3155     a hidden file like ".exrc".
3156     (edit-file): New function, brings up text editor for specified file.
3157    
3158     * clisp-linux.lisp (env-lookup): New function for environment
3159     variable lookup.
3160    
3161     * types.lisp: New source file.
3162     (*mcvs-types-name*, *mcvs-types*): New constants for TYPES filename.
3163     (types-read, types-write, types-sanity-check,
3164     types-to-import-wrapper-args): New functions.
3165    
3166     * import.lisp (*types-comments*): New constant.
3167     (mcvs-import): Restructured to build up list of file suffixes,
3168     allow the user to edit the file which determines how they
3169     are treated, filter out ignored files and pass -W options to cvs import
3170     to handle the rest. Failed cvs import is turned into restartable
3171     condition.
3172    
3173     * mapping.lisp (mapping-generate-name): Takes a suffix parameter.
3174     The F-files now carry a suffix obtained from the original file,
3175     because I have concluded that this was the only reasonable way
3176     to integrate with CVS.
3177    
3178     2002-02-16 Kaz Kylheku <kaz@ashi.footprints.net>
3179    
3180 kaz 1.38 * add.lisp (mcvs-add): Last change completely broke add due
3181     to not breaking out of the retry loop.
3182    
3183 kaz 1.36 2002-02-13 Kaz Kylheku <kaz@ashi.footprints.net>
3184    
3185 kaz 1.37 * move.lisp (mcvs-move): If the mapping-update operation returns
3186     nil, or terminates by a non-local jump, restore the filemap.
3187     * mapping.lisp (mapping-update): When returning normally,
3188     return t. When returning after doing a rollback, return nil.
3189    
3190     2002-02-13 Kaz Kylheku <kaz@ashi.footprints.net>
3191    
3192 kaz 1.36 * error.lisp (mcvs-error-handler): Bugfix. We were closing over
3193     a binding of the iteration variable of a dolist, which has only
3194     one binding over the entire loop.
3195    
3196     * mapping.lisp (mapping-update): Gathers up info all local
3197     clobbered files, and then throw the error. Provides restart
3198     which allows user to print the list of clobbered files, and
3199     a restart which allows the user to have those files clobbered.
3200    
3201     2002-02-13 Kaz Kylheku <kaz@ashi.footprints.net>
3202    
3203     * checkout.lisp (mcvs-checkout-wrapper): Bugfix for last bugfix.
3204    
3205 kaz 1.35 2002-02-11 Kaz Kylheku <kaz@ashi.footprints.net>
3206    
3207     * checkout.lisp (mcvs-checkout-wrapper): Bugfix for bad
3208     destructuring-bind if there are no arguments.
3209    
3210 kaz 1.30 2002-02-10 Kaz Kylheku <kaz@ashi.footprints.net>
3211    
3212 kaz 1.34 * mapping.lisp (mapping-difference): Reformatted documentation string.
3213     (mapping-update): Implemented a continue restart which rolls back
3214     the changes done to the local filesystem.
3215    
3216     2002-02-10 Kaz Kylheku <kaz@ashi.footprints.net>
3217    
3218 kaz 1.31 * error.lisp (mcvs-error-handler): Rearranging the menu,
3219     so "T" is clumped with the main options, and any special restarts
3220 kaz 1.32 are clearly separated. Changed wording.
3221 kaz 1.31
3222     2002-02-10 Kaz Kylheku <kaz@ashi.footprints.net>
3223    
3224 kaz 1.30 * update.lisp (mcvs-update): Re-print the "Invoking CVS" chatter
3225     if the user re-tries the error.
3226    
3227     * add.lisp (mcvs-add): CVS failure is now a restartable error;
3228 kaz 1.33 user can decide whether to roll back the effects or retry the
3229     CVS add, or terminate to keep the effects anyway despite
3230     the failed add.
3231 kaz 1.30
3232     2002-02-10 Kaz Kylheku <kaz@ashi.footprints.net>
3233    
3234     * install.sh: Stop the script if there are compilation errors.
3235    
3236 kaz 1.24 2002-02-09 Kaz Kylheku <kaz@ashi.footprints.net>
3237    
3238 kaz 1.29 * error.lisp (*mcvs-errors-occured-p*): New special variable.
3239     (mcvs-error-handler): Set *mcvs-errors-occured-p* to T.
3240     * mcvs-main.lisp (mcvs): Take *mcvs-errors-occured-p* into
3241     account in computing termination status.
3242    
3243     2002-02-09 Kaz Kylheku <kaz@ashi.footprints.net>
3244    
3245 kaz 1.28 * update.lisp: Remove spurious newlines from error messages.
3246     * add.lisp: Likewise.
3247     * options.lisp: Likewise.
3248     * mapping.lisp: Likewise.
3249    
3250     2002-02-09 Kaz Kylheku <kaz@ashi.footprints.net>
3251    
3252 kaz 1.27 Adding some restarts around cvs update.
3253    
3254     * posix.lisp (execute-command-xargs): Bail with nil return
3255     value if any command line fails.
3256    
3257     * update.lisp (mcvs-update): Tests return value of execute-program
3258     and signal condition if it's nil. Provides a continue restart
3259     as well as a retry restart to try the command again.
3260    
3261     * error.lisp (mcvs-error-handler): Show retry restarts as
3262     a special menu item "R".
3263    
3264     2002-02-09 Kaz Kylheku <kaz@ashi.footprints.net>
3265    
3266 kaz 1.26 Added a much improved error handling routine in anticipation
3267     of better use of restarts.
3268    
3269     * error.lisp: New file
3270     (restart-destructure): New macro.
3271     (*mcvs-error-treatment*): Special variable, moved here from
3272     mcvs-main.
3273     (mcvs-error-handler): New function.
3274    
3275     * mcvs-main.lisp (mcvs-top-error-handler): Function removed.
3276     (mcvs-execute): Bind error to new mcvs-error-handler instad
3277     of mcvs-top-error-handler.
3278    
3279     2002-02-09 Kaz Kylheku <kaz@ashi.footprints.net>
3280    
3281 kaz 1.25 * mcvs-main.lisp (*mcvs-command-table*): The "stat" abbreviation
3282     for status command added.
3283    
3284     2002-02-09 Kaz Kylheku <kaz@ashi.footprints.net>
3285    
3286 kaz 1.24 Hooking conversion tool into command structure.
3287    
3288     * mcvs-main.lisp (*convert-options*): New constant.
3289     (*mcvs-command-table*): New entry for mcvs-convert-wrapper.
3290     * convert.lisp (mcvs-convert): Fix reference to nonexistent variable.
3291     (mcvs-convert-wrapper): New function.
3292    
3293 kaz 1.22 2002-02-08 Kaz Kylheku <kaz@ashi.footprints.net>
3294    
3295 kaz 1.23 Beginning work on repository conversion utility.
3296    
3297     * convert.lisp: New file. Contains conversion utility
3298     to make an Meta-CVS repository from an ordinary CVS repository,
3299     while preserving all history, tags and branches.
3300     (remove-attic-component, classify-tags, read-tags,
3301     mcvs-convert): New functions.
3302    
3303     * posix.lisp (suffix): New function. Computes suffix of file.
3304     (execute-program-xargs): New optional parameter, for specifying
3305     fixed part added at the end of each generated command line.
3306    
3307     * mapping.lisp (*mcvs-map-name*, *mcvs-local-map-name*): New constants.
3308     (*mcvs-map*, *mcvs-map-local*): Redefined in terms of new constants.
3309     (mapping-generate-name): New key parameter no-dir for not adding
3310     the directory prefix.
3311    
3312     2002-02-08 Kaz Kylheku <kaz@ashi.footprints.net>
3313    
3314 kaz 1.22 * checkout.lisp (mcvs-checkout): Ensure local mapping is
3315     sorted when written out, for easier comparisons.
3316    
3317 kaz 1.21 2002-02-07 Kaz Kylheku <kaz@ashi.footprints.net>
3318    
3319     * sync.lisp (synchronize-files): Return :dir symbol when either
3320     argument is a directory.
3321     * mapping.lisp (mapping-synchronize): Chatter output messages
3322     are shorter. Handles :dir return value from synchronize-files.
3323     (mapping-update): New sanity checks for moved and added
3324     files, to avoid clobbering local files. Removed redundant
3325     call to ensure-directories-exit in move logic, because
3326     synchronize-files will do it anyway. Chatter messages reordered
3327     to occur before their corresponding action is done.
3328    
3329     2002-02-07 Kaz Kylheku <kaz@ashi.footprints.net>
3330    
3331     Improve error handling, and builtin ``debug shell''.
3332    
3333     * mcvs-main.lisp (*mcvs-error-treatment*): Special variable
3334     can have new domain value, namely :decline.
3335     (mcvs-top-error-handler): Print error message when terminating
3336     non-restartable error. Handle new :decline treatment by
3337     simply returning.
3338     (mcvs-debug-shell): Set *mcvs-error-treatment* to :decline
3339     so that errors are caught by debugger.
3340    
3341 kaz 1.20 2002-02-04 Kaz Kylheku <kaz@ashi.footprints.net>
3342    
3343     * mapping.lisp (mapping-sort): Removed function.
3344     (mapping-write): Sort written map by F- file names,
3345     not by path names. This is far better for merging, because
3346     files stay in the same place when they are renamed.
3347    
3348 kaz 1.17 2002-02-03 Kaz Kylheku <kaz@ashi.footprints.net>
3349    
3350 kaz 1.19 Added status, log and annotate.
3351    
3352     * mcvs-main.lisp: (*log-options*, *status-options*,
3353     *annotate-options*): New constants.
3354     (*mcvs-command-table*): Add new entries.
3355    
3356     * generic-lisp (mcvs-log-wrapper, mcvs-status-wrapper,
3357     mcvs-annotate-wrapper): New functions.
3358    
3359     2002-02-03 Kaz Kylheku <kaz@ashi.footprints.net>
3360    
3361 kaz 1.18 Added tag command.
3362    
3363     * diff.lisp: File renamed to generic.lisp.
3364     (mcvs-diff): Function renamed to mcvs-generic.
3365    
3366     * generic.lisp (mcvs-generic): Function no longer dedicated to
3367     diffing only; takes CVS command to execute as an argument,
3368     also takes arguments and files as separate lists.
3369     (mcvs-diff-wrapper): Modified to invoke mcvs-generic properly.
3370     (mcvs-tag-wrapper): New function, uses mcvs-generic to implement
3371     tag command.
3372    
3373     * mcvs-main.lisp (*tag-options*): New constant.
3374     (*mcvs-command-table*): New entry for tag command.
3375    
3376     2002-02-03 Kaz Kylheku <kaz@ashi.footprints.net>
3377    
3378 kaz 1.17 Added workaround for operating system argument passing limitations,
3379     resembling the Unix xargs utility. Also, trimmed some fat
3380     from the basename function.
3381    
3382     * clisp-linux.lisp: (*argument-limit*): New constant added.
3383     (arglist-to-command-string): Function removed.
3384     (execute-program): Function removed.
3385     (shell-interpreter): New function, wrapper for CLISP's shell
3386     function, turns exit status into T (success) or NIL (failure).
3387    
3388     * diff.lisp (mcvs-diff): Uses execute-program-xargs instead
3389     of execute-program.
3390    
3391     * posix.lisp (basename): Does not canonicalize path name. This
3392     turns out to be an unnecessary performance hit in some cases.
3393     (arglist-to-command-string): New function. Similar to what was
3394     removed from clisp-linux, but this one properly escapes all
3395     shell metacharacters.
3396     (execute-program): New function, calls shell-interpreter.
3397     (execute-program-xargs): New function. Takes two argument lists.
3398     Forms one or more command lines by combining the first argument list
3399     with one or more pieces of the second argument list, and
3400     executes each command. The length of the pieces is determined
3401     by the argument passing limit.
3402    
3403     * dirwalk.lisp (ensure-directories-gone): Add use of
3404     canonicalize-path because basename doesn't do it.
3405    
3406 kaz 1.12 2002-02-02 Kaz Kylheku <kaz@ashi.footprints.net>
3407    
3408 kaz 1.16 Algorithmic efficiency improvements. No longer using
3409     abstract set operations to update file structure or find
3410     duplicates in the maps. Could still streamline the sorting.
3411    
3412     * mapping.lisp (mapping-sort): Express more succinctly using key.
3413     (mapping-dupe-check): Rewrite using loop over sorted lists.
3414     (mapping-difference): New function for computing mapping change.
3415     (mapping-update): Modify to use mapping-difference.
3416    
3417     2002-02-02 Kaz Kylheku <kaz@ashi.footprints.net>
3418    
3419 kaz 1.15 * mapping.lisp (mapping-update): When moving files, ensure
3420     that the target is unlinked if it exists.
3421    
3422     * move.lisp (simple-rename): No longer do target unlinking
3423     here. Also bugfix: it wasn't handling renames of directories
3424     containing just one file.
3425    
3426     2002-02-02 Kaz Kylheku <kaz@ashi.footprints.net>
3427    
3428 kaz 1.13 * mapping.lisp (mapping-dupe-check): New function for
3429     detecting duplicate objects or paths in a mapping.
3430     (mapping-sane-p): Function removed.
3431     (mapping-read): Use mapping-dupe-check to verify a map
3432     when asked by the sanity-check keyword.
3433     (mapping-update): Specify sanity check when reading MCVS/MAP.
3434    
3435 kaz 1.14 * checkout.lisp (mcvs-checkout): Checkout also performs
3436     sanity check.
3437    
3438 kaz 1.13 2002-02-02 Kaz Kylheku <kaz@ashi.footprints.net>
3439    
3440 kaz 1.12 * mcvs-main.lisp (mcvs): Use CLISP's exit function correctly
3441     to establish proper termination status.
3442    
3443 kaz 1.8 2002-01-31 Kaz Kylheku <kaz@ashi.footprints.net>
3444    
3445 kaz 1.10 * mcvs-main.lisp (mcvs-execute): Parse command-specific options
3446     properly based on knowledge of each command's set of options.
3447     (parse-args): Function removed.
3448    
3449 kaz 1.11 * options.lisp (parse-opt): Correctly process long options with
3450     arguments. Argument is part of the string, separated by = symbol.
3451    
3452 kaz 1.10 2002-01-31 Kaz Kylheku <kaz@ashi.footprints.net>
3453    
3454 kaz 1.9 * options.lisp (parse-opt): When multiple options characters are
3455     bunched up into one argument, and one of them other than the
3456     last one takes an argument, then the remaining ones are
3457     considered to constitute a string which is an argument to that
3458     option. For instance -y32 means -y 32, not -y -3 -2, assuming
3459     that y is an option that requires an argument.
3460    
3461     2002-01-31 Kaz Kylheku <kaz@ashi.footprints.net>
3462    
3463     Top level handler terminates by non-local exit back to
3464     mcvs function, rather than by calling (exit).
3465    
3466     * mcvs-main.lisp (mcvs-top-error-handler): Restructured
3467     to call (throw 'mcvs-exit t).
3468     (mcvs-execute): Ensure that NIL is returned by normal exit.
3469     (mcvs): Catches 'mcvs-exit throw, and calls (exit 0) or (exit 1)
3470     accordingly.
3471    
3472    
3473     2002-01-31 Kaz Kylheku <kaz@ashi.footprints.net>
3474    
3475 kaz 1.8 Renamed all ``filemap-'' functions to ``mapping-'' prefix.
3476    
3477     * mapping.lisp (filemap-generate-name, filemap-sort,
3478     filemap-extract-paths, filemap-lookup, filemap-prefix-lookup,
3479     filemap-prefix-matches, filemap-object-lookup,
3480     filemap-same-object-p, filemap-same-path-p, filemap-moved-p,
3481     filemap-rename-files, filemap-sane-p): Old names removed.
3482     (mapping-generate-name, mapping-sort,
3483     mapping-extract-paths, mapping-lookup, mapping-prefix-lookup,
3484     mapping-prefix-matches, mapping-object-lookup,
3485     mapping-same-object-p, mapping-same-path-p, mapping-moved-p,
3486     mapping-rename-files, mapping-sane-p): New names created.
3487     (mapping-read, mapping-write, mapping-synchronize,
3488     mapping-update): Edit calls to renamed functions.
3489     * add.lisp (mcvs-add): Likewise.
3490     * diff.lisp (mcvs-diff): Likewise.
3491     * filt.lisp (mcvs-filt): Likewise.
3492     * import.lisp (mcvs-import): Likewise.
3493     * move.lisp (simple-rename, simple-move-to-dir, move-guts): Likewise.
3494     * remove.lisp (mcvs-remove): Likewise.
3495    
3496 kaz 1.6 2002-01-30 Kaz Kylheku <kaz@ashi.footprints.net>
3497    
3498 kaz 1.7 Factored out repeated code for reading and writing of the MAP and
3499     MAP-LOCAL files.
3500    
3501     * mapping.lisp (mapping-read, mapping-write): New functions.
3502     (mapping-synchronize, mapping-update): Use new functions.
3503     * move.lisp (mcvs-move): Likewise.
3504     * filt.lisp (mcvs-filt): Likewise.
3505     * add.lisp (mcvs-add): Likewise.
3506     * remove.lisp (mcvs-remove): Likewise.
3507     * checkout.lisp (mcvs-checkout): Likewise.
3508     * diff.lisp (mcvs-diff): Likewise.
3509     * import.lisp (mcvs-import): Likewise.
3510    
3511     2002-01-30 Kaz Kylheku <kaz@ashi.footprints.net>
3512    
3513 kaz 1.6 * filt.lisp (mcvs-filt): use *mcvs-dir* variable instead of
3514     hard coding "MCVS" string.
3515    
3516     2002-01-30 Kaz Kylheku <kaz@ashi.footprints.net>
3517    
3518     * MCVS-PAPER: Renamed to Meta-CVS-PAPER
3519    
3520     * README: Change all references to MCVS to Meta-CVS, the
3521     new official name of the program.
3522     * add.lisp: Likewise
3523     * chatter.lisp: Likewise
3524     * checkout.lisp: Likewise
3525     * clisp-linux.lisp: Likewise
3526     * commit.lisp: Likewise
3527     * diff.lisp: Likewise
3528     * dirwalk.lisp: Likewise
3529     * filt.lisp: Likewise
3530     * import.lisp: Likewise
3531     * INSTALL: Likewise
3532     * mapping.lisp: Likewise
3533     * mcvs-main.lisp: Likewise
3534     * Meta-CVS-PAPER: Likewise
3535     * move.lisp: Likewise
3536     * options.lisp: Likewise
3537     * posix.lisp: Likewise
3538     * RELEASE-NOTES: Likewise
3539     * remove.lisp: Likewise
3540     * restart.lisp: Likewise
3541     * seqfuncs.lisp: Likewise
3542     * split.lisp: Likewise
3543     * sync.lisp: Likewise
3544     * system.lisp: Likewise
3545     * update.lisp: Likewise
3546    
3547 kaz 1.4 2002-01-28 Kaz Kylheku <kaz@ashi.footprints.net>
3548    
3549 kaz 1.5 * move.lisp (move-guts): test the actual filesystem as well
3550     as the map for existence of a directory or file. This makes
3551     the move operation behave better. Files can be moved to an
3552     existing directory that is not known to MCVS, and a file
3553     can properly clobber a target file that is not known to MCVS.
3554    
3555     * clisp-linux.lisp (directory-p, regular-p, symlink-p): define
3556     methods for these generic functions for a NIL argument, such
3557     that they return NIL.
3558    
3559     2002-01-28 Kaz Kylheku <kaz@ashi.footprints.net>
3560    
3561 kaz 1.4 * move.lisp (simple-move-to-dir): eliminated a bunch of code
3562     with the result that mcvs mv now works more like the Unix mv
3563     when moving a directory to another directory.
3564    
3565     * mcvs-main.lisp (mcvs-execute): fix bogus error message
3566     when options are given but no command.
3567    
3568     * README: don't use -z3 in example because this style of
3569     specifying an argument to an option doesn't work.
3570    
3571 kaz 1.1 2002-01-27 Kaz Kylheku <kaz@ashi.footprints.net>
3572    
3573     * add.lisp (mcvs-add): Remove bogus test for NIL or T; allow
3574     recursivep to be a generalized boolean variable. This allows
3575     mcvs add -R to work properly.
3576 kaz 1.2
3577     * mcvs-main.lisp (*cvs-command-options-arg*): add support
3578     for -u parameter, useful in cvs diff.
3579 kaz 1.3 (*mcvs-command-table*): Add "fi" shorthand for "filt".

  ViewVC Help
Powered by ViewVC 1.1.5