Parent Directory | Revision Log
|Links to HEAD:||(view) (annotate)|
|Links to mcvs-1-0-13:||(view) (annotate)|
* code/mcvs-generic.lisp (mcvs-generic): Removed the default-include-meta-files keyword parameter. (mcvs-tag, mcvs-commit): Remove use of keyword parameter. This fixes the silly behavior of including meta files even when the command line specifies a file list. Also, bugfix: *nometa-option* now works when global-if-empty-file-list is true, and there are no files. * code/update.lisp (mcvs-update): Remove use of keyword parameter in call to mcvs-generic.
Improved error handling again in a flash of sanity. The whole idea of ``bail'' as a restart is gone. All code which must perform some complex cleanup action does so as part of normal unwinding. And so termination becomes safe. * code/update.lisp (mcvs-update): Change bail restart to continue. * code/mcvs-main.lisp (*global-options*): Remove "error-bail". (*usage*): Remove description of --error-bail. (mcvs-execute): Bind *mcvs-error-treatment* to :terminate rather than :bail if controlling TTY cannot be opened. * code/move.lisp (mcvs-move): Change "Undoing move" error message to "Undoing changes to map". * code/add.lisp (mcvs-add): Get rid of bail restart; move cleanup code into unwind-protect block. * code/error.lisp (*mcvs-error-treatment*): Touch up docstring. (mcvs-error-handler): Remove anything having to do with :bail. Change description of `T' command to suggest that it is safe. * code/options.lisp (filter-mcvs-options): Remove handling of "error-bail" option. * code/mapping.lisp (mapping-update): Get rid of outermost restart-case, which had just a bail restart. Replace it with unwind-protect block which does exactly the same restoration.
Slightly redesigned error handling protocol. * code/update.lisp (mcvs-update): Change continue restart to bail. * code/add.lisp (mcvs-add): Likewise. * code/error.lisp (mcvs-error-handler): Specially recognize two additional restart symbols, bail and info. A bail restart performs any rolling back and cleanup and terminates. Continuation is now properly reserved for actions that proceed boldly to finish the job, possibly irretrievably clobbering precious data. The info restart is now a standard way to indicate that more details about the error can be obtained, so this does not have to be represented as a special action with an ad-hoc restart. * code/create.lisp (mcvs-create): Change show restart to info. * code/remap.lisp (mcvs-remap): Change ignore restart to continue. * code/mapping.lisp (mapping-update): Change ignore and do-clobber restarts to continue, and print-clobbers restart to info. Change continue restart to bail.
Revamped the synchronization logic. Synchronization now happens in a specific direction. For example, if we are doing a diff, we just need to push changes from the tree to the MCVS directory, not the other way around. Or: before an update or commit, we push from the tree to MCVS, then after the update, in the other direction. * code/update.lisp (mcvs-update): The before update is done in the :left direction only, and the after update in the :right. * code/move.lisp (mcvs-move): The just-in-case sync is done in the :left direction only. * code/link.lisp (mcvs-link): Likewise. * code/remove.lisp (mcvs-remove): Likewise. * code/add.lisp (mcvs-add): Get rid of mapping-synchronize call; it's completely unnecessary, since the new files are not even in the MAP-LOCAL, and the add logic explicitly links them into the MCVS directory. * code/generic.lisp (mcvs-generic): New keyword parameter, need-sync-before. Before-synchronization done in :left direction, after-synchronization in :right direction. Before-synchronization is now not done by default; need-sync-before must be specified. (mcvs-commit-wrapper): Specify before and after sync. (mcvs-diff-wrapper, mcvs-status-wrapper, mcvs-edit-wrapper): Explicitly specify before sync. (mcvs-tag-wrapper, mcvs-annotate-wrapper): Implicitly specify no sync. (mcvs-unedit-wrapper): Add before sync. * code/sync.lisp (synchronize-files): New key parameter :direction, values can be :left, :right or :either. Default is :either. If the value is :left or :right, then a sync is done only in that direction, otherwise the value :no-sync is returned. Behavior change: if the left file is missing (F- file in MCVS directory) it is not re-created, but rather :no-sync is returned. Also, if both files exist, have the same timestamp, and are distinct objects, if the direction is :left or :right, then the appropriate restart is automatically chosen. So this will do the right thing on filesystems where link() is performed by copying, without bothering the user with the error. * code/mapping.lisp (mapping-synchronize): New :direction key parameter, passed down to synchronize-filed. The new :no-sync return value from synchronize-files is handled. (mapping-update): Select the :right direction for synchronizing moves, adds or rollbacks.
* code/update.lisp (mcvs-update): Simplified restart code.
* code/mcvs-main.lisp (*update-options*): Added -C option. * code/update.lisp (mcvs-update): Fall back on the mcvs-generic if --metaonly or --nometa is specified to run CVS on specific files.
* options.lisp (*nometa-option*): Eliminated rid useless docstring. (*meta-option*): New variable. (*nometa-option*): New variable. (filter-global-options): Clean rewrite using find-bind. * generic.lisp (mcvs-generic): New keyword parameters default-include-meta-files, need-update-after. Implements new logic related to the new options. Performs (mapping-update) if need-update-after is true and metafiles were subject to cvs update. (mcvs-commit-wrapper): Calls mcvs-generic with :default-include-meta-files t. * update.lisp (mcvs-update): No longer overrides the *nometa-option* special variable. Passes :need-update-after t to mcvs-generic. * mcvs-main.lisp (*cvs-options*): New options entered into list.
Remove spurious empty expression.
Update takes file arguments now. * update.lisp (mcvs-update): If filename arguments are given, then just call mcvs-generic to do the work, but suppress the operation on meta files. If no filename arguments are given, then update everything. If the -p option is present, no synchronization is needed, before or after. (mcvs-update-wrapper): Pass command arguments down to mcvs-update. * mcvs-main.lisp (*update-options*): Add "p" option. * generic.lisp (mcvs-generic): New keyword parameter need-sync-after, a generalized boolean which can tell the function to do a mapping-synchronize after executing the CVS command.
* update.lisp (mcvs-update): Changing level of chatter messages. * move.lisp (mcvs-move): Likewise. * add.lisp (mcvs-add): Likewise. * remove.lisp (mcvs-remove): Likewise. * checkout.lisp (mcvs-checkout): Likewise. * generic.lisp (mcvs-generic): Likewise. * import.lisp (mcvs-import): Likewise. * mapping.lisp (mapping-dupe-check): Likewise. (mapping-update): Likewise.
* update.lisp (mcvs-update): Re-print the "Invoking CVS" chatter if the user re-tries the error. * add.lisp (mcvs-add): CVS failure is now a restartable error; user can decide whether to roll back the effects, retry the CVS add, or keep the effects anyway despite the failed add. * install.sh: Stop the script if there are compilation errors.
Remove spurious newlines from error messages.
Adding some restarts around cvs update. * posix.lisp (execute-command-xargs): Bail with nil return value if any command line fails. * update.lisp (mcvs-update): Tests return value of execute-program and signal condition if it's nil. Provides a continue restart as well as a retry restart to try the command again. * error.lisp (mcvs-error-handler): Show retry restarts as a special menu item "R".
MCVS is being renamed to Meta-CVS.
Added mcvs filt command to decode F- names in text streams.
First cut at pass-through of CVS options.
Moving closer toward delivery.
A bit of refactoring. Added mcvs-move.
mcvs-remove: do nothing if no arguments mcvs-update: resynchronize links after CVS update.
Adding all existing source files.
This form allows you to request diffs between any two revisions of this file. For each of the two "sides" of the diff, select a symbolic revision name using the selection box, or choose 'Use Text Field' and enter a numeric revision.
|Powered by ViewVC 1.1.5|