REPOTOOL(1) | REPOTOOL(1) |
repotool - operate on a CVS, SVN, git, bzr, hg, or darcs repository in a uniform way
repotool 'command' [-d | -q | -v] [args...]
repotool is a 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 reposurgeon(1).
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.
With the -v option, report the commands executed just before they are run. With the -q option, only fatal errors are printed instead of non-fatal gripes. The -q and -v options also disable each other and only the last one will take effect.
With the -d option, change to a specified directory before performing whatever operation was selected. If the directory doesn’t exist or can’t be searched into, that’s a fatal error.
The following subcommands are available:
initialize
export
mirror
Subversion URLs are as specified in the public documentation for Subversion. CVS URLs must specify a host and repository path, followed by a '#', followed by a module name. URLs for git and hg should be in the form normally used for clone commands. Alternatively, a repository URL may be a "file://" URL, in which case the repository type is autodetected from the contents of the indicated directory. Note: A Subversion file URL has three slashes after the "file:" prefix!
The mirror command can also be passed an rsync URL. This will usually be faster than mirroring through an equivalent Subversion URL.
branches
checkout
compare
compare-tags
compare-branches
compare-all
version
help
There is one special checkout option:
-o
The compare operation accepts the following options:
-n
-a
-u
-c
-q
-s
-i
This program uses the $TMPDIR environment variable, defaulting to '/tmp' if it is not set, to set where checkouts for repository comparisons are done.
1 on invalid arguments or if a command called by the script failed, 0 otherwise. A return value of 0 on a compare operation does not necessarily indicate a clean comparison; only empty output does that.
CVS repositories have an unnamed default branch. This is not listed by "repotool branches"; if there are no named branches the output is empty.
When a Subversion file is part of a mismatch, the displayed filename is missing its trunk/tag/branch location, which must be inferred from the way the comparison is invoked.
Tag comparisons with git will not cope well with a branch name containing the string "detached".
Due to extreme slowness of the Subversion checkout operation, the compare head, tag, and branch modes assume that if one of the directories is a Subversion checkout you have done a full checkout of HEAD before calling this tool; thus no svn update operation is required unless you give an -r option. Spurious errors will be reported if the directory is not a full checkout of HEAD. To avoid this optimization and force updating, do "-r HEAD".
The export action is a wrapper around either native export facilities or the following engines: cvs-fast-export(1) (for CVS), svnadmin(1) (for SVN), reposurgeon itself (for hg). You must have the appropriate engine in your $PATH for whatever kind of repository you are streaming.
[[see_also]] == SEE ALSO ==
Eric S. Raymond <esr@thyrsus.com>. This tool is distributed with reposurgeon; see the project <http://www.catb.org/~esr/reposurgeon> page" .
2023-04-09 |