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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.306 - (hide annotations)
Tue Nov 28 07:47:21 2006 UTC (7 years, 4 months ago) by kaz
Branch: MAIN
Changes since 1.305: +22 -0 lines
More renaming to get rid of mcvs- prefix.

* code/chatter.lisp (*mcvs-debug*): Renamed to *chatter-debug*.
(*mcvs-info*, *mcvs-terse*, *mcvs-silent*): Similarly.
(*mcvs-chatter-level*): Renamed to *chatter-level*.

* code/unix.lisp (*mcvs-editor*): Renamed to *edit-program*.

* code/types.lisp (*mcvs-types-name*): Renamed to *types-file*.
(*mcvs-types*): Renamed to *types-path*.
(*mcvs-new-types*): Renamed to *types-new-path*.

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

  ViewVC Help
Powered by ViewVC 1.1.5