SYNOPSIS
repotool 'command' [-d | -q | -v] [args…]
DESCRIPTION
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:
Unresolved directive in repotool.adoc - include::toolcommands.inc[]
There is one special checkout option:
- -o
-
Pass the following option through to the underlying checkout command. Can be used, for example, to pass in Subversion’s --ignore-externals option.
The compare operation accepts the following options:
- -n
-
Subversion-only. Passed to the individual checkout commands which means that in cases where it makes sense the complete repository will be checked out as a flat one, treating branch and tag namespaces as simple directories.
- -a
-
Subversion-only. Use an empty directory as the checkout if the requested branch or tag cannot be found, instead of erroring out without any comparison. This is useful when if the other repository uses empty content for deleted refs.
- -u
-
Emit unified diff (default).
- -c
-
Emit context diff.
- -q
-
Suppress nonfatal errors and progress spinners. The progress sinner is also suppressed when output is redirected to a file or pipe.
- -s
-
List matching files.
- -i
-
Perform comparison of normally ignored dot directories
In older versions of this tool, the "initmake" command was named "initialize". It was renamed in order to avoid confusion with the "init" command in various version-control systems.
ENVIRONMENT VARIABLES
This program uses the $TMPDIR environment variable, defaulting to '/tmp' if it is not set, to set where checkouts for repository comparisons are done.
When mirroring a CVS or Subversion repository that has password authentication, set the environment variables RUSERNAME and RPASSWORD before calling repotool to pass in the credentials.
RETURN VALUES
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.
BUGS
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".
There is no support for RCS or SCCS collections.
REQUIREMENTS
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
reposurgeon(1).
AUTHOR
Eric S. Raymond <esr@thyrsus.com>. This tool is distributed with reposurgeon; see the project page.