Parent Directory | Revision Log
|Links to HEAD:||(view) (annotate)|
|Links to mcvs-1-1-0:||(view) (annotate)|
Revamped loading system. Got rid of require/provide in all Lisp source files. * code/mcvs.lisp: New file. Responsible for compiling and loading everything in the right order. * code/mcvs-main.lisp: File renamed to main.lisp. * code/mcvs-package.lisp: File renamed to package.lisp. * code/system.lisp: File removed.
Merging from mcvs-1-0-branch. * code/mapping.lisp (mapping-read): Provide a restart for file errors, which lets the user interactively substitute an empty map if the file can't be read. This is intended to handle the case when MCVS/MAP is missing; for example, the user updated to a sticky date for which no revision of the MAP exists. The effect of continuing will be that all files will disappear. (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. 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.
Merging from mcvs-1-0-branch. * code/sync.lisp (synchronize-files): Call exec-check using file info object, rather than file name. This cuts in half the number of calls to stat().
Merging from mcvs-1-0-branch.
* code/mcvs-package.lisp: New file, defines META-CVS package. * code/purge.lisp: Put all symbols in new package. * code/restore.lisp: Likewise. * code/paths.lisp: Likewise. * code/install.sh: Likewise. * code/restart.lisp: Likewise. * code/update.lisp: Likewise. * code/move.lisp: Likewise. * code/grab.lisp: Likewise. * code/unix.lisp: Likewise. * code/slot-refs.lisp: Likewise. * code/prop.lisp: Likewise. * code/multi-hash.lisp: Likewise. * code/rcs-utils.lisp: Likewise. * code/branch.lisp: Likewise. * code/find-bind.lisp: Likewise. * code/execute.lisp: Likewise. * code/link.lisp: Likewise. * code/split.lisp: Likewise. * code/watch.lisp: Likewise. * code/clisp-unix.lisp: Likewise. * code/add.lisp: Likewise. * code/chatter.lisp: Likewise. * code/print.lisp: Likewise. * code/types.lisp: Likewise. * code/remove.lisp: Likewise. * code/convert.lisp: Likewise. * code/error.lisp: Likewise. * code/options.lisp: Likewise. * code/dirwalk.lisp: Likewise. * code/checkout.lisp: Likewise. * code/generic.lisp: Likewise. * code/sync.lisp: Likewise. * code/create.lisp: Likewise. * code/memoize.lisp: Likewise. * code/seqfuncs.lisp: Likewise. * code/cmucl-unix.lisp: Likewise. * code/remap.lisp: Likewise. * code/mapping.lisp: Put symbols in new package. Replace use of CLISP specific substring function with subseq. * code/filt.lisp: Likewise. * code/mcvs-main.lisp: Put symbols in new package. The mcvs function is renamed to main. * code/install.sh: Generate mcvs script that uses qualified name of new startup functiont to start the software.
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.
* sync.lisp (synchronize-files): Signal an error when the two files to be synchronized have the same time stamp. Provide two restarts for doing the synchronization either way.
* sync.lisp (synchronize-files): Return :dir symbol when either argument is a directory. * mapping.lisp (mapping-synchronize): Chatter output messages are shorter. Handles :dir return value from synchronize-files. (mapping-update): New sanity checks for moved and added files, to avoid clobbering local files. Removed redundant call to ensure-directories-exit in move logic, because synchronize-files will do it anyway. Chatter messages reordered to occur before their corresponding action is done. * mcvs-main.lisp (*mcvs-error-treatment*): Special variable can have new domain value, namely :decline. (mcvs-top-error-handler): Print error message when terminating non-restartable error. Handle new :decline treatment by simply returning. (mcvs-debug-shell): Set *mcvs-error-treatment* to :decline so that errors are caught by debugger.
MCVS is being renamed to Meta-CVS.
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|