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

Contents of /meta-cvs/F-0C9187C87304A15BD59A42657A3BE5A3

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.5