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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.5