Parent Directory | Revision Log
|Links to HEAD:||(view) (annotate)|
|Links to mcvs-1-0-branch~merged-to-HEAD-1:||(view) (annotate)|
Change restoration message to match that of the move command.
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.
Start of support for global option -n (dry run). * code/options.lisp (*dry-run-option*): New boolean variable. (process-cvs-options): Look for -n and set *dry-run-option*. * code/types.lisp (types-write): Do not write file if *dry-run-option* is true. * code/types.lisp (mapping-write): Likewise. * code/add.lisp (mcvs-add): When calling types-let-user-edit, temporarily disable the dry run option, so that TYPES-NEW can be written. When the dry run option is in effect, do not try to cvs add the TYPES file.
* code/mcvs-main.lisp (*usage*): Expand tabs to spaces. * code/add.lisp (*add-help*): Likewise. * code/remove.lisp (*remove-help*): Likewise. * code/create.lisp (*create-help*): Likewise.
* code/add.lisp (*add-help*): Remove spurious text cut and pasted from checkout help.
* code/add.lisp (mcvs-add): Provide a continue restart around the code that builds up the expanded-paths for each iteration of the loop. Without this, errors in that code cause the program to bail, even though errors in the rest of the loop body are continuable.
* code/add.lisp (mcvs-add): Reshuffle restart to a higher nesting level, so that an error on one item won't abort the whole operation.
Error messages no longer specify prefixes like "mcvs:" or "mcvs-remove:". When no restarts are available, the error handler now adds the "mcvs:" prefix when dumping the error text to the standard error stream, and also adds a terminating newline. The inability to write to the MAP file is converted to a more informative error message. New --debug option is supported to set the chatter level to 3.
* code/mcvs-main.lisp (*checkout-options*): Removed -A and -N options. (*mcvs-command-table*): Added help for checkout and add. * code/checkout.lisp (*checkout-help*): New string constant. * code/add.help (*add-help*): Likewise. * code/create.lisp (*create-help*): Mention interactive file type specification.
Low level support for versioning executable bit. * code/unix-bindings/unix.lisp (unix-funcs:chmod): New callout function. * code/clisp-unix.lisp (executable-p, make-executable, make-non-executable): New generic functions. (executable-p (file-info), make-executable (file-info), make-executable (string), make-non-executable (file-info), make-non-executable (string)): New methods. * code/add.lisp (mcvs-add): Record whether new file is executable or not, by setting executable slot in mapping-entry. * code/create.lisp (mcvs-create): Likewise. * code/sync.lisp (synchronize-files): New parameter, should-be-executable, tells function which way to set permissions after synchronizing files. * code/mapping.lisp (mapping-entry): New slot, executable. (mapping-entry-parse-attributes): New function, parses new optional property list from :FILE entries in a mapping. (mapping-convert-in): Parse property list that may be present in fourth list element of a :FILE entry. (mapping-convert-out): Write out executable flag as :EXEC property, if true. (mapping-synchronize): Pass executable flag down to synchronize-files.
Merging symlink-branch to main trunk.
Merging from partial-sandbox-branch.
* add.lisp (mcvs-add): Error message changed to tell user to use -R to add directory. * remove.lisp (mcvs-remove): New generalized boolean parameter indicates to do a recursive remove. This is controlled by the -R option which already exists. Behavior changed to not act on directories unless recursion is explicitly requested. (mcvs-remove-wrapper): Extract "R" option, pass down new boolean to mcvs-remove.
* 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.
*** empty log message ***
Support for file type keyword treatment under mcvs add. * add.lisp (mcvs-add): Restructured to build up list of new file suffixes, allow the user to edit the file which determines how they are treated, filter out ignored files and pass -k options to multiple cvs adds. * types.lisp (*mcvs-new-types*): New constant. (*types-comments*): Constant moved here from import.lisp. (types-remove-ignores): New function. Code factored out from mcvs-import. (types-let-user-edit): Likewise. (types-make-cvs-adds): New function. * import.lisp (*types-comments*): Constant removed. Moved to types.lisp (mcvs-import): Code factored out to new functions in types.lisp, which are also used by add.lisp.
* print.lisp: New file. (print-assoc-list): New function. * types.lisp: Use print-assoc-list to nicely print the types. * import.lisp (mcvs-import): Don't bother getting user to edit the types if the type list is empty. In fact, don't even create the file. * add.lisp (mcvs-add): Use new form of mapping-generate-name.
* add.lisp (mcvs-add): Last change completely broke add due to not breaking out of the retry loop.
Don't provide special restart for keeping the add, because that will happen anyway if the user chooses to terminate. Restarts that do about the same thing as termination will certainly be confusing.
* 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.
Renamed all ``filemap-'' functions to ``mapping-'' prefix. * mapping.lisp (filemap-generate-name, filemap-sort, filemap-extract-paths, filemap-lookup, filemap-prefix-lookup, filemap-prefix-matches, filemap-object-lookup, filemap-same-object-p, filemap-same-path-p, filemap-moved-p, filemap-rename-files, filemap-sane-p): Old names removed. (mapping-generate-name, mapping-sort, mapping-extract-paths, mapping-lookup, mapping-prefix-lookup, mapping-prefix-matches, mapping-object-lookup, mapping-same-object-p, mapping-same-path-p, mapping-moved-p, mapping-rename-files, mapping-sane-p): New names created. (mapping-read, mapping-write, mapping-synchronize, mapping-update): Edit calls to renamed functions. * add.lisp (mcvs-add): Likewise. * diff.lisp (mcvs-diff): Likewise. * filt.lisp (mcvs-filt): Likewise. * import.lisp (mcvs-import): Likewise. * move.lisp (simple-rename, simple-move-to-dir, move-guts): Likewise. * remove.lisp (mcvs-remove): Likewise.
Factored out repeated code for reading and writing of the MAP and MAP-LOCAL files. * mapping.lisp (mapping-read, mapping-write): New functions. (mapping-synchronize, mapping-update): Use new functions. * move.lisp (mcvs-move): Likewise. * filt.lisp (mcvs-filt): Likewise. * add.lisp (mcvs-add): Likewise. * remove.lisp (mcvs-remove): Likewise. * checkout.lisp (mcvs-checkout): Likewise. * diff.lisp (mcvs-diff): Likewise. * import.lisp (mcvs-import): Likewise.
MCVS is being renamed to Meta-CVS.
Bugfix for mcvs add -R.
First cut at pass-through of CVS options.
Moving closer toward delivery.
mcvs-add: do not allow addition of files that are in MCVS area.
A bit of refactoring. Added mcvs-move.
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|