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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.318 - (hide annotations)
Sat Mar 8 02:53:34 2008 UTC (6 years, 1 month ago) by kaz
Branch: MAIN
CVS Tags: mcvs-1-1-98
Changes since 1.317: +11 -0 lines
Reshuffle documentation files around.

* SCRIPTING: moved to docs/misc-text-files subdirectory.
* PORTING: Likewise.
* QUICK-GUIDE: Likewise.
* docs/Meta-CVS-Paper: Likewise.

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

  ViewVC Help
Powered by ViewVC 1.1.5