summaryrefslogtreecommitdiff
path: root/src.1
diff options
context:
space:
mode:
Diffstat (limited to 'src.1')
-rw-r--r--src.1311
1 files changed, 311 insertions, 0 deletions
diff --git a/src.1 b/src.1
new file mode 100644
index 0000000..ed4b30a
--- /dev/null
+++ b/src.1
@@ -0,0 +1,311 @@
+'\" t
+.\" Title: src
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
+.\" Date: 10/28/2018
+.\" Manual: \ \&
+.\" Source: \ \&
+.\" Language: English
+.\"
+.TH "SRC" "1" "10/28/2018" "\ \&" "\ \&"
+.\" -----------------------------------------------------------------
+.\" * Define some portability stuff
+.\" -----------------------------------------------------------------
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" http://bugs.debian.org/507673
+.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.ie \n(.g .ds Aq \(aq
+.el .ds Aq '
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
+.\" disable hyphenation
+.nh
+.\" disable justification (adjust text to left margin only)
+.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.SH "NAME"
+src \- simple revision control
+.SH "SYNOPSIS"
+.sp
+\fBsrc\fR [command] [revision\-spec] [\fIfile\fR\&...]
+.SH "DESCRIPTION"
+.sp
+SRC (or src) is simple revision control, a version\-control system for single\-file projects by solo developers and authors\&. It modernizes the venerable RCS, hence the anagrammatic acronym\&. The design is tuned for use cases like all those little scripts in your "~/bin" directory, or a directory full of single\-file HOWTOs\&.
+.sp
+SRC revision histories are single, human\-readable files beneath a hidden "\&.src" subdirectory in the directory where they live\&. There may be multiple histories under one directory; SRC treats them as separate projects, and history files can be moved elsewhere at any time\&.
+.sp
+SRC gives you simple, consecutive integer revision numbers\&. It supports tags and branching\&. It does not show committer information, because the committer is always you\&. The command set is intended to look familiar if you have ever used Subversion, Mercurial, or Git\&.
+.sp
+SRC interprets the EDITOR variable in the usual way, using it to spawn an editor instance when you perform a commit or amend\&.
+.sp
+SRC is fully supported in Emacs VC mode\&.
+.SH "COMMAND SUMMARY"
+.sp
+A "revision" is a 1\-origin integer, or a tag name designating an integer revision, or a branch name designating the tip revision of its branch\&. Revision numbers always increase in commit\-date order\&.
+.sp
+A revision range is a single revision, or a pair of revisions "M\-N" (all revisions numerically from M to N) or "M\&.\&.N" (all revisions that are branch ancestors of N and branch successors of M)\&.
+.sp
+If SRC complains that your revision spec looks like a nonexistent filename, you can prefix it with "@" (this is always allowed)\&. "@" by itself means the current (checked\-out) revision\&.
+.sp
+Unless otherwise noted under individual commands, the default revision is the tip revision on the current branch and the default range is all revisions on the current branch\&.
+.sp
+The token "\-\-" tells the command\-line interpreter that subcommands, switches, and revision\-specs are done \- everything after it is a filename, even if it looks like a subcommand or revision number\&.
+.PP
+src help [\fIcommand\fR]
+.RS 4
+Displays help for commands\&.
+.RE
+.PP
+src commit [\-|\-m \fIstring\fR|\-f \fIfile\fR|\-e] [\fIfile\fR\&...]
+.RS 4
+Enters a commit for specified files\&. Separately to each one\&. A history is created for the file if it does not already exist\&. With
+\fI\-\fR, take comment text from stdin; with
+\fI\-m\fR
+use the following string as the comment; with
+\fI\-f\fR
+take from a file\&. With
+\fI\-e\fR, edit even after
+\fI\-\fR,
+\fI\-f\fR
+or
+\fI\-m\fR\&. "ci" is a synonym for "commit"\&.
+.RE
+.PP
+src amend [\-|\-m \fIstring\fR|\-f \fIfile\fR|\-e] [\fIrevision\fR] [\fIfile\fR\&...]
+.RS 4
+Amends the stored comment for a specified revision, defaulting to the latest revision on the current branch\&. Flags are as for commit\&. "am" is a synonym for "amend"\&.
+.RE
+.PP
+src checkout [\fIrevision\fR] [\fIfile\fR\&...]
+.RS 4
+Refresh the working copy of the file(s) from their history files\&. "co" is a synonym for "checkout"\&.
+.RE
+.PP
+src cat [\fIrevision\fR] [\fIfile\fR\&...]
+.RS 4
+Send the specified revision of the files to standard output\&.
+.RE
+.PP
+src status [\-a] [\fIfile\fR\&...]
+.RS 4
+"A" = added, "=" = unmodified, "M" = modified, "!" = missing, "?" = not tracked, "I" = ignored, "L" = locked (recover with "src checkout")\&. The "A" and "L" statuses should only occur if you have used RCS directly on a file\&. Normally "?" and "I" files are not listed; this changes if you either give the
+\fI\-a\fR
+switch or specify which files to look at\&. "st" is a synonym for "status"\&.
+.RE
+.PP
+src tag [list|\-l|create|\-c|delete|del|\-d] [\fIname\fR] [\fIrevision\fR] [\fIfile\fR\&...]
+.RS 4
+List tags, create tags, or delete tags\&. Create/delete takes a revision, defaulting to the current branch tip\&. List to all revisions\&.
+.RE
+.PP
+src branch [list|\-l|create|\-c|delete|del|\-d] [\fIname\fR] [\fIfile\fR\&...]
+.RS 4
+List, create, or delete branches\&. When listing, the active branch is first in the list\&. The default branch is "trunk"\&. Create/delete takes a singleton revision, defaulting to the current branch tip\&. List defaults to all revisions, including 0 (the trunk root phantom revision)\&.
+.RE
+.PP
+src rename [\fItag\fR|\fIbranch\fR] [\fIoldname\fR] [\fInewname\fR] [\fIfile\fR\&...]
+.RS 4
+Rename a tag or branch\&. Refuses to step on an existing symbol or rename a nonexistent one\&. "rn" is a synonym for "rename"\&.
+.RE
+.PP
+src list [(\-<n>|\-l <n>)] [\-f \fIfmt\fR] [\fIrevision\-range\fR] [\fIfile\fR\&...]
+.RS 4
+Sends summary information about the specified commits to standard output\&. The summary line tagged with "*" is the state that the file would return to on checkout without a revision\-spec\&. See
+\fIhelp list\fR
+for information about custom formats\&. Use
+\fI\-<n>\fR
+or
+\fI\-l <n>\fR, where <n> is a number, to limit the listing length\&. Default range is the current branch, reversed\&. "li" is a synonym for "list"\&.
+.RE
+.PP
+src log [\-v] [(\-<n>|\-l <n>)] [(\-p|\-u|\-c) [\-b|\-w]] [\fIrevision\-range\fR] [\fIfile\fR\&...]
+.RS 4
+Sends log information about the specified commits to standard output\&. Use
+\fI\-<n>\fR
+or
+\fI\-l <n>\fR, where <n> is a number, to limit the listing length\&. Default range is the current branch, reversed\&. The
+\fI\-\-patch\fR,
+\fI\-p\fR
+or
+\fI\-u\fR
+option additionally sends a unified format diff listing to standard output for each revision against its immediate ancestor revision;
+\fI\-c\fR
+emits a context diff instead\&. When generating a diff,
+\fI\-b\fR
+ignores changes in whitespace, and
+\fI\-w\fR
+ignores all whitespace\&. Histories imported via
+\fIfast\-import\fR
+(when not using its
+\fI\-p\fR
+option) have RFC\-822\-style headers inserted into the log comment to preserve metadata not otherwise representable in SRC, such as distinct author and committer identifications and dates\&. These headers are normally suppressed by
+\fIlog\fR, however,
+\fI\-v\fR
+shows a summarized view of important headers;
+\fI\-v \-v\fR
+shows all headers as\-is\&.
+.RE
+.PP
+src diff [(\-u|\-c) [\-b|\-w]] [\fIrevision\-range\fR] [\fIfile\fR\&...]
+.RS 4
+Sends a diff listing to standard output\&. With no revision spec, diffs the working copy against the last version checked in\&. With one revno, diffs the working copy against that stored revision; with a range, diff between the beginning and end of the range\&. The actual difference generation is done with diff(1)\&. The default diff format is
+\fI\-u\fR
+(unified), but if you specify a
+\fI\-c\fR
+option after the verb a context diff will be emitted\&.
+\fI\-b\fR
+ignores changes in the amount of whitespace, and
+\fI\-w\fR
+ignores all whitespace\&. "di" is a synonym for "diff"\&.
+.RE
+.PP
+src ls
+.RS 4
+List all registered files\&.
+.RE
+.PP
+src visualize
+.RS 4
+Emit a DOT visualization of repository structures\&. To use this, install the graphviz package and pipe the output to something like "dot \-Tpng | display \-"\&. "vis" is a synonym for "visualize"\&.
+.RE
+.PP
+src move \fIold\fR \fInew\fR
+.RS 4
+Rename a workfile and its history\&. Refuses to step on existing workfiles or histories\&. "mv" is a synonym for "move"\&.
+.RE
+.PP
+src copy \fIold\fR \fInew\fR
+.RS 4
+Copy a file and its master\&. Refuses to step on existing files or masters\&. "cp" is a synonym for "copy"\&.
+.RE
+.PP
+src fast\-export [\fIrevision\-range\fR] [\fIfile\fR\&...]
+.RS 4
+Export one or more projects as a Git fast\-import stream\&. For a history originally imported from elsewhere, author and committer identification is gleaned from the RFC\-822\-style headers inserted into the commit comment by
+\fIfast\-import\fR
+(if its
+\fI\-p\fR
+option was not used)\&. Otherwise, this information is copied from your Git configuration\&.
+.RE
+.PP
+src fast\-import [\-p] [\fIfiles\fR\&...]
+.RS 4
+Parse a git\-fast\-import stream from standard input\&. The modifications for each individual file become separate SRC histories\&. Mark, committer and author data, and mark cross\-references to parent commits, are preserved in RFC\-822\-style headers on log comments unless the
+\fI\-p\fR
+(plain) option is given, in which case this metadata is discarded\&. Give arguments to restrict the files imported\&.
+.RE
+.PP
+src release [\fIfile\fR\&...]
+.RS 4
+Release locks on files\&. This is never necessary in a normal workflow, which will be repeated edit\-commit cycles, but it may be handy if you have to interoperate with other tools that expect RCS masters to be in their normal (unlocked) state\&.
+.RE
+.PP
+src version
+.RS 4
+Report the versions of SRC, the underlying Python, and the back end\&.
+.RE
+.sp
+The omission of "src remove" is a deliberate speed bump\&.
+.sp
+If no files are specified, all eligible files are operated on in sequence\&.
+.SH "NOISE CONTROL"
+.sp
+Silence is golden\&. When you have selected only one file to operate on, and the command is not a report generator (\fIstatus\fR, \fIcat\fR, \fIlog\fR, \fIlist\fR, \fIfast\-export\fR, the listing modes of \fItag\fR and \fIbranch\fR, \fIls\fR) you will see a reply only if the operation failed\&.
+.sp
+Other commands (\fIcommit\fR, \fIcheckout\fR, tag creation and deletion) give you a success message per file when operating on multiple files, so you will not be in doubt about which operation succeeded\&. This behavior can be suppressed with the \fI\-q\fR option, placed \fIbefore\fR the subcommand word\&.
+.sp
+If your directory contains a file named "\&.srcignore", each line that is neither blank nor begins with a "#" is interpreted as an ignore pattern\&. It is expanded with glob(3), and files in the expansion are omitted from \fIsrc status\fR \- unless the file is named as an argument, of the status command, in which case its status is "I"\&. Thus, for example, a line reading "*\&.html" will cause all files with an HTML extension to be omitted from the output of "src status", but the output of \fIsrc status *\fR will list them with status "I"\&.
+.SH "BACKWARD COMPATIBILITY"
+.sp
+SRC history files are (normally) RCS master files\&. SRC maintains no permanent state other than these files\&.
+.sp
+SRC takes over the little\-used "description" field of RCS (and SCCS) master files to store some state that makes status checks faster\&. If you try to use SRC to edit a pre\-existing RCS\- or SCCS\-registered file with a non\-empty description field, SRC will refuse to step on the old description; you must clear it manually\&.
+.sp
+In order to maintain complete backwards compatibility, one other compromise was made: any commit comment containing a string exactly matching an RCS log delimiter (a long string of "\-" characters) will be rejected as malformed\&.
+.sp
+The RCS back end will be automatically selected when there is an "\&.src" or "RCS" subdirectory\&.
+.sp
+You can explicitly select the RCS back end by making the first command keyword on the src command line be \fIrcs\fR\&. This should only be necessary when your working directory contains two or more of the subdirectories "\&.src", "RCS", and "SCCS"\&.
+.sp
+By default, history files are kept in a hidden subdirectory named "\&.src"\&. But if you have an RCS subdirectory and no "\&.src", SRC will quietly operate on the files in the RCS directory in a completely backward\-compatible way\&.
+.SH "WORKING WITH SCCS"
+.sp
+Using SCCS as a back end is also supported, with some limits due to missing features in SCCS:
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+all commands relating to tags and branches throw an error\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+src cat does not necessarily pipe out binary data correctly\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+the exec bit is not propagated between master and workfile\&.
+.RE
+.sp
+The SCCS back end will be automatically selected when there is an "SCCS" subdirectory and no "\&.src" or "RCS" subdirectory\&.
+.sp
+You can explicitly select the SCCS back end by making the first command keyword on the src command line be \fIsccs\fR\&. This should only be necessary when your working directory contains none or two or more of the subdirectories "\&.src", "RCS", and "SCCS"\&.
+.sp
+Working with SCCS requires an "SCCS" subdirectory; SRC will quietly create one, if required, then operate on the files in the "SCCS" directory in a completely backward\-compatible way\&.
+.sp
+Fast\-import to SCCS is not supported\&.
+.sp
+The SCCS mode is not recommended unless you have a specific need to work with legacy SCCS repositories\&. Up\-converting them to something less Paleolithic would be a better idea; in truth, the SCCS support exists mainly because it\(cqs hilarious (for obscure hacker values of \fIhilarious\fR)\&.
+.SH "DEBUGGING OPTIONS"
+.sp
+These will be of interest mainly to developers\&.
+.sp
+A \fI\-d\fR (debug) option before the main command word turns on debugging messages\&. Just one "\-d" gives you complete visibility about what commands the back end is running\&. It can be repeated for higher debugging levels that expose more of src\(cqs internal computation\&.
+.sp
+A \fI\-S\fR (sandbox) option can be used to set the repository directory to something other than its default of "\&.src"\&.
+.sp
+A \fI\-T\fR option sets up an artificial clock that ticks once on each revision and fixes the user information to be used in \fIfast\-export\fR; It also attributes all commits to "J\&. Random Hacker"\&. It is for regression testing\&.
+.SH "REQUIREMENTS"
+.sp
+SRC is written in Python and requires 2\&.7 or later; it will run under Python 3\&.x\&.
+.sp
+If you wish to use the RCS support, the RCS tools at version 5\&.7 or later must be installed and accessible in your path\&.
+.sp
+If you wish to use the SCCS support, the CSSC (Compatibly Stupid Source Control) system must be installed and accessible in your path\&.
+.sp
+The rcs\-fast\-import(1) tool at version 1\&.0 or later is required to support the \fIsrc fast\-import\fR command\&.
+.sp
+src will die gracefully with a useful error message when it fails due to a missing back end\&.
+.SH "LIMITATIONS"
+.sp
+Branch deletions change the revision numbers of revisions downstream of the branch join\&. This behavior may change in a future release\&.
+.sp
+The SCCS backend has a Y2\&.1K problem that SRC cannot effectively work around and will probably not be fixed\&.
+.SH "REPORTING BUGS"
+.sp
+Report bugs to Eric S\&. Raymond <esr@thyrsus\&.com>\&. The project page is at http://catb\&.org/~esr/src
+.SH "SEE ALSO"
+.sp
+rcs(1), rcs\-fast\-import(1), sccs(1), svn(1), git(1), dot(1)\&.