sbky is a Scheme implementation of Angel Ortega's minimalistic bky version control system. For more information about the principles behind bky, see the bky homepage.
sbky uses rsync(1) for transferring files and creating revisions. Each revision is stored as a complete copy of the working file tree, using hard links to save disk space.
sbky has no notion of "adding" or "removing" files to the set of versioned files in the working copy. All files that are not explicitly ignored are saved. To ignore specific files, .cvsignore files are used as in cvs(1), as rsync(1) directly supports this.
sbky [ -v | -h | -n ] COMMAND ARGUMENT ... -v show executed commands -h show help -n dry run - do not execute any commands
Shows a list of available commands.
Shows version of sbky program.
sbky init [ -b NAME | -m MSG ] ...
Creates a new repository. Optionally a branch-name and a commit message can be specified.
sbky commit [ -b NAME | -m MSG | -n | FILE1 ... ]
Commits the changes in the working copy by creating a new revision. Optionally a branch-name and commit message can be specified. If -n is given, then the last commit message is re-used. The alias ci may be also be used for this command.
sbky checkout -A | ID
Reverts the working copy to a particular revision or the current HEAD revision, if -A is given. bky calls this operation update.
sbky diff [ ID | -p ID | ID ID ]
Shows a diff between the working copy and a given revision, a given revision and its parent or two given revisions. If no revisions are given, then a diff between the last commit (HEAD) and the working copy is shown.
Lists modified or added files.
sbky log [ -l NUM | ID ]
Shows the log messages of each revision, starting with the most recent revision or the revision given. If the option -l is specified, then at most NUM log entries are shown.
sbky tag [ TAG ]
Creates a tag, a named symbolic link to a the current HEAD revision. If no tag name is specified, all existing tags are listed.
sbky branchname [ NAME ]
Sets the current branch-name of the repository. The branch-name has no particular purpose and is currently used for documentation only. If no branchname is given on the command-line, then the current branchname (if any( will be shown.
sbky pull [ REPO ]
Synchronizes the current repository with a remote repository at REPO, which may be any rsync(1) target. The current repository will be an exact copy of the remote after this operation.
sbky push [ REPO ]
Synchronizes a remote repository with the current repository. The remote repository will be an exact copy of the current after this operation.
sbky incoming [ REPO ]
Lists which files would be added or modified when pulling from REPO.
sbky outgoing [ REPO ]
Lists which files would be modified when pushing to REPO.
sbky export DIRECTORY
Exports the working copy files to a given directory, without any administrative files.
sbky patchset [ ID ]
Shows the log message and diff between the given revision and it's parent. If no revision is given, the most recent commit is taken.
sbky save [ DESTINATION ]
Creates a gzipped tar(1) archive of the current repository and stores it at DESTINATION, which may be a directory name or tar file name. If no destination is given, the archive will be created in the current directory.
sbky restore SOURCE
Synchronizes the current repository from a tarball at SOURCE (a directory or tar file name). This is equivalent to (and implemented as) unpacking the tarball in a temporary directory and pulling from it.
Angel Ortega, translated to Scheme by felix winkelmann
- fixed wrongly named library call
- added some safety checks
- fixed missing wiki page and link to bky
- Initial version
Copyright (c) 2007-2008, Felix L. Winkelmann All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of the author nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.