'\" t .\" Title: repotool .\" Author: [see the "AUTHOR" section] .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 04/30/2016 .\" Manual: Development Tools .\" Source: repotool .\" Language: English .\" .TH "REPOTOOL" "1" "04/30/2016" "repotool" "Development Tools" .\" ----------------------------------------------------------------- .\" * 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" repotool \- query or manipulate a CVS, Subversion, git, bzr, hg, or darcs repository in a uniform way .SH "SYNOPSIS" .HP \w'\fBrepotool\fR\ 'u \fBrepotool\fR [\fIaction\fR] [\fIURL\-or\-dir\fR] .SH "DESCRIPTION" .PP repotool is a script wrapper around repository operations that differ by version\-control system\&. It is little use by itself, existing mainly to generate and simplify a conversion makefile usable with \fBreposurgeon\fR(1)\&. .PP Not all actions are supported on all systems\&. You will get an error message and a return value of 1 when attempting an unsupported action\&. .PP The "initialize" option takes a project name (and, optionally, following source and target VCCS types) and generates a Makefile that will sequence various steps of a repository conversion\&. It also generates stub lift and options files\&. This is meant to be run in an empty work directory, and it is an error to do \*(Aqinitialize\*(Aq where any of these files already exist\&. Afterwards, you will need to set some variables in the Makefile; read its header comment\&. .PP The \*(Aqexport\*(Aq action, run from within a repository directory, dumps a copy of a CVS, Subversion, git, bzr, hg, or darcs repository to a flat history file readable by reposurgeon\&. The format is usually a git\-fast\-import stream, except that Subversion repositories export as Subversion dump files; the point is to be a lossless erepresentation, or as close to one as possible\&. .PP The \*(Aqtags\*(Aq option, run from within a repository directory, returns a list of the repository\*(Aqs release tags\&. .PP The \*(Aqbranches\*(Aq option, run from within a repository directory , returns a list of the repository\*(Aqs branch names\&. .PP The \*(Aqcheckout\*(Aq option checks out a working copy of the repository\&. It must be called from within the repository\&. It takes one required argument \- the checkout directory location\&. It may take a following optional argument which is a tag or revision specification; if this argument is not given, the tip (most recent) mainline revision is assumed\&. .PP The \*(Aqcompare\*(Aq action takes two repository directories and a revision spec (typically a tag name)\&. If the revision spec is omitted, the tip of the main line of both repositories will be used\&. The selected revisions are cpmpared with diff \-q \-r, with noise due to SCCS/RCS/CVS keyword expansion ignored\&. You can follow the command verb with one or more \-x options followed by basenames of paths to exclude from comparison\&. You can get a context\-diff report on file differences with the \-u option\&. .PP The \*(Aqcompare\-tags\*(Aq action takes two repository directories, extracts a list of tags from the first, then compares the repository contents at each tag in the list, generating a compare report for each\&. You can follow the command verb with one or more \-x options followed by basenames of paths to exclude from comparison\&. You can get a context\-diff report on file differences with the \-u option\&. .PP The \*(Aqcompare\-branches\*(Aq action takes two repository directories, extracts a list of branches common to both, then compares the repository contents at each branch in the list, generating a compare report for each\&. You can follow the command verb with one or more \-x options followed by basenames of paths to exclude from comparison\&. You can get a context\-diff report on file differences with the \-u option\&. .PP The \*(Aqcompare\-all\*(Aq action takes two repository directories, and runs all 3 above compare actions on them\&. Even if the same name is a tag in one repository and a branch in the other, it will compare them against each other\&. Not distinguishing them is useful as CVS tags that are not applied to every file in the repository may get converted to branches\&. The options are the same as \*(Aqcompare\-tags\*(Aq\&. .PP The \*(Aqmirror\*(Aq action makes or updates a local mirror of a Subversion or CVS repo\&. It requires a single argument, either a Subversion URL or a CVS URL, or the name of a local mirror directory created by a previous run\&. The first form creates a local mirror of the repository in a directory named after the last segment of the URL, with the suffix \(lq\-mirror\(rq (the local mirror name can be overridden by an optional) second argument\&. The second form updates the local mirror, doing an incremental fetch; just give the mirror directory name\&. .PP Subversion URLs are as specified in the public documentation for Subversion\&. CVS URLs must specify a host and repository path, followed by a \*(Aq#\*(Aq, followed by a module name\&. .SH "ENVIRONMENT VARIABLES" .PP This program uses the $TMPDIR environment variable, defaulting to /tmp if it is not set\&. .SH "REQUIREMENTS" .PP The export action is a wrapper around either native export facilities or the following engines: \fBcvs-fast-export\fR(1) (for CVS), \fBsvnadmin\fR(1) (for SVN), \fBhg-fast-export.py\fR(1) (for hg)\&. You must have the appropriate engine in your $PATH for whatever kind of repository you are streaming\&. .SH "SEE ALSO" .PP \fBreposurgeon\fR(1)\&. .SH "AUTHOR" .PP Eric S\&. Raymond \&. This tool is distributed with reposurgeon; see the project page at \m[blue]\fBhttp://www\&.catb\&.org/~esr/reposurgeon\fR\m[]\&.