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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.324 - (hide annotations)
Tue Mar 11 06:24:28 2008 UTC (6 years, 1 month ago) by kaz
Branch: MAIN
CVS Tags: HEAD
Changes since 1.323: +13 -0 lines
Clean-up stat-related FFI.

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

  ViewVC Help
Powered by ViewVC 1.1.5