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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.323 - (hide annotations)
Tue Mar 11 05:24:30 2008 UTC (6 years, 1 month ago) by kaz
Branch: MAIN
Changes since 1.322: +13 -0 lines
First cut at IA-64 support.

* Makefile (ARCH): New variable, captures output of arch program.
Arch, prefixed with "ARCH-" is pushed onto *FEATURES* list.

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

  ViewVC Help
Powered by ViewVC 1.1.5