.\"
.\"
.\"     Licensed to the Apache Software Foundation (ASF) under one
.\"     or more contributor license agreements.  See the NOTICE file
.\"     distributed with this work for additional information
.\"     regarding copyright ownership.  The ASF licenses this file
.\"     to you under the Apache License, Version 2.0 (the
.\"     "License"); you may not use this file except in compliance
.\"     with the License.  You may obtain a copy of the License at
.\"    
.\"       http://www.apache.org/licenses/LICENSE-2.0
.\"    
.\"     Unless required by applicable law or agreed to in writing,
.\"     software distributed under the License is distributed on an
.\"     "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
.\"     KIND, either express or implied.  See the License for the
.\"     specific language governing permissions and limitations
.\"     under the License.
.\"
.\"
.\" You can view this file with:
.\" nroff -man [filename]
.\"
.TH svnadmin 1
.SH NAME
svnadmin \- Subversion repository administration tool
.SH SYNOPSIS
.TP
\fBsvnadmin\fP \fIcommand\fP \fI/path/to/repos\fP [\fIoptions\fP] [\fIargs\fP]
.SH OVERVIEW
Subversion is a version control system, which allows you to keep old
versions of files and directories (usually source code), keep a log of
who, when, and why changes occurred, etc., like CVS, RCS or SCCS.
\fBSubversion\fP keeps a single copy of the master sources.  This copy
is called the source ``repository''; it contains all the information
to permit extracting previous versions of those files at any time.

For more information about the Subversion project, visit 
http://subversion.apache.org.

Documentation for Subversion and its tools, including detailed usage
explanations of the \fBsvn\fP, \fBsvnadmin\fP, \fBsvnserve\fP and
\fBsvnlook\fP programs, historical background, philosophical 
approaches and reasonings, etc., can be found at 
http://svnbook.red-bean.com/.

Run `svnadmin help' to access the built-in tool documentation.
