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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.321 - (hide annotations)
Mon Mar 10 00:19:32 2008 UTC (6 years, 1 month ago) by kaz
Branch: MAIN
Changes since 1.320: +9 -0 lines
Get rid of dependency on lndir.

* configure: Do not check for lndir; do not symlink code
directory (just the Makefile using ln).

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

  ViewVC Help
Powered by ViewVC 1.1.5