Parent Directory | Revision Log
|Links to HEAD:||(view) (annotate)|
Reshuffle documentation files around. * SCRIPTING: moved to docs/misc-text-files subdirectory. * PORTING: Likewise. * QUICK-GUIDE: Likewise. * docs/Meta-CVS-Paper: Likewise. * docs: moved to docs/tex-manual.
* SCRIPTING: New file.
* UPGRADE-EXISTING: Remove obsolete document.
Rename PORT to PORTING.
New build system for Meta-CVS, based on a configure script, Makefile and ASDF. * Makefile: New file. * configure: New file, borrowed from CLKD. * code/mcvs.asd: New file, ASDF definition for Meta-CVS. * code/install.sh: Removed. * asdf/asdf.lisp: New file, ASDF based on cclan revision 1.102 with modifications from CLKD. * INSTALL: Update instructions.
* code/mcvs.asd: New file, ASDF definition for Meta-CVS.
ASDF revision 1.102 from cclan.
Preparing for new release.
Rewrote the CLISP bindings. The CLISP FFI is used to directly access the glibc shared library on Linux. This completely eliminates the need to create a custom linking set. Meta-CVS can now be built without any C development tools. The downside is that the the FFI definitions are not portable, since they depend on the glibc ABI. Support for other C libraries has to be hacked in the clisp-ffi.lisp module now. The main() hack is gone now too. * code/unix-bindings/link.sh: Removed. * code/unix-bindings/Makefile: Likewise. * code/unix-bindings/wrap.c: Likewise. * code/unix-bindings/unix.lisp: Renamed to code/unix-bindings/clisp-ffi.lisp. Contains revamped FFI definitions targetting Linux glibc. * code/install.sh: Substantially simplified. No longer builds a CLISP linking set. No longer builds the mcvs-upgrade tool, which is not useful any longer. Error tests eliminated with use of ``set -e''. * code/mcvs.lisp: Updated to load everything properly.
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/unix-bindings/impl.c: File renamed to wrap.c. (impl_null_pointer_p, impl_get_errno, impl_set_errno, impl_readdir, impl_readlink, impl_stat, impl_lstat, impl_fstat, impl_getcwd, impl_spawn): Prefix changed from ``impl_'' to ``mcvs_''. * code/unix-bindings/link.sh, code/unix-bindings/Makefile, code/unix-bindings/unix.lisp: Updated accordingly.
* code/unix-bindings/impl.c: File renamed to wrap.c. (impl_null_pointer_p, impl_get_errno, impl_set_errno, impl_readdir, impl_readlink, impl_stat, impl_lstat, impl_fstat, impl_getcwd, impl_spawn): Prefix changed from ``impl_'' to ``mcvs_''. * code/unix-bindings/link.sh, code/unix-bindings/Makefile, code/unix-bindings/unix.lisp: Updated accordingly.
* 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.
Merging from mcvs-1-0-branch: New link command for creating symlinks. * mcvs-main.lisp (*link-options*): New option constant. (*mcvs-command-table*): Entries for new command added. (*usage*): Help text added. * link.lisp: New file. (mcvs-link, mcvs-link-wrapper): New functions.
New link command for creating symlinks. * mcvs-main.lisp (*link-options*): New option constant. (*mcvs-command-table*): Entries for new command added. (*usage*): Help text added. * link.lisp: New file. (mcvs-link, mcvs-link-wrapper): New functions.
Merging from mcvs-1-0-branch Fix broken ``filt -r''. * code/mapping.lisp (mapping-read-raw-map): New function; reads map from stream and does sanity check. (mapping-read): Argument can be a filename or stream. Call to mapping-read-raw-map to factor out common code for both cases. * code/filt.lisp (filt-select-map): This was still just reading the raw structure from the cvs coprocess, which worked under the old map format, when the internal and external representations were the same. Now it calls mapping-read on the stream. * UPGRADE-EXISTING: New file. * code/mcvs-main.lisp: Clear out *modules* list before requiring modules. This is needed so that mcvs-upgrade works, because there is already a populated list in the Lisp image.
* UPGRADE-EXISTING: New file.
Merging from mcvs-1-0-branch. * code/mcvs-main.lisp (*usage*): Describe export and watch commands. (*watch-options*): New constant. (*mcvs-command-table*): New entry for watch command. * code/watch.lisp: New file.
* code/mcvs-main.lisp (*watch-options*): New constant. (*mcvs-command-table*): New entry for watch command. * code/watch.lisp: New file.
Found some old uncommited sources dating back to 2002-03-20, which appear to make progress in mcvs-convert. I'm stuffing them into this branch. * tree-map.lisp: New file. (tree-mapcar, tree-mapcan): New functions. * rcs-utils.lisp (rcs-file): Struct extended with some new slots. (rcs-extract-id-or-sym): Convert a version number to a vector, and store this as the lexeme slot of the token. (rcs-make-delta-hash): Construct the hash over the version slot rather than the next slot of each delta node. (rcs-make-sym-rev-hash): New function, to create new kind of hash. (rcs-parse): Make the new type of hash too, and add it to the rcs-file struct. (cvs-branch-number): New function. (rcs-build-version-tree, rcs-condense-version-tree, rcs-build-tag-tree, rcs-composite-tag-trees): New functions. * MCVS/MAP: File is being upgraded to new format.
Rethink some decisions in the previous change. Reusing the name posix.lisp for a new file will cause problems for people using mcvs grab to keep up with Meta-CVS patches. * code/posix.lisp: Renamed to unix.lisp. * code/clisp-posix.lisp: Renamed back to clisp-unix.lisp, for the sake of consistency. * code/system.lisp: Updated. * code/cmucl.lisp: Likewise.
Minor reorganization. * posix.lisp: File renamed to paths.lisp, module renamed to "paths". (*editor*): Variable removed. (arglist-to-command-string, execute-programs-xargs, invoke-editor-on): Functions removed. * posix.lisp: New file. (*editor*): Variable moved here from paths.lisp. (arglist-to-command-string, invoke-editor-on): Functions moved here from paths.lisp. * editor.lisp: New file. (*argument-limit*): Variable definition moved here. (execute-programs-xargs): Function moved here from paths.lisp. * clisp-unix.lisp: Renamed to clisp-posix.lisp. Requires "posix" module now. (*argument-limit*): Variable removed. * system.lisp: Remove references to old clisp-linux module. Added requires for new paths and execute modules. * cmucl-unix.lisp (*argument-limit*): Variable definition removed.
* code/clisp-linux.lisp: File removed.
Removing code/clisp-link script.
Fix installation braindamage. The problem is that the linkkit material is architecture specific; it was wrong to copy that from CLISP. * code/install.sh (CLISP_PATH, CLISP_ROOT, CLISP_LIB): New variables, dynamically computed from clisp's location. The script now runs the clisp-link under $CLISP_LIB rather than using a replica, and uses $CLISP_LIB/linkkit rather than a replica linkkit. (CLISP): Variable renamed to LISPRUN. * code/clisp-link: File removed. * code/linkkit/modules.d: Likewise. * code/linkkit/modules.c: Likewise. * code/linkkit/clisp.h: Likewise.
Make code/clisp-link executable.
Setting the execute permission property on shell scripts.
New prop command for manipulating property lists. * code/mcvs-main.lisp (*prop-options*): New constant. (*mcvs-command-table*): New entry. (*usage*): Update. * code/mapping.lisp (mapping-entry-parse-plist): Just unconditionally set execute slot based on :exec property. * code/prop.lisp: New file.
Okay, taking the plunge to use the new map format.
Retargetting CVS with new system call bindings that are not GNU/Linux specific.
New scripts for building LaTeX document. These do the right thing to minimize the number of times latex is run. Make proved useless. * docs/generate.sh: New file. * docs/cleanup.sh: New file.
Adding documentation, rearranging directory structure.
* purge.lisp (mcvs-purge): Factor out code for computing deleted files. * mapping.lisp (mapping-removed-files): New function, contains code factored from mcvs-purge. * restore.lisp: New file. (mcvs-restore, mcvs-restore-wrapper): New functions.
Adding purge command. * mcvs-main.lisp (*purge-options*): New constant. (*mcvs-command-table*): New entry. (*usage*): Update. * purge.lisp: New file. (mcvs-purge, mcvs-purge-wrapper): New functions.
Adding some cool code: a multi-hash datatype which implements multi-dimensional sparse arrays using a tree of hash tables, and a function memoizer which uses multi hash to index on function arguments. * multi-hash.lisp (multi-hash): New class. (initialize-instance): New method on multi-hash. (multi-hash-common-code): New macro. (get-multi-hash, set-multi-hash): New functions. * memoize.lisp (define-memoized-function, memoized-labels): New macros. (remove-key-aux-rest strip-lambda-list, extract-tests, remove-tests, memoize-expander): New functions. * seqfuncs.lisp (lcs-list): Function is now correctly memoized using define-memoized-function.
New feature: grab command. Takes snapshot of code and imports it to a branch, trying to determine which of the added and removed files are actually moves. * grab.lisp: New file. (read-word-hash, word-hash-file, correlate, added-removed, move-candidates, mcvs-grab, mcvs-grab-wrapper): New functions. * mcvs-main.lisp (*grab-options*): New constant. (*mcvs-command-table*): New entry. (*usage*): New text. * checkout.lisp (mcvs-checkout): Write out MAP-LOCAL even if :no-generate t is specified.
The ``import'' command is renamed to ``create''. * mcvs.main (*create-options*): Renamed to *import-options*. (*mcvs-command-table*): Updated. (*usage*): Updated. * import.lisp: File renamed to create.lisp. (mcvs-import): Renamed to mcvs-create; some arguments renamed. (mcvs-import-wrapper): Renamed to mcvs-create-wrapper. * README: Updated.
Adding mcvs remap command. * dirwalk.lisp (dirwalk-fi, dirwalk, for-each-file-info): Default behavior is now preorder (visit directory before its entries). A keyword is provided to select the old postorder behavior. A catch is provided in dirwalk-fi that allows the caller to skip processing the currently traversed directory. The for-each-* macros provide a local function called (skip) to do this. (delete-recursive): This function depends on postorder behavior in for-each-file-info, so it explicitly selects it now. * mcvs.lisp (*remap-options*): New constant. (*mcvs-command-table*): Add entry for new function. (*usage*): Describes new function. * remap.lisp: New file. (mcvs-remap, mcvs-remap-wrapper): New functions.
Porting to CMUCL. * system.lisp: Conditionally load new module cmucl-unix. * mapping.lisp (mapping-dupe-check, mapping-write, mapping-difference): Fixes related to sort function; we were relying on CLISP's preservation of the cons cell order. * cmucl-unix.lisp: New file.
First cut at implementing more automated branching and merging. * mcvs-main.lisp (*branch-options*, *merge-options*): New constants. (*mcvs-command-table*): New entries for branch and merge commands. (*usage*): New help text. * branch.lisp: New file. (*branch-char*): New constant. (tags-from-cvs-log, what-branch-are-we-on, branch-tag-check, mcvs-branch, mcvs-branch-wrapper, cvs-make-or-advance-tag, mcvs-merge, mcvs-merge-wrapper): New functions.
* rcsparse.lisp: File renamed to rcs-utils.lisp. (rcs-delta): New slot, delta-hash. (rcs-make-delta-hash): New function. (rcs-parse): Calls rcs-make-delta-hash to set up new slot. * convert.lisp: require changed to match file rename.
Some new macros for slot access. * slot-refs.lisp: New file. (with-slot-refs): New macro. (with-multi-slot-refs): New macro. * rcsparse.lisp (rcs-parse-newphrases, rcs-parse-admin, rcs-parse-delta): Replace uses of symbol-macrolet by with-slot-refs and with-multi-slot-refs.
* posix.lisp (parse-posix-namestring): New function. Converts POSIX path to CL Path object. * rcsparse.lisp: New file (rcs-admin, rcs-file, rcs-token, rcs-token-stream): New structs. (rcs-peek-token, rcs-read-token): New generic functions. (rcs-extract-id-sym-or-num, rcs-extract-string, rcs-match-optional, rcs-match-token, rcs-parse, rcs-parse-admin, rcs-special-p): New functions. * convert.lisp (classify-tags): Work with association list rather than raw strings. (mcvs-convert): Use rcs-parse to extract tags. Fix call to mapping-generate name. Use parse-posix-namestring when opening version file. Generate informative chatter.
* find-bind.lisp: New file. (find-bind-extract-vals): New function. (find-bind): New macro. * error.lisp (restart-destructure): Macro removed. (mcvs-error-handler): Uses generic find-bind instead of restart-destructure.
Commit is handled through mcvs-generic, so it can take filename arguments, and honor --nometa. * commit.lisp: File removed. (mcvs-commit): Function removed. (mcvs-commit-wrapper): Moved to generic.lisp. * generic.lisp (mcvs-commit-wrapper): Moved from commit.lisp, changed to invoke mcvs-generic. (mcvs-generic): Only add TYPES file to list if it actually exists.
* 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.
Support for filetypes in import. * posix.lisp (suffix): Separator character parameter is optional; multiple occurences of character lead to one big suffix like ".tar.gz" instead of ".gz". A leading dot means it's not a suffix but a hidden file like ".exrc". (edit-file): New function, brings up text editor for specified file. * clisp-linux.lisp (env-lookup): New function for environment variable lookup. * types.lisp: New source file. (*mcvs-types-name*, *mcvs-types*): New constants for TYPES filename. (types-read, types-write, types-sanity-check, types-to-import-wrapper-args): New functions. * import.lisp (*types-comments*): New constant. (mcvs-import): Restructured to build up list of file suffixes, allow the user to edit the file which determines how they are treated, filter out ignored files and pass -W options to cvs import to handle the rest. Failed cvs import is turned into restartable condition. * mapping.lisp (mapping-generate-name): Takes a suffix parameter. The F-files now carry a suffix obtained from the original file, because I have concluded that this was the only reasonable way to integrate with CVS.
Added a much improved error handling routine in anticipation of better use of restarts. * error.lisp: New file (restart-destructure): New macro. (*mcvs-error-treatment*): Special variable, moved here from mcvs-main. (mcvs-error-handler): New function. * mcvs-main.lisp (mcvs-top-error-handler): Function removed. (mcvs-execute): Bind error to new mcvs-error-handler instad of mcvs-top-error-handler.
* convert.lisp: New file. Contains conversion utility to make an Meta-CVS repository from an ordinary CVS repository, while preserving all history, tags and branches. (remove-attic-component, classify-tags, read-tags, mcvs-convert): New functions. * posix.lisp (suffix): New function. Computes suffix of file. (execute-program-xargs): New optional parameter, for specifying fixed part added at the end of each generated command line. * mapping.lisp (*mcvs-map-name*, *mcvs-local-map-name*): New constants. (*mcvs-map*, *mcvs-map-local*): Redefined in terms of new constants. (mapping-generate-name): New key parameter no-dir for not adding the directory prefix.
Map sorting order is changing.
Added tag command. * diff.lisp: File renamed to generic.lisp. (mcvs-diff): Function renamed to mcvs-generic. * generic.lisp (mcvs-generic): Function no longer dedicated to diffing only; takes CVS command to execute as an argument, also takes arguments and files as separate lists. (mcvs-diff-wrapper): Modified to invoke mcvs-generic properly. (mcvs-tag-wrapper): New function, uses mcvs-generic to implement tag command. * mcvs-main.lisp (*tag-options*): New constant. (*mcvs-command-table*): New entry for tag command.
MCVS is being renamed to Meta-CVS.
Bugfix for mcvs add -R.
Adding release notes file.
Added mcvs filt command to decode F- names in text streams.
Adding TODO list.
Forgot to add this.
Adding README file with instructions.
Lots of wording changes and clarifications.
Adding README file which contains a ``paper'' about MCVS.
Adding GNU License.
Adding simple installer.
Renaming mcvs.lisp to mcvs-main.lisp.
Moving closer toward delivery.
A bit of refactoring. Added mcvs-move.
Adding mcvs-remove operation.
Adding all existing source files.
MCVS is about to become self-hosting.
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|