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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.307 - (hide annotations)
Wed Nov 29 05:10:28 2006 UTC (7 years, 4 months ago) by kaz
Branch: MAIN
Changes since 1.306: +9 -0 lines
Set all of CLISP's encodings to ISO-8851-1, so the I/O and FFI
is transparent to 8 bit characters, without raising any errors.
Previously this was handled elsewhere.

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

  ViewVC Help
Powered by ViewVC 1.1.5