'\" 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[]\&.