17.1.1 nws docs

This commit is contained in:
mjames-upc 2017-08-28 11:33:02 -06:00
parent bc15976351
commit 0185cf560b
284 changed files with 78354 additions and 0 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,108 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>svnadmin list-unused-dblogs</title>
<link rel="stylesheet" href="styles.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2" />
<style type="text/css">
body { background-image: url('images/draft.png');
background-repeat: no-repeat;
background-position: top left;
/* The following properties make the watermark "fixed" on the page. */
/* I think that's just a bit too distracting for the reader... */
/* background-attachment: fixed; */
/* background-position: center center; */
}</style>
<link rel="home" href="index.html" title="Version Control with Subversion [DRAFT]" />
<link rel="up" href="svn.ref.svnadmin.html#svn.ref.svnadmin.c" title="svnadmin Subcommands" />
<link rel="prev" href="svn.ref.svnadmin.c.list-dblogs.html" title="svnadmin list-dblogs" />
<link rel="next" href="svn.ref.svnadmin.c.load.html" title="svnadmin load" />
</head>
<body>
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
<th colspan="3" align="center">svnadmin list-unused-dblogs</th>
</tr>
<tr>
<td width="20%" align="left"><a accesskey="p" href="svn.ref.svnadmin.c.list-dblogs.html">Prev</a> </td>
<th width="60%" align="center">svnadmin Subcommands</th>
<td width="20%" align="right"> <a accesskey="n" href="svn.ref.svnadmin.c.load.html">Next</a></td>
</tr>
</table>
<hr />
</div>
<div class="refentry" title="svnadmin list-unused-dblogs">
<a id="svn.ref.svnadmin.c.list-unused-dblogs"></a>
<div class="titlepage"></div>
<a id="idp43727536" class="indexterm"></a>
<div class="refnamediv">
<h2>Name</h2>
<p>svnadmin list-unused-dblogs — Ask Berkeley DB which logfiles can be safely
deleted (applies only to repositories using the
<code class="literal">bdb</code> backend).</p>
</div>
<div class="refsect1" title="Synopsis">
<a id="idp43731424"></a>
<h2>Synopsis</h2>
<p>
<code class="literal">svnadmin list-unused-dblogs REPOS_PATH</code>
</p>
</div>
<div class="refsect1" title="Description">
<a id="idp43733056"></a>
<h2>Description</h2>
<p>Berkeley DB creates logs of all changes to the
repository, which allow it to recover in the face of
catastrophe. Unless you enable
<code class="literal">DB_LOG_AUTOREMOVE</code>, the logfiles
accumulate, although most are no longer used and can be
deleted to reclaim disk space. See <a class="xref" href="svn.reposadmin.maint.html#svn.reposadmin.maint.diskspace" title="Managing Disk Space">the section called “Managing Disk Space”</a> for more
information.</p>
</div>
<div class="refsect1" title="Examples">
<a id="idp43735984"></a>
<h2>Examples</h2>
<p>Remove all unused logfiles from the repository:</p>
<div class="informalexample">
<pre class="screen">
$ svnadmin list-unused-dblogs /var/svn/repos
/var/svn/repos/log.0000000031
/var/svn/repos/log.0000000032
/var/svn/repos/log.0000000033
$ svnadmin list-unused-dblogs /var/svn/repos | xargs rm
## disk space reclaimed!
</pre>
</div>
</div>
</div>
<div class="navfooter">
<hr />
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left"><a accesskey="p" href="svn.ref.svnadmin.c.list-dblogs.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="svn.ref.svnadmin.html#svn.ref.svnadmin.c">Up</a>
</td>
<td width="40%" align="right"> <a accesskey="n" href="svn.ref.svnadmin.c.load.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">svnadmin list-dblogs </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
<td width="40%" align="right" valign="top"> svnadmin load</td>
</tr>
</table>
</div>
<div xmlns="" id="svn-footer">
<hr />
<p>You are reading <em>Version Control with Subversion</em> (for Subversion 1.7), by Ben Collins-Sussman, Brian W. Fitzpatrick, and C. Michael Pilato.<br />
This work is licensed under the <a href="http://creativecommons.org/licenses/by/2.0/">Creative Commons Attribution License v2.0</a>.<br />
To submit comments, corrections, or other contributions to the text, please visit <a href="http://www.svnbook.com/">http://www.svnbook.com/</a>.</p>
</div>
</body>
</html>

View file

@ -0,0 +1,110 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>svnlook propget</title>
<link rel="stylesheet" href="styles.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2" />
<style type="text/css">
body { background-image: url('images/draft.png');
background-repeat: no-repeat;
background-position: top left;
/* The following properties make the watermark "fixed" on the page. */
/* I think that's just a bit too distracting for the reader... */
/* background-attachment: fixed; */
/* background-position: center center; */
}</style>
<link rel="home" href="index.html" title="Version Control with Subversion [DRAFT]" />
<link rel="up" href="svn.ref.svnlook.html#svn.ref.svnlook.c" title="svnlook Subcommands" />
<link rel="prev" href="svn.ref.svnlook.c.log.html" title="svnlook log" />
<link rel="next" href="svn.ref.svnlook.c.proplist.html" title="svnlook proplist" />
</head>
<body>
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
<th colspan="3" align="center">svnlook propget</th>
</tr>
<tr>
<td width="20%" align="left"><a accesskey="p" href="svn.ref.svnlook.c.log.html">Prev</a> </td>
<th width="60%" align="center">svnlook Subcommands</th>
<td width="20%" align="right"> <a accesskey="n" href="svn.ref.svnlook.c.proplist.html">Next</a></td>
</tr>
</table>
<hr />
</div>
<div class="refentry" title="svnlook propget">
<a id="svn.ref.svnlook.c.propget"></a>
<div class="titlepage"></div>
<a id="idp44119760" class="indexterm"></a>
<div class="refnamediv">
<h2>Name</h2>
<p>svnlook propget, pget, pg — Print the raw value of a property on a path in
the repository.</p>
</div>
<div class="refsect1" title="Synopsis">
<a id="idp44123744"></a>
<h2>Synopsis</h2>
<p>
<code class="literal">svnlook propget REPOS_PATH PROPNAME [PATH_IN_REPOS]</code>
</p>
</div>
<div class="refsect1" title="Description">
<a id="idp44125392"></a>
<h2>Description</h2>
<p>List the value of a property on a path in the
repository.</p>
</div>
<div class="refsect1" title="Options">
<a id="idp44126656"></a>
<h2>Options</h2>
<div class="informalexample">
<pre class="screen">
--revision (-r) REV
--revprop
--transaction (-t) TXN
</pre>
</div>
</div>
<div class="refsect1" title="Examples">
<a id="idp44128560"></a>
<h2>Examples</h2>
<p>This shows the value of the <span class="quote"><span class="quote">seasonings</span></span> property
on the file <code class="filename">/trunk/sandwich</code> in the
<code class="literal">HEAD</code> revision:</p>
<div class="informalexample">
<pre class="screen">
$ svnlook pg /var/svn/repos seasonings /trunk/sandwich
mustard
</pre>
</div>
</div>
</div>
<div class="navfooter">
<hr />
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left"><a accesskey="p" href="svn.ref.svnlook.c.log.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="svn.ref.svnlook.html#svn.ref.svnlook.c">Up</a>
</td>
<td width="40%" align="right"> <a accesskey="n" href="svn.ref.svnlook.c.proplist.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">svnlook log </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
<td width="40%" align="right" valign="top"> svnlook proplist</td>
</tr>
</table>
</div>
<div xmlns="" id="svn-footer">
<hr />
<p>You are reading <em>Version Control with Subversion</em> (for Subversion 1.7), by Ben Collins-Sussman, Brian W. Fitzpatrick, and C. Michael Pilato.<br />
This work is licensed under the <a href="http://creativecommons.org/licenses/by/2.0/">Creative Commons Attribution License v2.0</a>.<br />
To submit comments, corrections, or other contributions to the text, please visit <a href="http://www.svnbook.com/">http://www.svnbook.com/</a>.</p>
</div>
</body>
</html>

View file

@ -0,0 +1,113 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>svnadmin rmtxns</title>
<link rel="stylesheet" href="styles.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2" />
<style type="text/css">
body { background-image: url('images/draft.png');
background-repeat: no-repeat;
background-position: top left;
/* The following properties make the watermark "fixed" on the page. */
/* I think that's just a bit too distracting for the reader... */
/* background-attachment: fixed; */
/* background-position: center center; */
}</style>
<link rel="home" href="index.html" title="Version Control with Subversion [DRAFT]" />
<link rel="up" href="svn.ref.svnadmin.html#svn.ref.svnadmin.c" title="svnadmin Subcommands" />
<link rel="prev" href="svn.ref.svnadmin.c.rmlocks.html" title="svnadmin rmlocks" />
<link rel="next" href="svn.ref.svnadmin.c.setlog.html" title="svnadmin setlog" />
</head>
<body>
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
<th colspan="3" align="center">svnadmin rmtxns</th>
</tr>
<tr>
<td width="20%" align="left"><a accesskey="p" href="svn.ref.svnadmin.c.rmlocks.html">Prev</a> </td>
<th width="60%" align="center">svnadmin Subcommands</th>
<td width="20%" align="right"> <a accesskey="n" href="svn.ref.svnadmin.c.setlog.html">Next</a></td>
</tr>
</table>
<hr />
</div>
<div class="refentry" title="svnadmin rmtxns">
<a id="svn.ref.svnadmin.c.rmtxns"></a>
<div class="titlepage"></div>
<a id="idp43825024" class="indexterm"></a>
<div class="refnamediv">
<h2>Name</h2>
<p>svnadmin rmtxns — Delete transactions from a repository.</p>
</div>
<div class="refsect1" title="Synopsis">
<a id="idp43828112"></a>
<h2>Synopsis</h2>
<p>
<code class="literal">svnadmin rmtxns REPOS_PATH TXN_NAME...</code>
</p>
</div>
<div class="refsect1" title="Description">
<a id="idp43829744"></a>
<h2>Description</h2>
<p>Delete outstanding transactions from a repository.
This is covered in detail in <a class="xref" href="svn.reposadmin.maint.html#svn.reposadmin.maint.diskspace.deadtxns" title="Removing dead transactions">the section called “Removing dead transactions”</a>.</p>
</div>
<div class="refsect1" title="Options">
<a id="idp43831760"></a>
<h2>Options</h2>
<div class="informalexample">
<pre class="screen">
--quiet (-q)
</pre>
</div>
</div>
<div class="refsect1" title="Examples">
<a id="idp43833632"></a>
<h2>Examples</h2>
<p>Remove named transactions:</p>
<div class="informalexample">
<pre class="screen">
$ svnadmin rmtxns /var/svn/repos/ 1w 1x
</pre>
</div>
<p>Fortunately, the output of <span class="command"><strong>lstxns</strong></span>
works great as the input for <span class="command"><strong>rmtxns</strong></span>:</p>
<div class="informalexample">
<pre class="screen">
$ svnadmin rmtxns /var/svn/repos/ `svnadmin lstxns /var/svn/repos/`
</pre>
</div>
<p>This removes all uncommitted transactions from
your repository.</p>
</div>
</div>
<div class="navfooter">
<hr />
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left"><a accesskey="p" href="svn.ref.svnadmin.c.rmlocks.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="svn.ref.svnadmin.html#svn.ref.svnadmin.c">Up</a>
</td>
<td width="40%" align="right"> <a accesskey="n" href="svn.ref.svnadmin.c.setlog.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">svnadmin rmlocks </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
<td width="40%" align="right" valign="top"> svnadmin setlog</td>
</tr>
</table>
</div>
<div xmlns="" id="svn-footer">
<hr />
<p>You are reading <em>Version Control with Subversion</em> (for Subversion 1.7), by Ben Collins-Sussman, Brian W. Fitzpatrick, and C. Michael Pilato.<br />
This work is licensed under the <a href="http://creativecommons.org/licenses/by/2.0/">Creative Commons Attribution License v2.0</a>.<br />
To submit comments, corrections, or other contributions to the text, please visit <a href="http://www.svnbook.com/">http://www.svnbook.com/</a>.</p>
</div>
</body>
</html>

View file

@ -0,0 +1,131 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>svnadmin setlog</title>
<link rel="stylesheet" href="styles.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2" />
<style type="text/css">
body { background-image: url('images/draft.png');
background-repeat: no-repeat;
background-position: top left;
/* The following properties make the watermark "fixed" on the page. */
/* I think that's just a bit too distracting for the reader... */
/* background-attachment: fixed; */
/* background-position: center center; */
}</style>
<link rel="home" href="index.html" title="Version Control with Subversion [DRAFT]" />
<link rel="up" href="svn.ref.svnadmin.html#svn.ref.svnadmin.c" title="svnadmin Subcommands" />
<link rel="prev" href="svn.ref.svnadmin.c.rmtxns.html" title="svnadmin rmtxns" />
<link rel="next" href="svn.ref.svnadmin.c.setrevprop.html" title="svnadmin setrevprop" />
</head>
<body>
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
<th colspan="3" align="center">svnadmin setlog</th>
</tr>
<tr>
<td width="20%" align="left"><a accesskey="p" href="svn.ref.svnadmin.c.rmtxns.html">Prev</a> </td>
<th width="60%" align="center">svnadmin Subcommands</th>
<td width="20%" align="right"> <a accesskey="n" href="svn.ref.svnadmin.c.setrevprop.html">Next</a></td>
</tr>
</table>
<hr />
</div>
<div class="refentry" title="svnadmin setlog">
<a id="svn.ref.svnadmin.c.setlog"></a>
<div class="titlepage"></div>
<a id="idp43840656" class="indexterm"></a>
<div class="refnamediv">
<h2>Name</h2>
<p>svnadmin setlog — Set the log message on a revision.</p>
</div>
<div class="refsect1" title="Synopsis">
<a id="idp43843744"></a>
<h2>Synopsis</h2>
<p>
<code class="literal">svnadmin setlog REPOS_PATH -r REVISION FILE</code>
</p>
</div>
<div class="refsect1" title="Description">
<a id="idp43845392"></a>
<h2>Description</h2>
<p>Set the log message on
revision <em class="replaceable"><code>REVISION</code></em> to the
contents of <em class="replaceable"><code>FILE</code></em>.</p>
<p>This is similar to using <span class="command"><strong>svn propset</strong></span>
with the <code class="option">--revprop</code> option to set the <code class="literal">svn:log</code> property
on a revision, except that you can also use the option
<code class="option">--bypass-hooks</code> to avoid running any pre-
or post-commit hooks, which is useful if the modification
of revision properties has not been enabled in
the <code class="literal">pre-revprop-change</code> hook.</p>
<div class="warning" title="Warning" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Warning">
<tr>
<td rowspan="2" align="center" valign="top" width="25">
<img alt="[Warning]" src="images/warning.png" />
</td>
<th align="left">Warning</th>
</tr>
<tr>
<td align="left" valign="top">
<p>Revision properties are not under version control,
so this command will permanently overwrite the previous
log message.</p>
</td>
</tr>
</table>
</div>
</div>
<div class="refsect1" title="Options">
<a id="idp43852176"></a>
<h2>Options</h2>
<div class="informalexample">
<pre class="screen">
--bypass-hooks
--revision (-r) REV
</pre>
</div>
</div>
<div class="refsect1" title="Examples">
<a id="idp43854064"></a>
<h2>Examples</h2>
<p>Set the log message for revision 19 to the contents of
the file <code class="filename">msg</code>:</p>
<div class="informalexample">
<pre class="screen">
$ svnadmin setlog /var/svn/repos/ -r 19 msg
</pre>
</div>
</div>
</div>
<div class="navfooter">
<hr />
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left"><a accesskey="p" href="svn.ref.svnadmin.c.rmtxns.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="svn.ref.svnadmin.html#svn.ref.svnadmin.c">Up</a>
</td>
<td width="40%" align="right"> <a accesskey="n" href="svn.ref.svnadmin.c.setrevprop.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">svnadmin rmtxns </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
<td width="40%" align="right" valign="top"> svnadmin setrevprop</td>
</tr>
</table>
</div>
<div xmlns="" id="svn-footer">
<hr />
<p>You are reading <em>Version Control with Subversion</em> (for Subversion 1.7), by Ben Collins-Sussman, Brian W. Fitzpatrick, and C. Michael Pilato.<br />
This work is licensed under the <a href="http://creativecommons.org/licenses/by/2.0/">Creative Commons Attribution License v2.0</a>.<br />
To submit comments, corrections, or other contributions to the text, please visit <a href="http://www.svnbook.com/">http://www.svnbook.com/</a>.</p>
</div>
</body>
</html>

View file

@ -0,0 +1,213 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Overview</title>
<link rel="stylesheet" href="styles.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2" />
<style type="text/css">
body { background-image: url('images/draft.png');
background-repeat: no-repeat;
background-position: top left;
/* The following properties make the watermark "fixed" on the page. */
/* I think that's just a bit too distracting for the reader... */
/* background-attachment: fixed; */
/* background-position: center center; */
}</style>
<link rel="home" href="index.html" title="Version Control with Subversion [DRAFT]" />
<link rel="up" href="svn.serverconfig.html" title="Chapter 6. Server Configuration" />
<link rel="prev" href="svn.serverconfig.html" title="Chapter 6. Server Configuration" />
<link rel="next" href="svn.serverconfig.choosing.html" title="Choosing a Server Configuration" />
</head>
<body>
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
<th colspan="3" align="center">Overview</th>
</tr>
<tr>
<td width="20%" align="left"><a accesskey="p" href="svn.serverconfig.html">Prev</a> </td>
<th width="60%" align="center">Chapter 6. Server Configuration</th>
<td width="20%" align="right"> <a accesskey="n" href="svn.serverconfig.choosing.html">Next</a></td>
</tr>
</table>
<hr />
</div>
<div class="sect1" title="Overview">
<div class="titlepage">
<div>
<div>
<h2 class="title" style="clear: both"><a id="svn.serverconfig.overview"></a>Overview</h2>
</div>
</div>
</div>
<p>Subversion was designed with an abstract repository access layer.
This means that a repository can be programmatically accessed by
any sort of server process, and the client <span class="quote"><span class="quote">repository
access</span></span> API allows programmers to write plug-ins that
speak relevant network protocols. In theory, Subversion can use
an infinite number of network implementations. In practice,
there are only two Subversion servers in widespread use today.</p>
<p>Apache is an extremely popular web server; using the
<span class="command"><strong>mod_dav_svn</strong></span> module, Apache can access a
repository and make it available to clients via the
WebDAV/DeltaV protocol, which is an extension of HTTP. Because
Apache is an extremely extensible server, it provides a number
of features <span class="quote"><span class="quote">for free,</span></span> such as encrypted SSL
communication, logging, integration with a number of third-party
authentication systems, and limited built-in web browsing of
repositories.</p>
<p>In the other corner is <span class="command"><strong>svnserve</strong></span>: a small,
lightweight server program that speaks a custom protocol with
clients. Because its protocol is explicitly designed for
Subversion and is stateful (unlike HTTP), it provides
significantly faster network operations—but at the cost of
some features as well. While it can use SASL to provide a
variety of authentication and encryption options, it has no
logging or built-in web browsing. It is, however, extremely
easy to set up and is often the best option for small teams just
starting out with Subversion.</p>
<p>The network protocol which <span class="command"><strong>svnserve</strong></span>
speaks may also be tunneled over an SSH connection. This
deployment option for <span class="command"><strong>svnserve</strong></span> differs quite
a bit in features from a traditional <span class="command"><strong>svnserve</strong></span>
deployment. SSH is used to encrypt all communication. SSH is
also used exclusively to authenticate, so real system accounts
are required on the server host (unlike
vanilla <span class="command"><strong>svnserve</strong></span>, which has its own private
user accounts). Finally, because this setup requires that each
user spawn a private, temporary <span class="command"><strong>svnserve</strong></span>
process, it's equivalent (from a permissions point of view) to
allowing a group of local users to all access the repository
via <code class="literal">file://</code> URLs. Path-based access control
has no meaning, since each user is accessing the repository
database files directly.</p>
<p><a class="xref" href="svn.serverconfig.overview.html#svn.serverconfig.overview.tbl-1" title="Table 6.1. Comparison of subversion server options">Table 6.1, “Comparison of subversion server options”</a> provides a
quick summary of the three typical server deployments.</p>
<div class="table">
<a id="svn.serverconfig.overview.tbl-1"></a>
<p class="title">
<b>Table 6.1. Comparison of subversion server options</b>
</p>
<div class="table-contents">
<table summary="Comparison of subversion server options" border="1">
<colgroup>
<col />
<col />
<col />
<col />
</colgroup>
<thead>
<tr>
<th>Feature</th>
<th>Apache + mod_dav_svn</th>
<th>svnserve</th>
<th>svnserve over SSH</th>
</tr>
</thead>
<tbody>
<tr>
<td>Authentication options</td>
<td>HTTP Basic or Digest auth, X.509 certificates, LDAP,
NTLM, or any other mechanism available to Apache httpd</td>
<td>CRAM-MD5 by default; LDAP, NTLM, or any other mechanism
available to SASL</td>
<td>SSH</td>
</tr>
<tr>
<td>User account options</td>
<td>Private <span class="quote"><span class="quote">users</span></span> file, or other mechanisms
available to Apache httpd (LDAP, SQL, etc.)</td>
<td>Private <span class="quote"><span class="quote">users</span></span> file, or other
mechanisms available to SASL (LDAP, SQL, etc.)</td>
<td>System accounts</td>
</tr>
<tr>
<td>Authorization options</td>
<td>Read/write access can be granted over the whole
repository, or specified per path</td>
<td>Read/write access can be granted over the whole
repository, or specified per path</td>
<td>Read/write access only grantable over the whole
repository</td>
</tr>
<tr>
<td>Encryption</td>
<td>Available via optional SSL (https)</td>
<td>Available via optional SASL features</td>
<td>Inherent in SSH connection</td>
</tr>
<tr>
<td>Logging</td>
<td>High-level operational logging of Subversion
operations plus detailed logging at the
per-HTTP-request level</td>
<td>High-level operational logging only</td>
<td>High-level operational logging only</td>
</tr>
<tr>
<td>Interoperability</td>
<td>Accessible by other WebDAV clients</td>
<td>Talks only to svn clients</td>
<td>Talks only to svn clients</td>
</tr>
<tr>
<td>Web viewing</td>
<td>Limited built-in support, or via third-party tools
such as ViewVC</td>
<td>Only via third-party tools such as ViewVC</td>
<td>Only via third-party tools such as ViewVC</td>
</tr>
<tr>
<td>Master-slave server replication</td>
<td>Transparent write-proxying available from slave to
master</td>
<td>Can only create read-only slave servers</td>
<td>Can only create read-only slave servers</td>
</tr>
<tr>
<td>Speed</td>
<td>Somewhat slower</td>
<td>Somewhat faster</td>
<td>Somewhat faster</td>
</tr>
<tr>
<td>Initial setup</td>
<td>Somewhat complex</td>
<td>Extremely simple</td>
<td>Moderately simple</td>
</tr>
</tbody>
</table>
</div>
</div>
<br class="table-break" />
</div>
<div class="navfooter">
<hr />
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left"><a accesskey="p" href="svn.serverconfig.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="svn.serverconfig.html">Up</a>
</td>
<td width="40%" align="right"> <a accesskey="n" href="svn.serverconfig.choosing.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">Chapter 6. Server Configuration </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
<td width="40%" align="right" valign="top"> Choosing a Server Configuration</td>
</tr>
</table>
</div>
<div xmlns="" id="svn-footer">
<hr />
<p>You are reading <em>Version Control with Subversion</em> (for Subversion 1.7), by Ben Collins-Sussman, Brian W. Fitzpatrick, and C. Michael Pilato.<br />
This work is licensed under the <a href="http://creativecommons.org/licenses/by/2.0/">Creative Commons Attribution License v2.0</a>.<br />
To submit comments, corrections, or other contributions to the text, please visit <a href="http://www.svnbook.com/">http://www.svnbook.com/</a>.</p>
</div>
</body>
</html>

View file

@ -0,0 +1,363 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Revision Specifiers</title>
<link rel="stylesheet" href="styles.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2" />
<style type="text/css">
body { background-image: url('images/draft.png');
background-repeat: no-repeat;
background-position: top left;
/* The following properties make the watermark "fixed" on the page. */
/* I think that's just a bit too distracting for the reader... */
/* background-attachment: fixed; */
/* background-position: center center; */
}</style>
<link rel="home" href="index.html" title="Version Control with Subversion [DRAFT]" />
<link rel="up" href="svn.advanced.html" title="Chapter 3. Advanced Topics" />
<link rel="prev" href="svn.advanced.html" title="Chapter 3. Advanced Topics" />
<link rel="next" href="svn.advanced.pegrevs.html" title="Peg and Operative Revisions" />
</head>
<body>
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
<th colspan="3" align="center">Revision Specifiers</th>
</tr>
<tr>
<td width="20%" align="left"><a accesskey="p" href="svn.advanced.html">Prev</a> </td>
<th width="60%" align="center">Chapter 3. Advanced Topics</th>
<td width="20%" align="right"> <a accesskey="n" href="svn.advanced.pegrevs.html">Next</a></td>
</tr>
</table>
<hr />
</div>
<div class="sect1" title="Revision Specifiers">
<div class="titlepage">
<div>
<div>
<h2 class="title" style="clear: both"><a id="svn.tour.revs.specifiers"></a>Revision Specifiers</h2>
</div>
</div>
</div>
<p>As we described in <a class="xref" href="svn.basic.in-action.html#svn.basic.in-action.revs" title="Revisions">the section called “Revisions”</a>, revision numbers in Subversion are pretty
straightforward—integers that keep getting larger as you
commit more changes to your versioned data. Still, it doesn't
take long before you can no longer remember exactly what
happened in each and every revision. Fortunately, the typical
Subversion workflow doesn't often demand that you supply
arbitrary revisions to the Subversion operations you perform.
For operations that <span class="emphasis"><em>do</em></span> require a revision
specifier, you generally supply a revision number that you saw
in a commit email, in the output of some other Subversion
operation, or in some other context that would give meaning to
that particular number.</p>
<div class="note" title="Note" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Note">
<tr>
<td rowspan="2" align="center" valign="top" width="25">
<img alt="[Note]" src="images/note.png" />
</td>
<th align="left">Note</th>
</tr>
<tr>
<td align="left" valign="top">
<p>Referring to revision numbers with
an <span class="quote"><span class="quote"><code class="literal">r</code></span></span> prefix
(<code class="literal">r314</code>, for example) is an established
practice in Subversion communities, and is both supported and
encouraged by many Subversion-related tools. In most places
where you would specify a bare revision number on the command
line, you may also use
the <code class="literal">r</code><em class="replaceable"><code>NNN</code></em>
syntax.</p>
</td>
</tr>
</table>
</div>
<p>But occasionally, you need to pinpoint a moment in time for
which you don't already have a revision number memorized or
handy. So besides the integer revision numbers,
<span class="command"><strong>svn</strong></span> allows as input some additional forms of
revision specifiers: <em class="firstterm">revision keywords</em>
and revision dates.</p>
<div class="note" title="Note" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Note">
<tr>
<td rowspan="2" align="center" valign="top" width="25">
<img alt="[Note]" src="images/note.png" />
</td>
<th align="left">Note</th>
</tr>
<tr>
<td align="left" valign="top">
<p>The various forms of Subversion revision specifiers can be
mixed and matched when used to specify revision ranges. For
example, you can use <code class="option">-r
<em class="replaceable"><code>REV1</code></em>:<em class="replaceable"><code>REV2</code></em></code>
where <em class="replaceable"><code>REV1</code></em> is a revision keyword
and <em class="replaceable"><code>REV2</code></em> is a revision number, or
where <em class="replaceable"><code>REV1</code></em> is a date and
<em class="replaceable"><code>REV2</code></em> is a revision keyword, and so
on. The individual revision specifiers are independently
evaluated, so you can put whatever you want on the opposite
sides of that colon.</p>
</td>
</tr>
</table>
</div>
<div class="sect2" title="Revision Keywords">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="svn.tour.revs.keywords"></a>Revision Keywords</h3>
</div>
</div>
</div>
<a id="idp33928160" class="indexterm"></a>
<p>The Subversion client understands a number of revision
keywords. These keywords can be used instead of integer
arguments to the <code class="option">--revision</code>
(<code class="option">-r</code>) option, and are resolved into specific
revision numbers by Subversion:</p>
<div class="variablelist">
<dl>
<dt>
<span class="term">
<code class="literal">HEAD</code>
</span>
</dt>
<dd>
<a id="idp33932752" class="indexterm"></a>
<a id="idp33933824" class="indexterm"></a>
<p>The latest (or <span class="quote"><span class="quote">youngest</span></span>) revision in
the repository.</p>
</dd>
<dt>
<span class="term">
<code class="literal">BASE</code>
</span>
</dt>
<dd>
<a id="idp33938208" class="indexterm"></a>
<a id="idp33939280" class="indexterm"></a>
<p>The revision number of an item in a working copy.
If the item has been locally modified, this refers to
the way the item appears without those local
modifications.</p>
</dd>
<dt>
<span class="term">
<code class="literal">COMMITTED</code>
</span>
</dt>
<dd>
<a id="idp33943376" class="indexterm"></a>
<a id="idp33944448" class="indexterm"></a>
<p>The most recent revision prior to, or equal to,
<code class="literal">BASE</code>, in which an item changed.</p>
</dd>
<dt>
<span class="term">
<code class="literal">PREV</code>
</span>
</dt>
<dd>
<a id="idp33949056" class="indexterm"></a>
<a id="idp33950128" class="indexterm"></a>
<p>The revision immediately <span class="emphasis"><em>before</em></span>
the last revision in which an item changed.
Technically, this boils down to
<code class="literal">COMMITTED</code>-1.</p>
</dd>
</dl>
</div>
<p>As can be derived from their descriptions, the
<code class="literal">PREV</code>, <code class="literal">BASE</code>, and
<code class="literal">COMMITTED</code> revision keywords are used only
when referring to a working copy path—they don't apply
to repository URLs. <code class="literal">HEAD</code>, on the other
hand, can be used in conjunction with both of these path
types.</p>
<p>Here are some examples of revision keywords in
action:</p>
<div class="informalexample">
<pre class="screen">
$ svn diff -r PREV:COMMITTED foo.c
# shows the last change committed to foo.c
$ svn log -r HEAD
# shows log message for the latest repository commit
$ svn diff -r HEAD
# compares your working copy (with all of its local changes) to the
# latest version of that tree in the repository
$ svn diff -r BASE:HEAD foo.c
# compares the unmodified version of foo.c with the latest version of
# foo.c in the repository
$ svn log -r BASE:HEAD
# shows all commit logs for the current versioned directory since you
# last updated
$ svn update -r PREV foo.c
# rewinds the last change on foo.c, decreasing foo.c's working revision
$ svn diff -r BASE:14 foo.c
# compares the unmodified version of foo.c with the way foo.c looked
# in revision 14
</pre>
</div>
</div>
<div class="sect2" title="Revision Dates">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="svn.tour.revs.dates"></a>Revision Dates</h3>
</div>
</div>
</div>
<a id="idp33961536" class="indexterm"></a>
<p>Revision numbers reveal nothing about the world outside
the version control system, but sometimes you need to
correlate a moment in real time with a moment in version
history. To facilitate this, the <code class="option">--revision</code>
(<code class="option">-r</code>) option can also accept as input date
specifiers wrapped in curly braces (<code class="literal">{</code> and
<code class="literal">}</code>). Subversion accepts the standard
ISO-8601 date and time formats, plus a few others. Here are
some examples.</p>
<div class="informalexample">
<pre class="screen">
$ svn checkout -r {2006-02-17}
$ svn checkout -r {15:30}
$ svn checkout -r {15:30:00.200000}
$ svn checkout -r {"2006-02-17 15:30"}
$ svn checkout -r {"2006-02-17 15:30 +0230"}
$ svn checkout -r {2006-02-17T15:30}
$ svn checkout -r {2006-02-17T15:30Z}
$ svn checkout -r {2006-02-17T15:30-04:00}
$ svn checkout -r {20060217T1530}
$ svn checkout -r {20060217T1530Z}
$ svn checkout -r {20060217T1530-0500}
</pre>
</div>
<div class="note" title="Note" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Note">
<tr>
<td rowspan="2" align="center" valign="top" width="25">
<img alt="[Note]" src="images/note.png" />
</td>
<th align="left">Note</th>
</tr>
<tr>
<td align="left" valign="top">
<p>Keep in mind that most shells will require you to, at a
minimum, quote or otherwise escape any spaces that are
included as part of revision date specifiers. Certain
shells may also take issue with the unescaped use of curly
brances, too. Consult your shell's documentation for the
requirements specific to your environment.</p>
</td>
</tr>
</table>
</div>
<p>When you specify a date, Subversion resolves that date to
the most recent revision of the repository as of that date,
and then continues to operate against that resolved revision
number:</p>
<div class="informalexample">
<pre class="screen">
$ svn log -r {2006-11-28}
------------------------------------------------------------------------
r12 | ira | 2006-11-27 12:31:51 -0600 (Mon, 27 Nov 2006) | 6 lines
</pre>
</div>
<div class="sidebar" title="Is Subversion a Day Early?">
<p class="title">
<b>Is Subversion a Day Early?</b>
</p>
<p>If you specify a single date as a revision without
specifying a time of day (for example
<code class="literal">2006-11-27</code>), you may think that Subversion
should give you the last revision that took place on the
27th of November. Instead, you'll get back a revision from
the 26th, or even earlier. Remember that Subversion will
find the <span class="emphasis"><em>most recent revision of the
repository</em></span> as of the date you give. If you give
a date without a timestamp, such as
<code class="literal">2006-11-27</code>, Subversion assumes a time of
00:00:00, so looking for the most recent revision won't
return anything on the 27th.</p>
<p>If you want to include the 27th in your search, you can
either specify the 27th with the time (<code class="literal">{"2006-11-27
23:59"}</code>), or just specify the next day
(<code class="literal">{2006-11-28}</code>).</p>
</div>
<p>You can also use a range of dates. Subversion will find
all revisions between both dates, inclusive:</p>
<div class="informalexample">
<pre class="screen">
$ svn log -r {2006-11-20}:{2006-11-29}
</pre>
</div>
<div class="warning" title="Warning" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Warning">
<tr>
<td rowspan="2" align="center" valign="top" width="25">
<img alt="[Warning]" src="images/warning.png" />
</td>
<th align="left">Warning</th>
</tr>
<tr>
<td align="left" valign="top">
<p>Since the timestamp of a revision is stored as an
unversioned, modifiable property of the revision (see <a class="xref" href="svn.advanced.props.html" title="Properties">the section called “Properties”</a>), revision timestamps can be
changed to represent complete falsifications of true
chronology, or even removed altogether. Subversion's
ability to correctly convert revision dates into real
revision numbers depends on revision datestamps maintaining
a sequential ordering—the younger the revision, the
younger its timestamp. If this ordering isn't maintained,
you will likely find that trying to use dates to specify
revision ranges in your repository doesn't always return the
data you might have expected.</p>
</td>
</tr>
</table>
</div>
</div>
</div>
<div class="navfooter">
<hr />
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left"><a accesskey="p" href="svn.advanced.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="svn.advanced.html">Up</a>
</td>
<td width="40%" align="right"> <a accesskey="n" href="svn.advanced.pegrevs.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">Chapter 3. Advanced Topics </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
<td width="40%" align="right" valign="top"> Peg and Operative Revisions</td>
</tr>
</table>
</div>
<div xmlns="" id="svn-footer">
<hr />
<p>You are reading <em>Version Control with Subversion</em> (for Subversion 1.7), by Ben Collins-Sussman, Brian W. Fitzpatrick, and C. Michael Pilato.<br />
This work is licensed under the <a href="http://creativecommons.org/licenses/by/2.0/">Creative Commons Attribution License v2.0</a>.<br />
To submit comments, corrections, or other contributions to the text, please visit <a href="http://www.svnbook.com/">http://www.svnbook.com/</a>.</p>
</div>
</body>
</html>

View file

@ -0,0 +1,108 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>svnlook dirs-changed</title>
<link rel="stylesheet" href="styles.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2" />
<style type="text/css">
body { background-image: url('images/draft.png');
background-repeat: no-repeat;
background-position: top left;
/* The following properties make the watermark "fixed" on the page. */
/* I think that's just a bit too distracting for the reader... */
/* background-attachment: fixed; */
/* background-position: center center; */
}</style>
<link rel="home" href="index.html" title="Version Control with Subversion [DRAFT]" />
<link rel="up" href="svn.ref.svnlook.html#svn.ref.svnlook.c" title="svnlook Subcommands" />
<link rel="prev" href="svn.ref.svnlook.c.diff.html" title="svnlook diff" />
<link rel="next" href="svn.ref.svnlook.c.filesize.html" title="svnlook filesize" />
</head>
<body>
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
<th colspan="3" align="center">svnlook dirs-changed</th>
</tr>
<tr>
<td width="20%" align="left"><a accesskey="p" href="svn.ref.svnlook.c.diff.html">Prev</a> </td>
<th width="60%" align="center">svnlook Subcommands</th>
<td width="20%" align="right"> <a accesskey="n" href="svn.ref.svnlook.c.filesize.html">Next</a></td>
</tr>
</table>
<hr />
</div>
<div class="refentry" title="svnlook dirs-changed">
<a id="svn.ref.svnlook.c.dirs-changed"></a>
<div class="titlepage"></div>
<a id="idp44033040" class="indexterm"></a>
<div class="refnamediv">
<h2>Name</h2>
<p>svnlook dirs-changed — Print the directories that were themselves changed.</p>
</div>
<div class="refsect1" title="Synopsis">
<a id="idp44036192"></a>
<h2>Synopsis</h2>
<p>
<code class="literal">svnlook dirs-changed REPOS_PATH</code>
</p>
</div>
<div class="refsect1" title="Description">
<a id="idp44037776"></a>
<h2>Description</h2>
<p>Print the directories that were themselves changed
(property edits) or whose file children were
changed.</p>
</div>
<div class="refsect1" title="Options">
<a id="idp44039104"></a>
<h2>Options</h2>
<div class="informalexample">
<pre class="screen">
--revision (-r) REV
--transaction (-t) TXN
</pre>
</div>
</div>
<div class="refsect1" title="Examples">
<a id="idp44041008"></a>
<h2>Examples</h2>
<p>This shows the directories that changed in
revision 40 in our sample repository:</p>
<div class="informalexample">
<pre class="screen">
$ svnlook dirs-changed -r 40 /var/svn/repos
trunk/vendors/deli/
</pre>
</div>
</div>
</div>
<div class="navfooter">
<hr />
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left"><a accesskey="p" href="svn.ref.svnlook.c.diff.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="svn.ref.svnlook.html#svn.ref.svnlook.c">Up</a>
</td>
<td width="40%" align="right"> <a accesskey="n" href="svn.ref.svnlook.c.filesize.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">svnlook diff </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
<td width="40%" align="right" valign="top"> svnlook filesize</td>
</tr>
</table>
</div>
<div xmlns="" id="svn-footer">
<hr />
<p>You are reading <em>Version Control with Subversion</em> (for Subversion 1.7), by Ben Collins-Sussman, Brian W. Fitzpatrick, and C. Michael Pilato.<br />
This work is licensed under the <a href="http://creativecommons.org/licenses/by/2.0/">Creative Commons Attribution License v2.0</a>.<br />
To submit comments, corrections, or other contributions to the text, please visit <a href="http://www.svnbook.com/">http://www.svnbook.com/</a>.</p>
</div>
</body>
</html>

View file

@ -0,0 +1,123 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>pre-revprop-change</title>
<link rel="stylesheet" href="styles.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2" />
<style type="text/css">
body { background-image: url('images/draft.png');
background-repeat: no-repeat;
background-position: top left;
/* The following properties make the watermark "fixed" on the page. */
/* I think that's just a bit too distracting for the reader... */
/* background-attachment: fixed; */
/* background-position: center center; */
}</style>
<link rel="home" href="index.html" title="Version Control with Subversion [DRAFT]" />
<link rel="up" href="svn.ref.reposhooks.html" title="Repository Hooks" />
<link rel="prev" href="svn.ref.reposhooks.post-commit.html" title="post-commit" />
<link rel="next" href="svn.ref.reposhooks.post-revprop-change.html" title="post-revprop-change" />
</head>
<body>
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
<th colspan="3" align="center">pre-revprop-change</th>
</tr>
<tr>
<td width="20%" align="left"><a accesskey="p" href="svn.ref.reposhooks.post-commit.html">Prev</a> </td>
<th width="60%" align="center">Repository Hooks</th>
<td width="20%" align="right"> <a accesskey="n" href="svn.ref.reposhooks.post-revprop-change.html">Next</a></td>
</tr>
</table>
<hr />
</div>
<div class="refentry" title="pre-revprop-change">
<a id="svn.ref.reposhooks.pre-revprop-change"></a>
<div class="titlepage"></div>
<a id="idp44867312" class="indexterm"></a>
<div class="refnamediv">
<h2>Name</h2>
<p>pre-revprop-change — Notification of a revision property change
attempt.</p>
</div>
<div class="refsect1" title="Description">
<a id="idp44870400"></a>
<h2>Description</h2>
<p>The <code class="literal">pre-revprop-change</code> hook is run
immediately prior to the modification of a revision property
when performed outside the scope of a normal commit. Unlike
the other hooks, the default state of this one is to deny
the proposed action. The hook must actually exist and
return a zero exit value before a revision property
modification can happen.</p>
<p>If the <code class="literal">pre-revprop-change</code> hook
doesn't exist, isn't executable, or returns a nonzero exit
value, no change to the property will be made, and anything
printed to <code class="filename">stderr</code> is marshalled back to the client.</p>
</div>
<div class="refsect1" title="Input parameter(s)">
<a id="idp44874672"></a>
<h2>Input parameter(s)</h2>
<p>The command-line arguments passed to the hook program,
in order, are:</p>
<div class="orderedlist">
<ol class="orderedlist" type="1">
<li class="listitem">
<p>Repository path</p>
</li>
<li class="listitem">
<p>Revision whose property is about to be modified</p>
</li>
<li class="listitem">
<p>Authenticated username attempting the property change</p>
</li>
<li class="listitem">
<p>Name of the property changed</p>
</li>
<li class="listitem">
<p>Change description: <code class="literal">A</code> (added),
<code class="literal">D</code> (deleted), or <code class="literal">M</code>
(modified)</p>
</li>
</ol>
</div>
<p>Additionally, Subversion passes the intended new value
of the property to the hook program via standard
input.</p>
</div>
<div class="refsect1" title="Common uses">
<a id="idp44883584"></a>
<h2>Common uses</h2>
<p>Access control; change validation and control</p>
</div>
</div>
<div class="navfooter">
<hr />
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left"><a accesskey="p" href="svn.ref.reposhooks.post-commit.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="svn.ref.reposhooks.html">Up</a>
</td>
<td width="40%" align="right"> <a accesskey="n" href="svn.ref.reposhooks.post-revprop-change.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">post-commit </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
<td width="40%" align="right" valign="top"> post-revprop-change</td>
</tr>
</table>
</div>
<div xmlns="" id="svn-footer">
<hr />
<p>You are reading <em>Version Control with Subversion</em> (for Subversion 1.7), by Ben Collins-Sussman, Brian W. Fitzpatrick, and C. Michael Pilato.<br />
This work is licensed under the <a href="http://creativecommons.org/licenses/by/2.0/">Creative Commons Attribution License v2.0</a>.<br />
To submit comments, corrections, or other contributions to the text, please visit <a href="http://www.svnbook.com/">http://www.svnbook.com/</a>.</p>
</div>
</body>
</html>

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,125 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>svnlook history</title>
<link rel="stylesheet" href="styles.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2" />
<style type="text/css">
body { background-image: url('images/draft.png');
background-repeat: no-repeat;
background-position: top left;
/* The following properties make the watermark "fixed" on the page. */
/* I think that's just a bit too distracting for the reader... */
/* background-attachment: fixed; */
/* background-position: center center; */
}</style>
<link rel="home" href="index.html" title="Version Control with Subversion [DRAFT]" />
<link rel="up" href="svn.ref.svnlook.html#svn.ref.svnlook.c" title="svnlook Subcommands" />
<link rel="prev" href="svn.ref.svnlook.c.help.html" title="svnlook help" />
<link rel="next" href="svn.ref.svnlook.c.info.html" title="svnlook info" />
</head>
<body>
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
<th colspan="3" align="center">svnlook history</th>
</tr>
<tr>
<td width="20%" align="left"><a accesskey="p" href="svn.ref.svnlook.c.help.html">Prev</a> </td>
<th width="60%" align="center">svnlook Subcommands</th>
<td width="20%" align="right"> <a accesskey="n" href="svn.ref.svnlook.c.info.html">Next</a></td>
</tr>
</table>
<hr />
</div>
<div class="refentry" title="svnlook history">
<a id="svn.ref.svnlook.c.history"></a>
<div class="titlepage"></div>
<a id="idp44070720" class="indexterm"></a>
<div class="refnamediv">
<h2>Name</h2>
<p>svnlook history — Print information about the history of a path in
the repository (or the root directory if no path is
supplied).</p>
</div>
<div class="refsect1" title="Synopsis">
<a id="idp44073952"></a>
<h2>Synopsis</h2>
<p>
<code class="literal">svnlook history REPOS_PATH [PATH_IN_REPOS]</code>
</p>
</div>
<div class="refsect1" title="Description">
<a id="idp44075600"></a>
<h2>Description</h2>
<p>Print information about the history of a path in
the repository (or the root directory if no path is
supplied).</p>
</div>
<div class="refsect1" title="Options">
<a id="idp44076928"></a>
<h2>Options</h2>
<div class="informalexample">
<pre class="screen">
--limit (-l) NUM
--revision (-r) REV
--show-ids
</pre>
</div>
</div>
<div class="refsect1" title="Examples">
<a id="idp44078832"></a>
<h2>Examples</h2>
<p>This shows the history output for the path
<code class="filename">/branches/bookstore</code> as of revision 13 in our
sample repository:</p>
<div class="informalexample">
<pre class="screen">
$ svnlook history -r 13 /var/svn/repos /branches/bookstore --show-ids
REVISION PATH &lt;ID&gt;
-------- ---------
13 /branches/bookstore &lt;1.1.r13/390&gt;
12 /branches/bookstore &lt;1.1.r12/413&gt;
11 /branches/bookstore &lt;1.1.r11/0&gt;
9 /trunk &lt;1.0.r9/551&gt;
8 /trunk &lt;1.0.r8/131357096&gt;
7 /trunk &lt;1.0.r7/294&gt;
6 /trunk &lt;1.0.r6/353&gt;
5 /trunk &lt;1.0.r5/349&gt;
4 /trunk &lt;1.0.r4/332&gt;
3 /trunk &lt;1.0.r3/335&gt;
2 /trunk &lt;1.0.r2/295&gt;
1 /trunk &lt;1.0.r1/532&gt;
</pre>
</div>
</div>
</div>
<div class="navfooter">
<hr />
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left"><a accesskey="p" href="svn.ref.svnlook.c.help.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="svn.ref.svnlook.html#svn.ref.svnlook.c">Up</a>
</td>
<td width="40%" align="right"> <a accesskey="n" href="svn.ref.svnlook.c.info.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">svnlook help </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
<td width="40%" align="right" valign="top"> svnlook info</td>
</tr>
</table>
</div>
<div xmlns="" id="svn-footer">
<hr />
<p>You are reading <em>Version Control with Subversion</em> (for Subversion 1.7), by Ben Collins-Sussman, Brian W. Fitzpatrick, and C. Michael Pilato.<br />
This work is licensed under the <a href="http://creativecommons.org/licenses/by/2.0/">Creative Commons Attribution License v2.0</a>.<br />
To submit comments, corrections, or other contributions to the text, please visit <a href="http://www.svnbook.com/">http://www.svnbook.com/</a>.</p>
</div>
</body>
</html>

View file

@ -0,0 +1,133 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>svnadmin upgrade</title>
<link rel="stylesheet" href="styles.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2" />
<style type="text/css">
body { background-image: url('images/draft.png');
background-repeat: no-repeat;
background-position: top left;
/* The following properties make the watermark "fixed" on the page. */
/* I think that's just a bit too distracting for the reader... */
/* background-attachment: fixed; */
/* background-position: center center; */
}</style>
<link rel="home" href="index.html" title="Version Control with Subversion [DRAFT]" />
<link rel="up" href="svn.ref.svnadmin.html#svn.ref.svnadmin.c" title="svnadmin Subcommands" />
<link rel="prev" href="svn.ref.svnadmin.c.setuuid.html" title="svnadmin setuuid" />
<link rel="next" href="svn.ref.svnadmin.c.verify.html" title="svnadmin verify" />
</head>
<body>
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
<th colspan="3" align="center">svnadmin upgrade</th>
</tr>
<tr>
<td width="20%" align="left"><a accesskey="p" href="svn.ref.svnadmin.c.setuuid.html">Prev</a> </td>
<th width="60%" align="center">svnadmin Subcommands</th>
<td width="20%" align="right"> <a accesskey="n" href="svn.ref.svnadmin.c.verify.html">Next</a></td>
</tr>
</table>
<hr />
</div>
<div class="refentry" title="svnadmin upgrade">
<a id="svn.ref.svnadmin.c.upgrade"></a>
<div class="titlepage"></div>
<a id="idp43893216" class="indexterm"></a>
<div class="refnamediv">
<h2>Name</h2>
<p>svnadmin upgrade — Upgrade a repository to the latest supported
schema version.</p>
</div>
<div class="refsect1" title="Synopsis">
<a id="idp43896400"></a>
<h2>Synopsis</h2>
<p>
<code class="literal">svnadmin upgrade REPOS_PATH</code>
</p>
</div>
<div class="refsect1" title="Description">
<a id="idp43897984"></a>
<h2>Description</h2>
<p>Upgrade the repository located
at <em class="replaceable"><code>REPOS_PATH</code></em> to the latest
supported schema version.</p>
<p>This functionality is provided as a convenience for
repository administrators who wish to make use of new
Subversion functionality without having to undertake a
potentially costly full repository dump and load
operation. As such, the upgrade performs only the minimum
amount of work needed to accomplish this while still
maintaining the integrity of the repository. While a dump
and subsequent load guarantee the most optimized
repository state, <span class="command"><strong>svnadmin upgrade</strong></span> does
not.</p>
<div class="warning" title="Warning" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Warning">
<tr>
<td rowspan="2" align="center" valign="top" width="25">
<img alt="[Warning]" src="images/warning.png" />
</td>
<th align="left">Warning</th>
</tr>
<tr>
<td align="left" valign="top">
<p>You should <span class="emphasis"><em>always</em></span> back up your
repository before upgrading.</p>
</td>
</tr>
</table>
</div>
</div>
<div class="refsect1" title="Options">
<a id="idp43902672"></a>
<h2>Options</h2>
<p>None</p>
</div>
<div class="refsect1" title="Examples">
<a id="idp43903888"></a>
<h2>Examples</h2>
<p>Upgrade the repository at
path <code class="filename">/var/repos/svn</code>:</p>
<div class="informalexample">
<pre class="screen">
$ svnadmin upgrade /var/repos/svn
Repository lock acquired.
Please wait; upgrading the repository may take some time...
Upgrade completed.
</pre>
</div>
</div>
</div>
<div class="navfooter">
<hr />
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left"><a accesskey="p" href="svn.ref.svnadmin.c.setuuid.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="svn.ref.svnadmin.html#svn.ref.svnadmin.c">Up</a>
</td>
<td width="40%" align="right"> <a accesskey="n" href="svn.ref.svnadmin.c.verify.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">svnadmin setuuid </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
<td width="40%" align="right" valign="top"> svnadmin verify</td>
</tr>
</table>
</div>
<div xmlns="" id="svn-footer">
<hr />
<p>You are reading <em>Version Control with Subversion</em> (for Subversion 1.7), by Ben Collins-Sussman, Brian W. Fitzpatrick, and C. Michael Pilato.<br />
This work is licensed under the <a href="http://creativecommons.org/licenses/by/2.0/">Creative Commons Attribution License v2.0</a>.<br />
To submit comments, corrections, or other contributions to the text, please visit <a href="http://www.svnbook.com/">http://www.svnbook.com/</a>.</p>
</div>
</body>
</html>

View file

@ -0,0 +1,119 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>svnlook filesize</title>
<link rel="stylesheet" href="styles.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2" />
<style type="text/css">
body { background-image: url('images/draft.png');
background-repeat: no-repeat;
background-position: top left;
/* The following properties make the watermark "fixed" on the page. */
/* I think that's just a bit too distracting for the reader... */
/* background-attachment: fixed; */
/* background-position: center center; */
}</style>
<link rel="home" href="index.html" title="Version Control with Subversion [DRAFT]" />
<link rel="up" href="svn.ref.svnlook.html#svn.ref.svnlook.c" title="svnlook Subcommands" />
<link rel="prev" href="svn.ref.svnlook.c.dirs-changed.html" title="svnlook dirs-changed" />
<link rel="next" href="svn.ref.svnlook.c.help.html" title="svnlook help" />
</head>
<body>
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
<th colspan="3" align="center">svnlook filesize</th>
</tr>
<tr>
<td width="20%" align="left"><a accesskey="p" href="svn.ref.svnlook.c.dirs-changed.html">Prev</a> </td>
<th width="60%" align="center">svnlook Subcommands</th>
<td width="20%" align="right"> <a accesskey="n" href="svn.ref.svnlook.c.help.html">Next</a></td>
</tr>
</table>
<hr />
</div>
<div class="refentry" title="svnlook filesize">
<a id="svn.ref.svnlook.c.filesize"></a>
<div class="titlepage"></div>
<a id="idp44044736" class="indexterm"></a>
<div class="refnamediv">
<h2>Name</h2>
<p>svnlook filesize — Print the size (in bytes) of a versioned
file.</p>
</div>
<div class="refsect1" title="Synopsis">
<a id="idp44047904"></a>
<h2>Synopsis</h2>
<p>
<code class="literal">svnlook filesize REPOS_PATH
PATH_IN_REPOS</code>
</p>
</div>
<div class="refsect1" title="Description">
<a id="idp44049552"></a>
<h2>Description</h2>
<p>Print the file size (in bytes) of the file located
at <em class="replaceable"><code>PATH_IN_REPOS</code></em> in the HEAD
revision of the repository identified
by <em class="replaceable"><code>REPOS_PATH</code></em> as a base-10
integer followed by an end-of-line character. Use
the <code class="option">--revision</code> (<code class="option">-r</code>)
and <code class="option">--transaction</code> (<code class="option">-t</code>)
options to specify a version of the file other than HEAD
whose file size you wish to display.</p>
</div>
<div class="refsect1" title="Options">
<a id="idp44053616"></a>
<h2>Options</h2>
<div class="informalexample">
<pre class="screen">
--revision (-r) REV
--transaction (-t) TXN
</pre>
</div>
</div>
<div class="refsect1" title="Examples">
<a id="idp44055520"></a>
<h2>Examples</h2>
<p>The following demonstrates how to display the size of
the <code class="filename">trunk/vendors/deli/soda.txt</code> file
as it appeared in revision 40 of our sample
repository:</p>
<div class="informalexample">
<pre class="screen">
$ svnlook filesize -r 40 /var/svn/repos trunk/vendors/deli/soda.txt
23
$
</pre>
</div>
</div>
</div>
<div class="navfooter">
<hr />
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left"><a accesskey="p" href="svn.ref.svnlook.c.dirs-changed.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="svn.ref.svnlook.html#svn.ref.svnlook.c">Up</a>
</td>
<td width="40%" align="right"> <a accesskey="n" href="svn.ref.svnlook.c.help.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">svnlook dirs-changed </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
<td width="40%" align="right" valign="top"> svnlook help</td>
</tr>
</table>
</div>
<div xmlns="" id="svn-footer">
<hr />
<p>You are reading <em>Version Control with Subversion</em> (for Subversion 1.7), by Ben Collins-Sussman, Brian W. Fitzpatrick, and C. Michael Pilato.<br />
This work is licensed under the <a href="http://creativecommons.org/licenses/by/2.0/">Creative Commons Attribution License v2.0</a>.<br />
To submit comments, corrections, or other contributions to the text, please visit <a href="http://www.svnbook.com/">http://www.svnbook.com/</a>.</p>
</div>
</body>
</html>

View file

@ -0,0 +1,236 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>High-level Logging</title>
<link rel="stylesheet" href="styles.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2" />
<style type="text/css">
body { background-image: url('images/draft.png');
background-repeat: no-repeat;
background-position: top left;
/* The following properties make the watermark "fixed" on the page. */
/* I think that's just a bit too distracting for the reader... */
/* background-attachment: fixed; */
/* background-position: center center; */
}</style>
<link rel="home" href="index.html" title="Version Control with Subversion [DRAFT]" />
<link rel="up" href="svn.serverconfig.html" title="Chapter 6. Server Configuration" />
<link rel="prev" href="svn.serverconfig.pathbasedauthz.html" title="Path-Based Authorization" />
<link rel="next" href="svn.serverconfig.optimization.html" title="Server Optimization" />
</head>
<body>
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
<th colspan="3" align="center">High-level Logging</th>
</tr>
<tr>
<td width="20%" align="left"><a accesskey="p" href="svn.serverconfig.pathbasedauthz.html">Prev</a> </td>
<th width="60%" align="center">Chapter 6. Server Configuration</th>
<td width="20%" align="right"> <a accesskey="n" href="svn.serverconfig.optimization.html">Next</a></td>
</tr>
</table>
<hr />
</div>
<div class="sect1" title="High-level Logging">
<div class="titlepage">
<div>
<div>
<h2 class="title" style="clear: both"><a id="svn.serverconfig.operational-logging"></a>High-level Logging</h2>
</div>
</div>
</div>
<p>Both the Apache <span class="command"><strong>httpd</strong></span>
and <span class="command"><strong>svnserve</strong></span> Subversion servers provide
support for high-level logging of Subversion operations.
Configuring each of the server options to provide this level of
logging is done differently, of course, but the output from each
is designed to conform to a uniform syntax.</p>
<p>To enable high-level logging in <span class="command"><strong>svnserve</strong></span>,
you need only use the <code class="option">--log-file</code> command-line
option when starting the server, passing as the value to the
option the file to which <span class="command"><strong>svnserve</strong></span> should
write its log output.</p>
<div class="informalexample">
<pre class="screen">
$ svnserve -d -r /path/to/repositories --log-file /var/log/svn.log
</pre>
</div>
<p>Enabling the same in Apache is a bit more involved, but is
essentially an extension of Apache's stock log output
configuration mechanisms—see
<a class="xref" href="svn.serverconfig.httpd.html#svn.serverconfig.httpd.extra.logging" title="Apache logging">the section called “Apache logging”</a> for
details.</p>
<p>The following is a list of Subversion action log messages
produced by its high-level logging mechanism, followed by one or
more examples of the log message as it appears in the log
output.</p>
<div class="variablelist">
<dl>
<dt>
<span class="term">Checkout or export</span>
</dt>
<dd>
<pre class="programlisting">
checkout-or-export /path r62 depth=infinity
</pre>
</dd>
<dt>
<span class="term">Commit</span>
</dt>
<dd>
<pre class="programlisting">
commit harry r100
</pre>
</dd>
<dt>
<span class="term">Diffs</span>
</dt>
<dd>
<pre class="programlisting">
diff /path r15:20 depth=infinity ignore-ancestry
diff /path1@15 /path2@20 depth=infinity ignore-ancestry
</pre>
</dd>
<dt>
<span class="term">Fetch a directory</span>
</dt>
<dd>
<pre class="programlisting">
get-dir /trunk r17 text
</pre>
</dd>
<dt>
<span class="term">Fetch a file</span>
</dt>
<dd>
<pre class="programlisting">
get-file /path r20 props
</pre>
</dd>
<dt>
<span class="term">Fetch a file revision</span>
</dt>
<dd>
<pre class="programlisting">
get-file-revs /path r12:15 include-merged-revisions
</pre>
</dd>
<dt>
<span class="term">Fetch merge information</span>
</dt>
<dd>
<pre class="programlisting">
get-mergeinfo (/path1 /path2)
</pre>
</dd>
<dt>
<span class="term">Lock</span>
</dt>
<dd>
<pre class="programlisting">
lock /path steal
</pre>
</dd>
<dt>
<span class="term">Log</span>
</dt>
<dd>
<pre class="programlisting">
log (/path1,/path2,/path3) r20:90 discover-changed-paths revprops=()
</pre>
</dd>
<dt>
<span class="term">Replay revisions (svnsync)</span>
</dt>
<dd>
<pre class="programlisting">
replay /path r19
</pre>
</dd>
<dt>
<span class="term">Revision property change</span>
</dt>
<dd>
<pre class="programlisting">
change-rev-prop r50 propertyname
</pre>
</dd>
<dt>
<span class="term">Revision property list</span>
</dt>
<dd>
<pre class="programlisting">
rev-proplist r34
</pre>
</dd>
<dt>
<span class="term">Status</span>
</dt>
<dd>
<pre class="programlisting">
status /path r62 depth=infinity
</pre>
</dd>
<dt>
<span class="term">Switch</span>
</dt>
<dd>
<pre class="programlisting">
switch /pathA /pathB@50 depth=infinity
</pre>
</dd>
<dt>
<span class="term">Unlock</span>
</dt>
<dd>
<pre class="programlisting">
unlock /path break
</pre>
</dd>
<dt>
<span class="term">Update</span>
</dt>
<dd>
<pre class="programlisting">
update /path r17 send-copyfrom-args
</pre>
</dd>
</dl>
</div>
<p>As a convenience to administrators who wish to post-process
their Subversion high-level logging output (perhaps for
reporting or analysis purposes), Subversion source code
distributions provide a Python module (located at
<code class="filename">tools/server-side/svn_server_log_parse.py</code>)
which can be used to parse Subversion's log output.</p>
</div>
<div class="navfooter">
<hr />
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left"><a accesskey="p" href="svn.serverconfig.pathbasedauthz.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="svn.serverconfig.html">Up</a>
</td>
<td width="40%" align="right"> <a accesskey="n" href="svn.serverconfig.optimization.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">Path-Based Authorization </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
<td width="40%" align="right" valign="top"> Server Optimization</td>
</tr>
</table>
</div>
<div xmlns="" id="svn-footer">
<hr />
<p>You are reading <em>Version Control with Subversion</em> (for Subversion 1.7), by Ben Collins-Sussman, Brian W. Fitzpatrick, and C. Michael Pilato.<br />
This work is licensed under the <a href="http://creativecommons.org/licenses/by/2.0/">Creative Commons Attribution License v2.0</a>.<br />
To submit comments, corrections, or other contributions to the text, please visit <a href="http://www.svnbook.com/">http://www.svnbook.com/</a>.</p>
</div>
</body>
</html>

View file

@ -0,0 +1,140 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>svn changelist</title>
<link rel="stylesheet" href="styles.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2" />
<style type="text/css">
body { background-image: url('images/draft.png');
background-repeat: no-repeat;
background-position: top left;
/* The following properties make the watermark "fixed" on the page. */
/* I think that's just a bit too distracting for the reader... */
/* background-attachment: fixed; */
/* background-position: center center; */
}</style>
<link rel="home" href="index.html" title="Version Control with Subversion [DRAFT]" />
<link rel="up" href="svn.ref.svn.html#svn.ref.svn.c" title="svn Subcommands" />
<link rel="prev" href="svn.ref.svn.c.cat.html" title="svn cat" />
<link rel="next" href="svn.ref.svn.c.checkout.html" title="svn checkout" />
</head>
<body>
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
<th colspan="3" align="center">svn changelist</th>
</tr>
<tr>
<td width="20%" align="left"><a accesskey="p" href="svn.ref.svn.c.cat.html">Prev</a> </td>
<th width="60%" align="center">svn Subcommands</th>
<td width="20%" align="right"> <a accesskey="n" href="svn.ref.svn.c.checkout.html">Next</a></td>
</tr>
</table>
<hr />
</div>
<div class="refentry" title="svn changelist">
<a id="svn.ref.svn.c.changelist"></a>
<div class="titlepage"></div>
<a id="idp42575728" class="indexterm"></a>
<div class="refnamediv">
<h2>Name</h2>
<p>svn changelist, cl — Associate (or deassociate) local paths with a
changelist.</p>
</div>
<div class="refsect1" title="Synopsis">
<a id="idp42579248"></a>
<h2>Synopsis</h2>
<p>
<code class="literal">changelist CLNAME TARGET...</code>
</p>
<p>
<code class="literal">changelist --remove TARGET...</code>
</p>
</div>
<div class="refsect1" title="Description">
<a id="idp42581712"></a>
<h2>Description</h2>
<p>Used for dividing files in a working copy into a
changelist (logical named grouping) in order to allow
users to easily work on multiple file collections within a
single working copy.</p>
</div>
<div class="refsect1" title="Options">
<a id="idp42583136"></a>
<h2>Options</h2>
<div class="informalexample">
<pre class="screen">
--changelist ARG
--depth ARG
--quiet (-q)
--recursive (-R)
--remove
--targets FILENAME
</pre>
</div>
</div>
<div class="refsect1" title="Example">
<a id="idp42585088"></a>
<h2>Example</h2>
<p>Edit three files, add them to a changelist, then
commit only files in that changelist:</p>
<div class="informalexample">
<pre class="screen">
$ svn changelist issue1729 foo.c bar.c baz.c
A [issue1729] foo.c
A [issue1729] bar.c
A [issue1729] baz.c
$ svn status
A someotherfile.c
A test/sometest.c
--- Changelist 'issue1729':
A foo.c
A bar.c
A baz.c
$ svn commit --changelist issue1729 -m "Fixing Issue 1729."
Adding bar.c
Adding baz.c
Adding foo.c
Transmitting file data ...
Committed revision 2.
$ svn status
A someotherfile.c
A test/sometest.c
$
</pre>
</div>
<p>Note that in the previous example, only the files in
changelist <code class="literal">issue1729</code> were
committed.</p>
</div>
</div>
<div class="navfooter">
<hr />
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left"><a accesskey="p" href="svn.ref.svn.c.cat.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="svn.ref.svn.html#svn.ref.svn.c">Up</a>
</td>
<td width="40%" align="right"> <a accesskey="n" href="svn.ref.svn.c.checkout.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">svn cat </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
<td width="40%" align="right" valign="top"> svn checkout</td>
</tr>
</table>
</div>
<div xmlns="" id="svn-footer">
<hr />
<p>You are reading <em>Version Control with Subversion</em> (for Subversion 1.7), by Ben Collins-Sussman, Brian W. Fitzpatrick, and C. Michael Pilato.<br />
This work is licensed under the <a href="http://creativecommons.org/licenses/by/2.0/">Creative Commons Attribution License v2.0</a>.<br />
To submit comments, corrections, or other contributions to the text, please visit <a href="http://www.svnbook.com/">http://www.svnbook.com/</a>.</p>
</div>
</body>
</html>

View file

@ -0,0 +1,109 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>post-lock</title>
<link rel="stylesheet" href="styles.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2" />
<style type="text/css">
body { background-image: url('images/draft.png');
background-repeat: no-repeat;
background-position: top left;
/* The following properties make the watermark "fixed" on the page. */
/* I think that's just a bit too distracting for the reader... */
/* background-attachment: fixed; */
/* background-position: center center; */
}</style>
<link rel="home" href="index.html" title="Version Control with Subversion [DRAFT]" />
<link rel="up" href="svn.ref.reposhooks.html" title="Repository Hooks" />
<link rel="prev" href="svn.ref.reposhooks.pre-lock.html" title="pre-lock" />
<link rel="next" href="svn.ref.reposhooks.pre-unlock.html" title="pre-unlock" />
</head>
<body>
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
<th colspan="3" align="center">post-lock</th>
</tr>
<tr>
<td width="20%" align="left"><a accesskey="p" href="svn.ref.reposhooks.pre-lock.html">Prev</a> </td>
<th width="60%" align="center">Repository Hooks</th>
<td width="20%" align="right"> <a accesskey="n" href="svn.ref.reposhooks.pre-unlock.html">Next</a></td>
</tr>
</table>
<hr />
</div>
<div class="refentry" title="post-lock">
<a id="svn.ref.reposhooks.post-lock"></a>
<div class="titlepage"></div>
<a id="idp44927824" class="indexterm"></a>
<div class="refnamediv">
<h2>Name</h2>
<p>post-lock — Notification of a successful path lock.</p>
</div>
<div class="refsect1" title="Description">
<a id="idp44930912"></a>
<h2>Description</h2>
<p>The <code class="literal">post-lock</code> hook runs after one or
more paths have been locked. It is typically used to send
email notification of the lock event.</p>
<p>If the <code class="literal">post-lock</code> hook returns a
nonzero exit status, the lock <span class="emphasis"><em>will
not</em></span> be aborted since it has already
completed. However, anything that the hook printed
to <code class="filename">stderr</code> will be marshalled back to the
client, making it easier to diagnose hook failures.</p>
</div>
<div class="refsect1" title="Input parameter(s)">
<a id="idp44935424"></a>
<h2>Input parameter(s)</h2>
<p>The command-line arguments passed to the hook program,
in order, are:</p>
<div class="orderedlist">
<ol class="orderedlist" type="1">
<li class="listitem">
<p>Repository path</p>
</li>
<li class="listitem">
<p>Authenticated username of the person who locked the
paths</p>
</li>
</ol>
</div>
<p>Additionally, the list of paths locked is passed to the
hook program via standard input, one path per line.</p>
</div>
<div class="refsect1" title="Common uses">
<a id="idp44939808"></a>
<h2>Common uses</h2>
<p>Lock notification</p>
</div>
</div>
<div class="navfooter">
<hr />
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left"><a accesskey="p" href="svn.ref.reposhooks.pre-lock.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="svn.ref.reposhooks.html">Up</a>
</td>
<td width="40%" align="right"> <a accesskey="n" href="svn.ref.reposhooks.pre-unlock.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">pre-lock </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
<td width="40%" align="right" valign="top"> pre-unlock</td>
</tr>
</table>
</div>
<div xmlns="" id="svn-footer">
<hr />
<p>You are reading <em>Version Control with Subversion</em> (for Subversion 1.7), by Ben Collins-Sussman, Brian W. Fitzpatrick, and C. Michael Pilato.<br />
This work is licensed under the <a href="http://creativecommons.org/licenses/by/2.0/">Creative Commons Attribution License v2.0</a>.<br />
To submit comments, corrections, or other contributions to the text, please visit <a href="http://www.svnbook.com/">http://www.svnbook.com/</a>.</p>
</div>
</body>
</html>

View file

@ -0,0 +1,123 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>svnlook proplist</title>
<link rel="stylesheet" href="styles.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2" />
<style type="text/css">
body { background-image: url('images/draft.png');
background-repeat: no-repeat;
background-position: top left;
/* The following properties make the watermark "fixed" on the page. */
/* I think that's just a bit too distracting for the reader... */
/* background-attachment: fixed; */
/* background-position: center center; */
}</style>
<link rel="home" href="index.html" title="Version Control with Subversion [DRAFT]" />
<link rel="up" href="svn.ref.svnlook.html#svn.ref.svnlook.c" title="svnlook Subcommands" />
<link rel="prev" href="svn.ref.svnlook.c.propget.html" title="svnlook propget" />
<link rel="next" href="svn.ref.svnlook.c.tree.html" title="svnlook tree" />
</head>
<body>
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
<th colspan="3" align="center">svnlook proplist</th>
</tr>
<tr>
<td width="20%" align="left"><a accesskey="p" href="svn.ref.svnlook.c.propget.html">Prev</a> </td>
<th width="60%" align="center">svnlook Subcommands</th>
<td width="20%" align="right"> <a accesskey="n" href="svn.ref.svnlook.c.tree.html">Next</a></td>
</tr>
</table>
<hr />
</div>
<div class="refentry" title="svnlook proplist">
<a id="svn.ref.svnlook.c.proplist"></a>
<div class="titlepage"></div>
<a id="idp44133968" class="indexterm"></a>
<div class="refnamediv">
<h2>Name</h2>
<p>svnlook proplist, plist, pl — Print the names and values of versioned file and
directory properties.</p>
</div>
<div class="refsect1" title="Synopsis">
<a id="idp44137920"></a>
<h2>Synopsis</h2>
<p>
<code class="literal">svnlook proplist REPOS_PATH [PATH_IN_REPOS]</code>
</p>
</div>
<div class="refsect1" title="Description">
<a id="idp44139568"></a>
<h2>Description</h2>
<p>List the properties of a path in the repository. With
<code class="option">--verbose</code> (<code class="option">-v</code>), show the
property values too.</p>
</div>
<div class="refsect1" title="Options">
<a id="idp44141696"></a>
<h2>Options</h2>
<div class="informalexample">
<pre class="screen">
--revision (-r) REV
--revprop
--transaction (-t) TXN
--verbose (-v)
--xml
</pre>
</div>
</div>
<div class="refsect1" title="Examples">
<a id="idp44143632"></a>
<h2>Examples</h2>
<p>This shows the names of properties set on the file
<code class="filename">/trunk/README</code> in the
<code class="literal">HEAD</code> revision:</p>
<div class="informalexample">
<pre class="screen">
$ svnlook proplist /var/svn/repos /trunk/README
original-author
svn:mime-type
</pre>
</div>
<p>This is the same command as in the preceding example,
but this time showing the property values as well:</p>
<div class="informalexample">
<pre class="screen">
$ svnlook -v proplist /var/svn/repos /trunk/README
original-author : harry
svn:mime-type : text/plain
</pre>
</div>
</div>
</div>
<div class="navfooter">
<hr />
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left"><a accesskey="p" href="svn.ref.svnlook.c.propget.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="svn.ref.svnlook.html#svn.ref.svnlook.c">Up</a>
</td>
<td width="40%" align="right"> <a accesskey="n" href="svn.ref.svnlook.c.tree.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">svnlook propget </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
<td width="40%" align="right" valign="top"> svnlook tree</td>
</tr>
</table>
</div>
<div xmlns="" id="svn-footer">
<hr />
<p>You are reading <em>Version Control with Subversion</em> (for Subversion 1.7), by Ben Collins-Sussman, Brian W. Fitzpatrick, and C. Michael Pilato.<br />
This work is licensed under the <a href="http://creativecommons.org/licenses/by/2.0/">Creative Commons Attribution License v2.0</a>.<br />
To submit comments, corrections, or other contributions to the text, please visit <a href="http://www.svnbook.com/">http://www.svnbook.com/</a>.</p>
</div>
</body>
</html>

View file

@ -0,0 +1,228 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Traversing Branches</title>
<link rel="stylesheet" href="styles.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2" />
<style type="text/css">
body { background-image: url('images/draft.png');
background-repeat: no-repeat;
background-position: top left;
/* The following properties make the watermark "fixed" on the page. */
/* I think that's just a bit too distracting for the reader... */
/* background-attachment: fixed; */
/* background-position: center center; */
}</style>
<link rel="home" href="index.html" title="Version Control with Subversion [DRAFT]" />
<link rel="up" href="svn.branchmerge.html" title="Chapter 4. Branching and Merging" />
<link rel="prev" href="svn.branchmerge.advanced.html" title="Advanced Merging" />
<link rel="next" href="svn.branchmerge.tags.html" title="Tags" />
</head>
<body>
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
<th colspan="3" align="center">Traversing Branches</th>
</tr>
<tr>
<td width="20%" align="left"><a accesskey="p" href="svn.branchmerge.advanced.html">Prev</a> </td>
<th width="60%" align="center">Chapter 4. Branching and Merging</th>
<td width="20%" align="right"> <a accesskey="n" href="svn.branchmerge.tags.html">Next</a></td>
</tr>
</table>
<hr />
</div>
<div class="sect1" title="Traversing Branches">
<div class="titlepage">
<div>
<div>
<h2 class="title" style="clear: both"><a id="svn.branchmerge.switchwc"></a>Traversing Branches</h2>
</div>
</div>
</div>
<p>The <span class="command"><strong>svn switch</strong></span> command transforms an
existing working copy to reflect a different branch. While this
command isn't strictly necessary for working with branches, it
provides a nice shortcut. In our earlier example,
after creating your private branch, you checked out a fresh
working copy of the new repository directory. Instead, you can
simply ask Subversion to change your working copy of
<code class="filename">/calc/trunk</code> to mirror the new branch
location:</p>
<div class="informalexample">
<pre class="screen">
$ cd calc
$ svn info | grep URL
URL: http://svn.example.com/repos/calc/trunk
$ svn switch ^/calc/branches/my-calc-branch
U integer.c
U button.c
U Makefile
Updated to revision 341.
$ svn info | grep URL
URL: http://svn.example.com/repos/calc/branches/my-calc-branch
</pre>
</div>
<p><span class="quote"><span class="quote">Switching</span></span> a working copy that has no local
modifications to a different branch results in the working copy
looking just as it would if you'd done a fresh checkout of the
directory. It's usually more efficient to
use this command, because often branches differ by only a small
degree. The server sends only the minimal set of changes
necessary to make your working copy reflect the branch
directory.</p>
<p>The <span class="command"><strong>svn switch</strong></span> command also takes a
<code class="option">--revision</code> (<code class="option">-r</code>) option, so you
need not always move your working copy to the
<code class="literal">HEAD</code> of the branch.</p>
<p>Of course, most projects are more complicated than our
<code class="filename">calc</code> example, and contain multiple
subdirectories. Subversion users often follow a specific
algorithm when using branches:</p>
<div class="orderedlist">
<ol class="orderedlist" type="1">
<li class="listitem">
<p>Copy the project's entire <span class="quote"><span class="quote">trunk</span></span> to a new
branch directory.</p>
</li>
<li class="listitem">
<p>Switch only <span class="emphasis"><em>part</em></span> of the trunk
working copy to mirror the branch.</p>
</li>
</ol>
</div>
<p>In other words, if a user knows that the branch work needs
to happen on only a specific subdirectory, she uses
<span class="command"><strong>svn switch</strong></span> to move only that subdirectory to
the branch. (Or sometimes users will switch just a single
working file to the branch!) That way, the user can continue to
receive normal <span class="quote"><span class="quote">trunk</span></span> updates to most of her
working copy, but the switched portions will remain immune
(unless someone commits a change to her branch). This feature
adds a whole new dimension to the concept of a <span class="quote"><span class="quote">mixed
working copy</span></span>—not only can working copies contain a
mixture of working revisions, but they can also contain a
mixture of repository locations as well.</p>
<p>If your working copy contains a number of switched subtrees
from different repository locations, it continues to function as
normal. When you update, you'll receive patches to each subtree
as appropriate. When you commit, your local changes will still
be applied as a single, atomic change to the repository.</p>
<p>Note that while it's okay for your working copy to reflect a
mixture of repository locations, these locations must all be
within the <span class="emphasis"><em>same</em></span> repository. Subversion
repositories aren't yet able to communicate with one another;
that feature is planned for the
future.<sup>[<a id="idp36438032" href="#ftn.idp36438032" class="footnote">28</a>]</sup></p>
<div class="sidebar" title="Switches and Updates">
<p class="title">
<b>Switches and Updates</b>
</p>
<p>Have you noticed that the output of <span class="command"><strong>svn
switch</strong></span> and <span class="command"><strong>svn update</strong></span> looks the
same? The switch command is actually a superset of the update
command.</p>
<p>When you run <span class="command"><strong>svn update</strong></span>, you're asking
the repository to compare two trees. The repository does so,
and then sends a description of the differences back to the
client. The only difference between <span class="command"><strong>svn
switch</strong></span> and <span class="command"><strong>svn update</strong></span> is that the
latter command always compares two identical repository
paths.</p>
<p>That is, if your working copy is a mirror of
<code class="filename">/calc/trunk</code>, <span class="command"><strong>svn
update</strong></span> will automatically compare your working copy
of <code class="filename">/calc/trunk</code> to
<code class="filename">/calc/trunk</code> in the
<code class="literal">HEAD</code> revision. If you're switching your
working copy to a branch, <span class="command"><strong>svn switch</strong></span>
will compare your working copy of
<code class="filename">/calc/trunk</code> to some
<span class="emphasis"><em>other</em></span> branch directory in the
<code class="literal">HEAD</code> revision.</p>
<p>In other words, an update moves your working copy through
time. A switch moves your working copy through time
<span class="emphasis"><em>and</em></span> space.</p>
</div>
<p>Because <span class="command"><strong>svn switch</strong></span> is essentially a
variant of <span class="command"><strong>svn update</strong></span>, it shares the same
behaviors; any local modifications in your working copy are
preserved when new data arrives from the repository.</p>
<div class="tip" title="Tip" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Tip">
<tr>
<td rowspan="2" align="center" valign="top" width="25">
<img alt="[Tip]" src="images/tip.png" />
</td>
<th align="left">Tip</th>
</tr>
<tr>
<td align="left" valign="top">
<p>Have you ever found yourself making some complex edits (in
your <code class="filename">/trunk</code> working copy) and suddenly
realized, <span class="quote"><span class="quote">Hey, these changes ought to be in their own
branch?</span></span> A great technique to do this can be summarized
in two steps:</p>
<div class="informalexample">
<pre class="screen">
$ svn copy http://svn.example.com/repos/calc/trunk \
http://svn.example.com/repos/calc/branches/newbranch \
-m "Create branch 'newbranch'."
Committed revision 353.
$ svn switch ^/calc/branches/newbranch
At revision 353.
</pre>
</div>
<p>The <span class="command"><strong>svn switch</strong></span> command, like
<span class="command"><strong>svn update</strong></span>, preserves your local edits. At
this point, your working copy is now a reflection of the newly
created branch, and your next <span class="command"><strong>svn commit</strong></span>
invocation will send your changes there.</p>
</td>
</tr>
</table>
</div>
<div class="footnotes">
<br />
<hr width="100" align="left" />
<div class="footnote">
<p><sup>[<a id="ftn.idp36438032" href="#idp36438032" class="para">28</a>] </sup>You <span class="emphasis"><em>can</em></span>, however,
use <span class="command"><strong>svn relocate</strong></span> if the URL of your server
changes and you don't want to abandon an existing working copy.
See <a class="xref" href="svn.ref.svn.c.relocate.html" title="svn relocate">svn relocate</a> for more information
and an example.</p>
</div>
</div>
</div>
<div class="navfooter">
<hr />
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left"><a accesskey="p" href="svn.branchmerge.advanced.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="svn.branchmerge.html">Up</a>
</td>
<td width="40%" align="right"> <a accesskey="n" href="svn.branchmerge.tags.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">Advanced Merging </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
<td width="40%" align="right" valign="top"> Tags</td>
</tr>
</table>
</div>
<div xmlns="" id="svn-footer">
<hr />
<p>You are reading <em>Version Control with Subversion</em> (for Subversion 1.7), by Ben Collins-Sussman, Brian W. Fitzpatrick, and C. Michael Pilato.<br />
This work is licensed under the <a href="http://creativecommons.org/licenses/by/2.0/">Creative Commons Attribution License v2.0</a>.<br />
To submit comments, corrections, or other contributions to the text, please visit <a href="http://www.svnbook.com/">http://www.svnbook.com/</a>.</p>
</div>
</body>
</html>

View file

@ -0,0 +1,188 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>svnlook changed</title>
<link rel="stylesheet" href="styles.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2" />
<style type="text/css">
body { background-image: url('images/draft.png');
background-repeat: no-repeat;
background-position: top left;
/* The following properties make the watermark "fixed" on the page. */
/* I think that's just a bit too distracting for the reader... */
/* background-attachment: fixed; */
/* background-position: center center; */
}</style>
<link rel="home" href="index.html" title="Version Control with Subversion [DRAFT]" />
<link rel="up" href="svn.ref.svnlook.html#svn.ref.svnlook.c" title="svnlook Subcommands" />
<link rel="prev" href="svn.ref.svnlook.c.cat.html" title="svnlook cat" />
<link rel="next" href="svn.ref.svnlook.c.date.html" title="svnlook date" />
</head>
<body>
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
<th colspan="3" align="center">svnlook changed</th>
</tr>
<tr>
<td width="20%" align="left"><a accesskey="p" href="svn.ref.svnlook.c.cat.html">Prev</a> </td>
<th width="60%" align="center">svnlook Subcommands</th>
<td width="20%" align="right"> <a accesskey="n" href="svn.ref.svnlook.c.date.html">Next</a></td>
</tr>
</table>
<hr />
</div>
<div class="refentry" title="svnlook changed">
<a id="svn.ref.svnlook.c.changed"></a>
<div class="titlepage"></div>
<a id="idp43978944" class="indexterm"></a>
<div class="refnamediv">
<h2>Name</h2>
<p>svnlook changed — Print the paths that were changed.</p>
</div>
<div class="refsect1" title="Synopsis">
<a id="idp43982032"></a>
<h2>Synopsis</h2>
<p>
<code class="literal">svnlook changed REPOS_PATH</code>
</p>
</div>
<div class="refsect1" title="Description">
<a id="idp43983664"></a>
<h2>Description</h2>
<p>Print the paths that were changed in a particular
revision or transaction, as well as <span class="quote"><span class="quote">svn
update-style</span></span> status letters in the first two
columns:</p>
<div class="variablelist">
<dl>
<dt>
<span class="term">
<code class="literal">'A '</code>
</span>
</dt>
<dd>
<p>Item added to repository</p>
</dd>
<dt>
<span class="term">
<code class="literal">'D '</code>
</span>
</dt>
<dd>
<p>Item deleted from repository</p>
</dd>
<dt>
<span class="term">
<code class="literal">'U '</code>
</span>
</dt>
<dd>
<p>File contents changed</p>
</dd>
<dt>
<span class="term">
<code class="literal">'_U'</code>
</span>
</dt>
<dd>
<p>Properties of item changed; note the leading underscore</p>
</dd>
<dt>
<span class="term">
<code class="literal">'UU'</code>
</span>
</dt>
<dd>
<p>File contents and properties changed</p>
</dd>
</dl>
</div>
<p>Files and directories can be distinguished, as
directory paths are displayed with a
trailing <span class="quote"><span class="quote"><code class="literal">/</code></span></span>
character.</p>
</div>
<div class="refsect1" title="Options">
<a id="idp43997248"></a>
<h2>Options</h2>
<div class="informalexample">
<pre class="screen">
--copy-info
--revision (-r) REV
--transaction (-t) TXN
</pre>
</div>
</div>
<div class="refsect1" title="Examples">
<a id="idp43999168"></a>
<h2>Examples</h2>
<p>This shows a list of all the changed files and
directories in revision 39 of a test repository. Note
that the first changed item is a directory, as evidenced
by the trailing <code class="literal">/</code>:</p>
<div class="informalexample">
<pre class="screen">
$ svnlook changed -r 39 /var/svn/repos
A trunk/vendors/deli/
A trunk/vendors/deli/chips.txt
A trunk/vendors/deli/sandwich.txt
A trunk/vendors/deli/pickle.txt
U trunk/vendors/baker/bagel.txt
_U trunk/vendors/baker/croissant.txt
UU trunk/vendors/baker/pretzel.txt
D trunk/vendors/baker/baguette.txt
</pre>
</div>
<p>Here's an example that shows a revision in which a
file was renamed:</p>
<div class="informalexample">
<pre class="screen">
$ svnlook changed -r 64 /var/svn/repos
A trunk/vendors/baker/toast.txt
D trunk/vendors/baker/bread.txt
</pre>
</div>
<p>Unfortunately, nothing in the preceding output reveals
the connection between the deleted and added files. Use
the <code class="option">--copy-info</code> option to make this
relationship more apparent:</p>
<div class="informalexample">
<pre class="screen">
$ svnlook changed -r 64 --copy-info /var/svn/repos
A + trunk/vendors/baker/toast.txt
(from trunk/vendors/baker/bread.txt:r63)
D trunk/vendors/baker/bread.txt
</pre>
</div>
</div>
</div>
<div class="navfooter">
<hr />
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left"><a accesskey="p" href="svn.ref.svnlook.c.cat.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="svn.ref.svnlook.html#svn.ref.svnlook.c">Up</a>
</td>
<td width="40%" align="right"> <a accesskey="n" href="svn.ref.svnlook.c.date.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">svnlook cat </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
<td width="40%" align="right" valign="top"> svnlook date</td>
</tr>
</table>
</div>
<div xmlns="" id="svn-footer">
<hr />
<p>You are reading <em>Version Control with Subversion</em> (for Subversion 1.7), by Ben Collins-Sussman, Brian W. Fitzpatrick, and C. Michael Pilato.<br />
This work is licensed under the <a href="http://creativecommons.org/licenses/by/2.0/">Creative Commons Attribution License v2.0</a>.<br />
To submit comments, corrections, or other contributions to the text, please visit <a href="http://www.svnbook.com/">http://www.svnbook.com/</a>.</p>
</div>
</body>
</html>

View file

@ -0,0 +1,105 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>svnadmin crashtest</title>
<link rel="stylesheet" href="styles.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2" />
<style type="text/css">
body { background-image: url('images/draft.png');
background-repeat: no-repeat;
background-position: top left;
/* The following properties make the watermark "fixed" on the page. */
/* I think that's just a bit too distracting for the reader... */
/* background-attachment: fixed; */
/* background-position: center center; */
}</style>
<link rel="home" href="index.html" title="Version Control with Subversion [DRAFT]" />
<link rel="up" href="svn.ref.svnadmin.html#svn.ref.svnadmin.c" title="svnadmin Subcommands" />
<link rel="prev" href="svn.ref.svnadmin.html" title="svnadmin—Subversion Repository Administration" />
<link rel="next" href="svn.ref.svnadmin.c.create.html" title="svnadmin create" />
</head>
<body>
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
<th colspan="3" align="center">svnadmin crashtest</th>
</tr>
<tr>
<td width="20%" align="left"><a accesskey="p" href="svn.ref.svnadmin.html">Prev</a> </td>
<th width="60%" align="center">svnadmin Subcommands</th>
<td width="20%" align="right"> <a accesskey="n" href="svn.ref.svnadmin.c.create.html">Next</a></td>
</tr>
</table>
<hr />
</div>
<div class="refentry" title="svnadmin crashtest">
<a id="svn.ref.svnadmin.c.crashtest"></a>
<div class="titlepage"></div>
<a id="idp43623968" class="indexterm"></a>
<div class="refnamediv">
<h2>Name</h2>
<p>svnadmin crashtest — Simulate a process that crashes.</p>
</div>
<div class="refsect1" title="Synopsis">
<a id="idp43627056"></a>
<h2>Synopsis</h2>
<p>
<code class="literal">svnadmin crashtest REPOS_PATH</code>
</p>
</div>
<div class="refsect1" title="Description">
<a id="idp43628688"></a>
<h2>Description</h2>
<p>Open the repository at <em class="replaceable"><code>REPOS_PATH</code></em>, then abort, thus
simulating a process that crashes while holding an open
repository handle. This is used for testing automatic
repository recovery (a new feature in Berkeley DB 4.4).
It's unlikely that you'll need to run this
command.</p>
</div>
<div class="refsect1" title="Options">
<a id="idp43630640"></a>
<h2>Options</h2>
<p>None</p>
</div>
<div class="refsect1" title="Examples">
<a id="idp43631856"></a>
<h2>Examples</h2>
<div class="informalexample">
<pre class="screen">
$ svnadmin crashtest /var/svn/repos
Aborted
</pre>
</div>
<p>Exciting, isn't it?</p>
</div>
</div>
<div class="navfooter">
<hr />
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left"><a accesskey="p" href="svn.ref.svnadmin.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="svn.ref.svnadmin.html#svn.ref.svnadmin.c">Up</a>
</td>
<td width="40%" align="right"> <a accesskey="n" href="svn.ref.svnadmin.c.create.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">svnadmin—Subversion Repository Administration </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
<td width="40%" align="right" valign="top"> svnadmin create</td>
</tr>
</table>
</div>
<div xmlns="" id="svn-footer">
<hr />
<p>You are reading <em>Version Control with Subversion</em> (for Subversion 1.7), by Ben Collins-Sussman, Brian W. Fitzpatrick, and C. Michael Pilato.<br />
This work is licensed under the <a href="http://creativecommons.org/licenses/by/2.0/">Creative Commons Attribution License v2.0</a>.<br />
To submit comments, corrections, or other contributions to the text, please visit <a href="http://www.svnbook.com/">http://www.svnbook.com/</a>.</p>
</div>
</body>
</html>

View file

@ -0,0 +1,169 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>svnsync copy-revprops</title>
<link rel="stylesheet" href="styles.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2" />
<style type="text/css">
body { background-image: url('images/draft.png');
background-repeat: no-repeat;
background-position: top left;
/* The following properties make the watermark "fixed" on the page. */
/* I think that's just a bit too distracting for the reader... */
/* background-attachment: fixed; */
/* background-position: center center; */
}</style>
<link rel="home" href="index.html" title="Version Control with Subversion [DRAFT]" />
<link rel="up" href="svn.ref.svnsync.html#svn.ref.svnsync.c" title="svnsync Subcommands" />
<link rel="prev" href="svn.ref.svnsync.html" title="svnsync—Subversion Repository Mirroring" />
<link rel="next" href="svn.ref.svnsync.c.help.html" title="svnsync help" />
</head>
<body>
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
<th colspan="3" align="center">svnsync copy-revprops</th>
</tr>
<tr>
<td width="20%" align="left"><a accesskey="p" href="svn.ref.svnsync.html">Prev</a> </td>
<th width="60%" align="center">svnsync Subcommands</th>
<td width="20%" align="right"> <a accesskey="n" href="svn.ref.svnsync.c.help.html">Next</a></td>
</tr>
</table>
<hr />
</div>
<div class="refentry" title="svnsync copy-revprops">
<a id="svn.ref.svnsync.c.copy-revprops"></a>
<div class="titlepage"></div>
<a id="idp44248896" class="indexterm"></a>
<div class="refnamediv">
<h2>Name</h2>
<p>svnsync copy-revprops — Copy all revision properties for a particular
revision (or range of revisions) from the source
repository to the mirror repository.</p>
</div>
<div class="refsect1" title="Synopsis">
<a id="idp44252160"></a>
<h2>Synopsis</h2>
<p>
<code class="literal">svnsync copy-revprops DEST_URL
[SOURCE_URL]</code>
</p>
<p>
<code class="literal">svnsync copy-revprops DEST_URL
REV[:REV2]</code>
</p>
</div>
<div class="refsect1" title="Description">
<a id="idp44254656"></a>
<h2>Description</h2>
<p>Because Subversion revision properties can be changed
at any time, it's possible that the properties for some
revision might be changed after that revision has already
been synchronized to another repository. Because the
<span class="command"><strong>svnsync synchronize</strong></span> command operates
only on the range of revisions that have not yet been
synchronized, it won't notice a revision property change
outside that range. Left as is, this causes a deviation
in the values of that revision's properties between the
source and mirror repositories. <span class="command"><strong>svnsync
copy-revprops</strong></span> is the answer to this problem.
Use it to resynchronize the revision properties for a
particular revision or range of revisions.</p>
<p>When <em class="replaceable"><code>SOURCE_URL</code></em> is
provided, <span class="command"><strong>svnsync</strong></span> will use it as the
repository URL which the destination repository is
mirroring. Generally, <em class="replaceable"><code>SOURCE_URL</code></em>
will be exactly the same source URL as was used with
the <span class="command"><strong>svnsync initialize</strong></span> command when the
mirror was first set up. You may choose, however, to
omit <em class="replaceable"><code>SOURCE_URL</code></em>, in which
case <span class="command"><strong>svnsync</strong></span> will consult the mirror
repository's records to determine the source URL which
should be used.</p>
<div class="warning" title="Warning" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Warning">
<tr>
<td rowspan="2" align="center" valign="top" width="25">
<img alt="[Warning]" src="images/warning.png" />
</td>
<th align="left">Warning</th>
</tr>
<tr>
<td align="left" valign="top">
<p>We strongly recommend that you specify the source
URL on the command-line, especially when untrusted users
have write access to the revision 0 properties
which <span class="command"><strong>svnsync</strong></span> uses to coordinate its
efforts.</p>
</td>
</tr>
</table>
</div>
</div>
<div class="refsect1" title="Options">
<a id="idp44264032"></a>
<h2>Options</h2>
<div class="informalexample">
<pre class="screen">
--config-dir DIR
--config-option
--disable-locking
--no-auth-cache
--non-interactive
--quiet (-q)
--revision (-r)
--source-password ARG
--source-prop-encoding
--source-username ARG
--steal-lock
--sync-password ARG
--sync-username ARG
--trust-server-cert
</pre>
</div>
</div>
<div class="refsect1" title="Examples">
<a id="idp44266144"></a>
<h2>Examples</h2>
<p>Resynchronize the revision properties associated with
a single revision (r6):</p>
<div class="informalexample">
<pre class="screen">
$ svnsync copy-revprops -r 6 file:///var/svn/repos-mirror \
http://svn.example.com/repos
Copied properties for revision 6.
$
</pre>
</div>
</div>
</div>
<div class="navfooter">
<hr />
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left"><a accesskey="p" href="svn.ref.svnsync.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="svn.ref.svnsync.html#svn.ref.svnsync.c">Up</a>
</td>
<td width="40%" align="right"> <a accesskey="n" href="svn.ref.svnsync.c.help.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">svnsync—Subversion Repository Mirroring </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
<td width="40%" align="right" valign="top"> svnsync help</td>
</tr>
</table>
</div>
<div xmlns="" id="svn-footer">
<hr />
<p>You are reading <em>Version Control with Subversion</em> (for Subversion 1.7), by Ben Collins-Sussman, Brian W. Fitzpatrick, and C. Michael Pilato.<br />
This work is licensed under the <a href="http://creativecommons.org/licenses/by/2.0/">Creative Commons Attribution License v2.0</a>.<br />
To submit comments, corrections, or other contributions to the text, please visit <a href="http://www.svnbook.com/">http://www.svnbook.com/</a>.</p>
</div>
</body>
</html>

View file

@ -0,0 +1,107 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>svnlook author</title>
<link rel="stylesheet" href="styles.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2" />
<style type="text/css">
body { background-image: url('images/draft.png');
background-repeat: no-repeat;
background-position: top left;
/* The following properties make the watermark "fixed" on the page. */
/* I think that's just a bit too distracting for the reader... */
/* background-attachment: fixed; */
/* background-position: center center; */
}</style>
<link rel="home" href="index.html" title="Version Control with Subversion [DRAFT]" />
<link rel="up" href="svn.ref.svnlook.html#svn.ref.svnlook.c" title="svnlook Subcommands" />
<link rel="prev" href="svn.ref.svnlook.html" title="svnlook—Subversion Repository Examination" />
<link rel="next" href="svn.ref.svnlook.c.cat.html" title="svnlook cat" />
</head>
<body>
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
<th colspan="3" align="center">svnlook author</th>
</tr>
<tr>
<td width="20%" align="left"><a accesskey="p" href="svn.ref.svnlook.html">Prev</a> </td>
<th width="60%" align="center">svnlook Subcommands</th>
<td width="20%" align="right"> <a accesskey="n" href="svn.ref.svnlook.c.cat.html">Next</a></td>
</tr>
</table>
<hr />
</div>
<div class="refentry" title="svnlook author">
<a id="svn.ref.svnlook.c.author"></a>
<div class="titlepage"></div>
<a id="idp43953792" class="indexterm"></a>
<div class="refnamediv">
<h2>Name</h2>
<p>svnlook author — Print the author.</p>
</div>
<div class="refsect1" title="Synopsis">
<a id="idp43956912"></a>
<h2>Synopsis</h2>
<p>
<code class="literal">svnlook author REPOS_PATH</code>
</p>
</div>
<div class="refsect1" title="Description">
<a id="idp43958496"></a>
<h2>Description</h2>
<p>Print the author of a revision or transaction in
the repository.</p>
</div>
<div class="refsect1" title="Options">
<a id="idp43959776"></a>
<h2>Options</h2>
<div class="informalexample">
<pre class="screen">
--revision (-r) REV
--transaction (-t) TXN
</pre>
</div>
</div>
<div class="refsect1" title="Examples">
<a id="idp43961680"></a>
<h2>Examples</h2>
<p><span class="command"><strong>svnlook author</strong></span> is handy, but not
very exciting:</p>
<div class="informalexample">
<pre class="screen">
$ svnlook author -r 40 /var/svn/repos
sally
</pre>
</div>
</div>
</div>
<div class="navfooter">
<hr />
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left"><a accesskey="p" href="svn.ref.svnlook.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="svn.ref.svnlook.html#svn.ref.svnlook.c">Up</a>
</td>
<td width="40%" align="right"> <a accesskey="n" href="svn.ref.svnlook.c.cat.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">svnlook—Subversion Repository Examination </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
<td width="40%" align="right" valign="top"> svnlook cat</td>
</tr>
</table>
</div>
<div xmlns="" id="svn-footer">
<hr />
<p>You are reading <em>Version Control with Subversion</em> (for Subversion 1.7), by Ben Collins-Sussman, Brian W. Fitzpatrick, and C. Michael Pilato.<br />
This work is licensed under the <a href="http://creativecommons.org/licenses/by/2.0/">Creative Commons Attribution License v2.0</a>.<br />
To submit comments, corrections, or other contributions to the text, please visit <a href="http://www.svnbook.com/">http://www.svnbook.com/</a>.</p>
</div>
</body>
</html>

View file

@ -0,0 +1,393 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>File Portability</title>
<link rel="stylesheet" href="styles.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2" />
<style type="text/css">
body { background-image: url('images/draft.png');
background-repeat: no-repeat;
background-position: top left;
/* The following properties make the watermark "fixed" on the page. */
/* I think that's just a bit too distracting for the reader... */
/* background-attachment: fixed; */
/* background-position: center center; */
}</style>
<link rel="home" href="index.html" title="Version Control with Subversion [DRAFT]" />
<link rel="up" href="svn.advanced.html" title="Chapter 3. Advanced Topics" />
<link rel="prev" href="svn.advanced.props.html" title="Properties" />
<link rel="next" href="svn.advanced.props.special.ignore.html" title="Ignoring Unversioned Items" />
</head>
<body>
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
<th colspan="3" align="center">File Portability</th>
</tr>
<tr>
<td width="20%" align="left"><a accesskey="p" href="svn.advanced.props.html">Prev</a> </td>
<th width="60%" align="center">Chapter 3. Advanced Topics</th>
<td width="20%" align="right"> <a accesskey="n" href="svn.advanced.props.special.ignore.html">Next</a></td>
</tr>
</table>
<hr />
</div>
<div class="sect1" title="File Portability">
<div class="titlepage">
<div>
<div>
<h2 class="title" style="clear: both"><a id="svn.advanced.props.file-portability"></a>File Portability</h2>
</div>
</div>
</div>
<p>Fortunately for Subversion users who routinely find
themselves on different computers with different operating
systems, Subversion's command-line program behaves almost
identically on all those systems. If you know how to wield
<span class="command"><strong>svn</strong></span> on one platform, you know how to wield it
everywhere.</p>
<p>However, the same is not always true of other general classes
of software or of the actual files you keep in Subversion. For
example, on a Windows machine, the definition of a <span class="quote"><span class="quote">text
file</span></span> would be similar to that used on a Linux box, but
with a key difference—the character sequences used to mark
the ends of the lines of those files. There are other
differences, too. Unix platforms have (and Subversion supports)
symbolic links; Windows does not. Unix platforms use filesystem
permission to determine executability; Windows uses filename
extensions.</p>
<p>Because Subversion is in no position to unite the whole
world in common definitions and implementations of all of these
things, the best it can do is to try to help make your life
simpler when you need to work with your versioned files and
directories on multiple computers and operating systems. This
section describes some of the ways Subversion does this.</p>
<div class="sect2" title="File Content Type">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="svn.advanced.props.special.mime-type"></a>File Content Type</h3>
</div>
</div>
</div>
<p>Subversion joins the ranks of the many applications that
recognize and make use of Multipurpose Internet Mail
Extensions (MIME) content types. Besides being a
general-purpose storage location for a file's content type,
the value of the <code class="literal">svn:mime-type</code> file
property determines some behavioral characteristics of
Subversion itself.</p>
<div class="sidebar" title="Identifying File Types">
<p class="title">
<b>Identifying File Types</b>
</p>
<p>Various programs on most modern operating systems make
assumptions about the type and format of the contents of a
file by the file's name, specifically its file extension.
For example, files whose names end in
<code class="filename">.txt</code> are generally assumed to be
human-readable; that is, able to be understood by simple perusal
rather than requiring complex processing to decipher. Files
whose names end in <code class="filename">.png</code>, on the other
hand, are assumed to be of the Portable Network Graphics
type—not human-readable at all, and sensible only when
interpreted by software that understands the PNG format and
can render the information in that format as a raster
image.</p>
<p>Unfortunately, some of those extensions have changed
their meanings over time. When personal computers first appeared,
a file named <code class="filename">README.DOC</code> would have
almost certainly been a plain-text file, just like today's
<code class="filename">.txt</code> files. But by the mid-1990s, you
could almost bet that a file of that name would not be a
plain-text file at all, but instead a Microsoft Word
document in a proprietary, non-human-readable format. But
this change didn't occur overnight—there was certainly
a period of confusion for computer users over what exactly
they had in hand when they saw a <code class="filename">.DOC</code>
file.<sup>[<a id="idp34224464" href="#ftn.idp34224464" class="footnote">14</a>]</sup></p>
<p>The popularity of computer networking cast still more
doubt on the mapping between a file's name and its content.
With information being served across networks and generated
dynamically by server-side scripts, there was often no real
file per se, and therefore no filename. Web
servers, for example, needed some other way to tell browsers
what they were downloading so that the browser could do something
intelligent with that information, whether that was to
display the data using a program registered to handle that
datatype or to prompt the user for where on the client
machine to store the downloaded data.</p>
<p>Eventually, a standard emerged for, among other things,
describing the contents of a data stream. In 1996, RFC 2045
was published. It was the first of five RFCs describing
MIME. It describes the concept of media types and subtypes
and recommends a syntax for the representation of those
types. Today, MIME media types—or <span class="quote"><span class="quote">MIME
types</span></span>—are used almost universally across
email applications, web servers, and other software as the
de facto mechanism for clearing up the file content
confusion.</p>
</div>
<p>For example, one of the benefits that Subversion typically
provides is contextual, line-based merging of changes received
from the server during an update into your working file. But
for files containing nontextual data, there is often no
concept of a <span class="quote"><span class="quote">line.</span></span> So, for versioned files
whose <code class="literal">svn:mime-type</code> property is set to a
nontextual MIME type (generally, something that doesn't begin
with <code class="literal">text/</code>, though there are exceptions),
Subversion does not attempt to perform contextual merges
during updates. Instead, any time you have locally modified a
binary working copy file that is also being updated, your file
is left untouched and Subversion creates two new files. One
file has a <code class="filename">.oldrev</code> extension and contains
the BASE revision of the file. The other file has a
<code class="filename">.newrev</code> extension and contains the
contents of the updated revision of the file. This behavior
is really for the protection of the user against failed
attempts at performing contextual merges on files that simply
cannot be contextually merged.</p>
<div class="warning" title="Warning" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Warning">
<tr>
<td rowspan="2" align="center" valign="top" width="25">
<img alt="[Warning]" src="images/warning.png" />
</td>
<th align="left">Warning</th>
</tr>
<tr>
<td align="left" valign="top">
<p>The <code class="literal">svn:mime-type</code> property, when set
to a value that does not indicate textual file contents, can
cause some unexpected behaviors with respect to other
properties. For example, since the idea of line endings
(and therefore, line-ending conversion) makes no sense when
applied to nontextual files, Subversion will prevent you
from setting the <code class="literal">svn:eol-style</code> property
on such files. This is obvious when attempted on a single
file target—<span class="command"><strong>svn propset</strong></span> will error
out. But it might not be as clear if you perform a
recursive property set, where Subversion will silently skip
over files that it deems unsuitable for a given
property.</p>
</td>
</tr>
</table>
</div>
<p>Subversion provides a number of mechanisms by which to
automatically set the <code class="literal">svn:mime-type</code>
property on a versioned file. See
<a class="xref" href="svn.advanced.props.html#svn.advanced.props.auto" title="Automatic Property Setting">the section called “Automatic Property Setting”</a> for details.</p>
<p>Also, if the <code class="literal">svn:mime-type</code> property is
set, then the Subversion Apache module will use its value to
populate the <code class="literal">Content-type:</code> HTTP header when
responding to GET requests. This gives your web browser a
crucial clue about how to display a file when you use it to
peruse your Subversion repository's contents.</p>
</div>
<div class="sect2" title="File Executability">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="svn.advanced.props.special.executable"></a>File Executability</h3>
</div>
</div>
</div>
<p>On many operating systems, the ability to execute a file
as a command is governed by the presence of an execute
permission bit. This bit usually defaults to being disabled,
and must be explicitly enabled by the user for each file that
needs it. But it would be a monumental hassle to have to
remember exactly which files in a freshly checked-out working
copy were supposed to have their executable bits toggled on,
and then to have to do that toggling. So, Subversion provides
the <code class="literal">svn:executable</code> property as a way to
specify that the executable bit for the file on which that
property is set should be enabled, and Subversion honors that
request when populating working copies with such files.</p>
<p>This property has no effect on filesystems that have no
concept of an executable permission bit, such as FAT32 and
NTFS.<sup>[<a id="idp34244944" href="#ftn.idp34244944" class="footnote">15</a>]</sup> Also, although it has no defined
values, Subversion will force its value
to <code class="literal">*</code> when setting this property. Finally,
this property is valid only on files, not on
directories.</p>
</div>
<div class="sect2" title="End-of-Line Character Sequences">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="svn.advanced.props.special.eol-style"></a>End-of-Line Character Sequences</h3>
</div>
</div>
</div>
<p>Unless otherwise noted using a versioned file's
<code class="literal">svn:mime-type</code> property, Subversion
assumes the file contains human-readable data. Generally
speaking, Subversion uses this knowledge only to determine
whether contextual difference reports for that file are
possible. Otherwise, to Subversion, bytes are bytes.</p>
<p>This means that by default, Subversion doesn't pay any
attention to the type of <em class="firstterm">end-of-line (EOL)
markers</em> used in your files. Unfortunately,
different operating systems have different conventions about
which character sequences represent the end of a line of text
in a file. For example, the usual line-ending token used by
software on the Windows platform is a pair of ASCII control
characters—a carriage return (<code class="literal">CR</code>)
followed by a line feed (<code class="literal">LF</code>). Unix
software, however, just uses the <code class="literal">LF</code>
character to denote the end of a line.</p>
<p>Not all of the various tools on these operating systems
understand files that contain line endings in a format that
differs from the <em class="firstterm">native line-ending
style</em> of the operating system on which they are
running. So, typically, Unix programs treat the
<code class="literal">CR</code> character present in Windows files as a
regular character (usually rendered as <code class="literal">^M</code>),
and Windows programs combine all of the lines of a Unix file
into one giant line because no carriage return-linefeed (or
<code class="literal">CRLF</code>) character combination was found to
denote the ends of the lines.</p>
<p>This sensitivity to foreign EOL markers can be
frustrating for folks who share a file across different
operating systems. For example, consider a source code
file, and developers that edit this file on both Windows and
Unix systems. If all the developers always use tools that
preserve the line-ending style of the file, no problems
occur.</p>
<p>But in practice, many common tools either fail to
properly read a file with foreign EOL markers, or
convert the file's line endings to the native style when the
file is saved. If the former is true for a developer, he
has to use an external conversion utility (such as
<span class="command"><strong>dos2unix</strong></span> or its companion,
<span class="command"><strong>unix2dos</strong></span>) to prepare the file for
editing. The latter case requires no extra preparation.
But both cases result in a file that differs from the
original quite literally on every line! Prior to committing
his changes, the user has two choices. Either he can use a
conversion utility to restore the modified file to the same
line-ending style that it was in before his edits were made,
or he can simply commit the file—new EOL markers and
all.</p>
<p>The result of scenarios like these include wasted time
and unnecessary modifications to committed files. Wasted
time is painful enough. But when commits change every line
in a file, this complicates the job of determining which of
those lines were changed in a nontrivial way. Where was
that bug really fixed? On what line was a syntax error
introduced?</p>
<p>The solution to this problem is the
<code class="literal">svn:eol-style</code> property. When this
property is set to a valid value, Subversion uses it to
determine what special processing to perform on the file so
that the file's line-ending style isn't flip-flopping with
every commit that comes from a different operating
system. The valid values are:</p>
<div class="variablelist">
<dl>
<dt>
<span class="term">
<code class="literal">native</code>
</span>
</dt>
<dd>
<p>This causes the file to contain the EOL markers
that are native to the operating system on which
Subversion was run. In other words, if a user on a
Windows machine checks out a working copy that
contains a file with an
<code class="literal">svn:eol-style</code> property set to
<code class="literal">native</code>, that file will contain
<code class="literal">CRLF</code> EOL markers. A Unix user
checking out a working copy that contains the same
file will see <code class="literal">LF</code> EOL markers in his
copy of the file.</p>
<p>Note that Subversion will actually store the file
in the repository using normalized
<code class="literal">LF</code> EOL markers regardless of the
operating system. This is basically transparent to
the user, though.</p>
</dd>
<dt>
<span class="term">
<code class="literal">CRLF</code>
</span>
</dt>
<dd>
<p>This causes the file to contain
<code class="literal">CRLF</code> sequences for EOL markers,
regardless of the operating system in use.</p>
</dd>
<dt>
<span class="term">
<code class="literal">LF</code>
</span>
</dt>
<dd>
<p>This causes the file to contain
<code class="literal">LF</code> characters for EOL markers,
regardless of the operating system in use.</p>
</dd>
<dt>
<span class="term">
<code class="literal">CR</code>
</span>
</dt>
<dd>
<p>This causes the file to contain
<code class="literal">CR</code> characters for EOL markers,
regardless of the operating system in use. This
line-ending style is not very common.</p>
</dd>
</dl>
</div>
</div>
<div class="footnotes">
<br />
<hr width="100" align="left" />
<div class="footnote">
<p><sup>[<a id="ftn.idp34224464" href="#idp34224464" class="para">14</a>] </sup>You think that was rough? During that
same era, WordPerfect also used <code class="filename">.DOC</code>
for their proprietary file format's preferred
extension!</p>
</div>
<div class="footnote">
<p><sup>[<a id="ftn.idp34244944" href="#idp34244944" class="para">15</a>] </sup>The Windows filesystems use file
extensions (such
as <code class="filename">.EXE</code>, <code class="filename">.BAT</code>, and
<code class="filename">.COM</code>) to denote executable
files.</p>
</div>
</div>
</div>
<div class="navfooter">
<hr />
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left"><a accesskey="p" href="svn.advanced.props.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="svn.advanced.html">Up</a>
</td>
<td width="40%" align="right"> <a accesskey="n" href="svn.advanced.props.special.ignore.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">Properties </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
<td width="40%" align="right" valign="top"> Ignoring Unversioned Items</td>
</tr>
</table>
</div>
<div xmlns="" id="svn-footer">
<hr />
<p>You are reading <em>Version Control with Subversion</em> (for Subversion 1.7), by Ben Collins-Sussman, Brian W. Fitzpatrick, and C. Michael Pilato.<br />
This work is licensed under the <a href="http://creativecommons.org/licenses/by/2.0/">Creative Commons Attribution License v2.0</a>.<br />
To submit comments, corrections, or other contributions to the text, please visit <a href="http://www.svnbook.com/">http://www.svnbook.com/</a>.</p>
</div>
</body>
</html>

View file

@ -0,0 +1,104 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Moving and Removing Repositories</title>
<link rel="stylesheet" href="styles.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2" />
<style type="text/css">
body { background-image: url('images/draft.png');
background-repeat: no-repeat;
background-position: top left;
/* The following properties make the watermark "fixed" on the page. */
/* I think that's just a bit too distracting for the reader... */
/* background-attachment: fixed; */
/* background-position: center center; */
}</style>
<link rel="home" href="index.html" title="Version Control with Subversion [DRAFT]" />
<link rel="up" href="svn.reposadmin.html" title="Chapter 5. Repository Administration" />
<link rel="prev" href="svn.reposadmin.maint.html" title="Repository Maintenance" />
<link rel="next" href="svn.reposadmin.summary.html" title="Summary" />
</head>
<body>
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
<th colspan="3" align="center">Moving and Removing Repositories</th>
</tr>
<tr>
<td width="20%" align="left"><a accesskey="p" href="svn.reposadmin.maint.html">Prev</a> </td>
<th width="60%" align="center">Chapter 5. Repository Administration</th>
<td width="20%" align="right"> <a accesskey="n" href="svn.reposadmin.summary.html">Next</a></td>
</tr>
</table>
<hr />
</div>
<div class="sect1" title="Moving and Removing Repositories">
<div class="titlepage">
<div>
<div>
<h2 class="title" style="clear: both"><a id="svn.reposadmin.maint.moving-and-removing"></a>Moving and Removing Repositories</h2>
</div>
</div>
</div>
<p>Subversion repository data is wholly contained within the
repository directory. As such, you can move a Subversion
repository to some other location on disk, rename a repository,
copy a repository, or delete a repository altogether using the
tools provided by your operating system for manipulating
directories—<span class="command"><strong>mv</strong></span>, <span class="command"><strong>cp
-a</strong></span>, and <span class="command"><strong>rm -r</strong></span> on Unix platforms;
<span class="command"><strong>copy</strong></span>, <span class="command"><strong>move</strong></span>, and
<span class="command"><strong>rmdir /s /q</strong></span> on Windows; vast numbers of mouse
and menu gyrations in various graphical file explorer
applications, and so on.</p>
<p>Of course, there's often still more to be done when trying
to cleanly affect changes such as this. For example, you might
need to update your Subversion server configuration to point to
the new location of a relocated repository or to remove
configuration bits for a now-deleted repository. If you have
automated processes that publish information from or about your
repositories, they may need to be updated. Hook scripts might
need to be reconfigured. Users may need to be notified. The list
can go on indefinitely, or at least to the extent that you've
built processes and procedures around your Subversion
repository.</p>
<p>In the case of a copied repository, you should also consider
the fact that Subversion uses repository UUIDs to distinguish
repositories. If you copy a Subversion repository using a
typical shell recursive copy command, you'll wind up with two
repositories that are identical in every way—including
their UUIDs. In some circumstances, this might be desirable.
But in the instances where it is not, you'll need to generate a
new UUID for one of these identical repositories. See
<a class="xref" href="svn.reposadmin.maint.html#svn.reposadmin.maint.uuids" title="Managing Repository UUIDs">the section called “Managing Repository UUIDs”</a> for more about
managing repository UUIDs.</p>
</div>
<div class="navfooter">
<hr />
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left"><a accesskey="p" href="svn.reposadmin.maint.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="svn.reposadmin.html">Up</a>
</td>
<td width="40%" align="right"> <a accesskey="n" href="svn.reposadmin.summary.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">Repository Maintenance </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
<td width="40%" align="right" valign="top"> Summary</td>
</tr>
</table>
</div>
<div xmlns="" id="svn-footer">
<hr />
<p>You are reading <em>Version Control with Subversion</em> (for Subversion 1.7), by Ben Collins-Sussman, Brian W. Fitzpatrick, and C. Michael Pilato.<br />
This work is licensed under the <a href="http://creativecommons.org/licenses/by/2.0/">Creative Commons Attribution License v2.0</a>.<br />
To submit comments, corrections, or other contributions to the text, please visit <a href="http://www.svnbook.com/">http://www.svnbook.com/</a>.</p>
</div>
</body>
</html>

View file

@ -0,0 +1,109 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>post-unlock</title>
<link rel="stylesheet" href="styles.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2" />
<style type="text/css">
body { background-image: url('images/draft.png');
background-repeat: no-repeat;
background-position: top left;
/* The following properties make the watermark "fixed" on the page. */
/* I think that's just a bit too distracting for the reader... */
/* background-attachment: fixed; */
/* background-position: center center; */
}</style>
<link rel="home" href="index.html" title="Version Control with Subversion [DRAFT]" />
<link rel="up" href="svn.ref.reposhooks.html" title="Repository Hooks" />
<link rel="prev" href="svn.ref.reposhooks.pre-unlock.html" title="pre-unlock" />
<link rel="next" href="svn.intro.html" title="Appendix A. Subversion Quick-Start Guide" />
</head>
<body>
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
<th colspan="3" align="center">post-unlock</th>
</tr>
<tr>
<td width="20%" align="left"><a accesskey="p" href="svn.ref.reposhooks.pre-unlock.html">Prev</a> </td>
<th width="60%" align="center">Repository Hooks</th>
<td width="20%" align="right"> <a accesskey="n" href="svn.intro.html">Next</a></td>
</tr>
</table>
<hr />
</div>
<div class="refentry" title="post-unlock">
<a id="svn.ref.reposhooks.post-unlock"></a>
<div class="titlepage"></div>
<a id="idp44959936" class="indexterm"></a>
<div class="refnamediv">
<h2>Name</h2>
<p>post-unlock — Notification of a successful path unlock.</p>
</div>
<div class="refsect1" title="Description">
<a id="idp44963088"></a>
<h2>Description</h2>
<p>The <code class="literal">post-unlock</code> hook runs after one
or more paths have been unlocked. It is typically used to
send email notification of the unlock event.</p>
<p>If the <code class="literal">post-unlock</code> hook returns a
nonzero exit status, the unlock <span class="emphasis"><em>will
not</em></span> be aborted since it has already
completed. However, anything that the hook printed
to <code class="filename">stderr</code> will be marshalled back to the
client, making it easier to diagnose hook failures.</p>
</div>
<div class="refsect1" title="Input parameter(s)">
<a id="idp44967600"></a>
<h2>Input parameter(s)</h2>
<p>The command-line arguments passed to the hook program,
in order, are:</p>
<div class="orderedlist">
<ol class="orderedlist" type="1">
<li class="listitem">
<p>Repository path</p>
</li>
<li class="listitem">
<p>Authenticated username of the person who unlocked the
paths</p>
</li>
</ol>
</div>
<p>Additionally, the list of paths unlocked is passed to the
hook program via standard input, one path per line.</p>
</div>
<div class="refsect1" title="Common uses">
<a id="idp44971984"></a>
<h2>Common uses</h2>
<p>Unlock notification</p>
</div>
</div>
<div class="navfooter">
<hr />
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left"><a accesskey="p" href="svn.ref.reposhooks.pre-unlock.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="svn.ref.reposhooks.html">Up</a>
</td>
<td width="40%" align="right"> <a accesskey="n" href="svn.intro.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">pre-unlock </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
<td width="40%" align="right" valign="top"> Appendix A. Subversion Quick-Start Guide</td>
</tr>
</table>
</div>
<div xmlns="" id="svn-footer">
<hr />
<p>You are reading <em>Version Control with Subversion</em> (for Subversion 1.7), by Ben Collins-Sussman, Brian W. Fitzpatrick, and C. Michael Pilato.<br />
This work is licensed under the <a href="http://creativecommons.org/licenses/by/2.0/">Creative Commons Attribution License v2.0</a>.<br />
To submit comments, corrections, or other contributions to the text, please visit <a href="http://www.svnbook.com/">http://www.svnbook.com/</a>.</p>
</div>
</body>
</html>

View file

@ -0,0 +1,475 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Network Model</title>
<link rel="stylesheet" href="styles.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2" />
<style type="text/css">
body { background-image: url('images/draft.png');
background-repeat: no-repeat;
background-position: top left;
/* The following properties make the watermark "fixed" on the page. */
/* I think that's just a bit too distracting for the reader... */
/* background-attachment: fixed; */
/* background-position: center center; */
}</style>
<link rel="home" href="index.html" title="Version Control with Subversion [DRAFT]" />
<link rel="up" href="svn.advanced.html" title="Chapter 3. Advanced Topics" />
<link rel="prev" href="svn.advanced.changelists.html" title="Changelists" />
<link rel="next" href="svn.advanced.summary.html" title="Summary" />
</head>
<body>
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
<th colspan="3" align="center">Network Model</th>
</tr>
<tr>
<td width="20%" align="left"><a accesskey="p" href="svn.advanced.changelists.html">Prev</a> </td>
<th width="60%" align="center">Chapter 3. Advanced Topics</th>
<td width="20%" align="right"> <a accesskey="n" href="svn.advanced.summary.html">Next</a></td>
</tr>
</table>
<hr />
</div>
<div class="sect1" title="Network Model">
<div class="titlepage">
<div>
<div>
<h2 class="title" style="clear: both"><a id="svn.serverconfig.netmodel"></a>Network Model</h2>
</div>
</div>
</div>
<p>At some point, you're going to need to understand how your
Subversion client communicates with its server. Subversion's
networking layer is abstracted, meaning that Subversion clients
exhibit the same general behaviors no matter what sort of server
they are operating against. Whether speaking the HTTP protocol
(<code class="literal">http://</code>) with the Apache HTTP Server or
speaking the custom Subversion protocol
(<code class="literal">svn://</code>) with <span class="command"><strong>svnserve</strong></span>,
the basic network model is the same. In this section, we'll
explain the basics of that network model, including how
Subversion manages authentication and authorization
matters.</p>
<div class="sect2" title="Requests and Responses">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="svn.serverconfig.netmodel.reqresp"></a>Requests and Responses</h3>
</div>
</div>
</div>
<p>The Subversion client spends most of its time managing
working copies. When it needs information from a remote
repository, however, it makes a network request, and the
server responds with an appropriate answer. The details of
the network protocol are hidden from the user—the client
attempts to access a URL, and depending on the URL scheme, a
particular protocol is used to contact the server (see <a class="xref" href="svn.basic.in-action.html#svn.advanced.reposurls" title="Addressing the Repository">the section called “Addressing the Repository”</a>).</p>
<div class="tip" title="Tip" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Tip">
<tr>
<td rowspan="2" align="center" valign="top" width="25">
<img alt="[Tip]" src="images/tip.png" />
</td>
<th align="left">Tip</th>
</tr>
<tr>
<td align="left" valign="top">
<p>Run <strong class="userinput"><code>svn --version</code></strong> to see which
URL schemes and protocols the client knows how to use.</p>
</td>
</tr>
</table>
</div>
<p>When the server process receives a client request, it
often demands that the client identify itself. It issues
an authentication challenge to the client, and the client
responds by providing <em class="firstterm">credentials</em> back
to the server. Once authentication is complete, the server
responds with the original information that the client asked for.
Notice that this system is different from systems such as CVS,
where the client preemptively offers credentials (<span class="quote"><span class="quote">logs
in</span></span>) to the server before ever making a request. In
Subversion, the server <span class="quote"><span class="quote">pulls</span></span> credentials by
challenging the client at the appropriate moment, rather than
the client <span class="quote"><span class="quote">pushing</span></span> them. This makes certain
operations more elegant. For example, if a server is
configured to allow anyone in the world to read a repository,
the server will never issue an authentication challenge
when a client attempts to <span class="command"><strong>svn checkout</strong></span>.</p>
<p>If the particular network requests issued by the client
result in a new revision being created in the repository
(e.g., <span class="command"><strong>svn commit</strong></span>), Subversion uses the
authenticated username associated with those requests as the
author of the revision. That is, the authenticated user's
name is stored as the value of the
<code class="literal">svn:author</code> property on the new revision
(see <a class="xref" href="svn.ref.properties.html" title="Subversion Properties">the section called “Subversion Properties”</a>). If
the client was not authenticated (i.e., if the server
never issued an authentication challenge), the revision's
<code class="literal">svn:author</code> property is empty.
</p>
</div>
<div class="sect2" title="Client Credentials">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="svn.serverconfig.netmodel.creds"></a>Client Credentials</h3>
</div>
</div>
</div>
<p>Many Subversion servers are configured to require
authentication. Sometimes anonymous read operations are
allowed, while write operations must be authenticated. In
other cases, reads and writes alike require authentication.
Subversion's different server options understand different
authentication protocols, but from the user's point of view,
authentication typically boils down to usernames and
passwords. Subversion clients offer several different ways to
retrieve and store a user's authentication credentials, from
interactive prompting for usernames and passwords to encrypted
and non-encrypted on-disk data caches.</p>
<p>The security-conscious reader will suspect immediately
that there is reason for concern here. <span class="quote"><span class="quote">Caching
passwords on disk? That's terrible! You should never do
that!</span></span> Don't worry—it's not as bad as it sounds.
The following sections discuss the various types of credential
caches that Subversion uses, when it uses them, and how to
disable that functionality in whole or in part.</p>
<div class="sect3" title="Caching credentials">
<div class="titlepage">
<div>
<div>
<h4 class="title"><a id="svn.serverconfig.netmodel.credcache"></a>Caching credentials</h4>
</div>
</div>
</div>
<p>Subversion offers a remedy for the annoyance caused when
users are forced to type their usernames and passwords over
and over again. By default, whenever the command-line
client successfully responds to a server's authentication
challenge, credentials are cached on disk and keyed on a
combination of the server's hostname, port, and
authentication realm. This cache will then be automatically
consulted in the future, avoiding the need for the user to
re-type his or her authentication credentials. If seemingly
suitable credentials are not present in the cache, or if the
cached credentials ultimately fail to authenticate, the
client will, by default, fall back to prompting the user for
the necessary information.</p>
<p>The Subversion developers recognize that on-disk caches
of authentication credentials can be a security risk. To
offset this, Subversion works with available mechanisms
provided by the operating system and environment to try to
minimize the risk of leaking this information.</p>
<div class="itemizedlist">
<ul class="itemizedlist" type="disc">
<li class="listitem">
<p>On Windows, the Subversion client stores passwords
in the <code class="filename">%APPDATA%/Subversion/auth/</code>
directory. On Windows 2000 and later, the standard
Windows cryptography services are used to encrypt the
password on disk. Because the encryption key is managed
by Windows and is tied to the user's own login
credentials, only the user can decrypt the cached
password. (Note that if the user's Windows account
password is reset by an administrator, all of the cached
passwords become undecipherable. The Subversion client
will behave as though they don't exist, prompting for
passwords when required.)</p>
</li>
<li class="listitem">
<p>Similarly, on Mac OS X, the Subversion client stores
all repository passwords in the login keyring (managed
by the Keychain service), which is protected by the
user's account password. User preference settings can
impose additional policies, such as requiring that the
user's account password be entered each time the
Subversion password is used.</p>
</li>
<li class="listitem">
<p>For other Unix-like operating systems, no single
standard <span class="quote"><span class="quote">keychain</span></span> service exists.
However, the Subversion client knows how to store
passwords securely using the <span class="quote"><span class="quote">GNOME Keyring</span></span>
and <span class="quote"><span class="quote">KDE Wallet</span></span> services. Also, before
storing unencrypted passwords in the
<code class="filename">~/.subversion/auth/</code> caching area,
the Subversion client will ask the user for permission
to do so. Note that the <code class="filename">auth/</code>
caching area is still permission-protected so that only
the user (owner) can read data from it, not the world at
large. The operating system's own file permissions protect
the passwords from other non-administrative users on the
same system, provided they have no direct physical access
to the storage media of the home directory, or backups
thereof.</p>
</li>
</ul>
</div>
<p>Of course, for the truly paranoid, none of these
mechanisms meets the test of perfection. So for those folks
willing to sacrifice convenience for the ultimate in security,
Subversion provides various ways of disabling its credentials
caching system altogether.</p>
</div>
<div class="sect3" title="Disabling password caching">
<div class="titlepage">
<div>
<div>
<h4 class="title"><a id="svn.tour.initial.disabling-password-caching"></a>Disabling password caching</h4>
</div>
</div>
</div>
<p>When you perform a Subversion operation that requires
you to authenticate, by default Subversion tries to cache
your authentication credentials on disk in encrypted form.
On some systems, Subversion may be unable to encrypt your
authentication data. In those situations, Subversion will
ask whether you want to cache your credentials to disk in
plaintext:</p>
<div class="informalexample">
<pre class="screen">
$ svn checkout https://host.example.com:443/svn/private-repo
-----------------------------------------------------------------------
ATTENTION! Your password for authentication realm:
&lt;https://host.example.com:443&gt; Subversion Repository
can only be stored to disk unencrypted! You are advised to configure
your system so that Subversion can store passwords encrypted, if
possible. See the documentation for details.
You can avoid future appearances of this warning by setting the value
of the 'store-plaintext-passwords' option to either 'yes' or 'no' in
'/tmp/servers'.
-----------------------------------------------------------------------
Store password unencrypted (yes/no)?
</pre>
</div>
<p>If you want the convenience of not having to continually
reenter your password for future operations, you can
answer <code class="literal">yes</code> to this prompt. If you're
concerned about caching your Subversion passwords in
plaintext and do not want to be asked about it again and
again, you can disable caching of plaintext passwords either
permanently, or on a server-per-server basis.</p>
<div class="warning" title="Warning" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Warning">
<tr>
<td rowspan="2" align="center" valign="top" width="25">
<img alt="[Warning]" src="images/warning.png" />
</td>
<th align="left">Warning</th>
</tr>
<tr>
<td align="left" valign="top">
<p>When considering how to use Subversion's password
caching system, you'll want to consult any governing
policies that are in place for your client
computer—many companies have strict rules about the
ways that their employees' authentication credentials
should be stored.</p>
</td>
</tr>
</table>
</div>
<p>To permanently disable caching of passwords in
plaintext, add the line <code class="literal">store-plaintext-passwords =
no</code> to the <code class="literal">[global]</code> section in
the <code class="filename">servers</code> configuration file on the
local machine. To disable plaintext password caching for a
particular server, use the same setting in the appropriate
group section in the <code class="filename">servers</code>
configuration file. (See
<a class="xref" href="svn.advanced.confarea.html#svn.advanced.confarea.opts" title="Configuration Options">the section called “Configuration Options”</a> in
<a class="xref" href="svn.customization.html" title="Chapter 7. Customizing Your Subversion Experience">Chapter 7, <i>Customizing Your Subversion Experience</i></a> for details.)</p>
<p>To disable password caching entirely for any single
Subversion command-line operation, pass
the <code class="option">--no-auth-cache</code> option to that command
line. To permanently disable caching entirely, add the
line <code class="literal">store-passwords = no</code> to your local
machine's Subversion configuration file.</p>
</div>
<div class="sect3" title="Removing cached credentials">
<div class="titlepage">
<div>
<div>
<h4 class="title"><a id="svn.tour.initial.authn-cache-purge"></a>Removing cached credentials</h4>
</div>
</div>
</div>
<p>Sometimes users will want to remove specific credentials
from the disk cache. To do this, you need to navigate into
the <code class="filename">auth/</code> area and manually delete the
appropriate cache file. Credentials are cached in individual
files; if you look inside each file, you will see keys and
values. The <code class="literal">svn:realmstring</code> key describes
the particular server realm that the file is associated
with:</p>
<div class="informalexample">
<pre class="screen">
$ ls ~/.subversion/auth/svn.simple/
5671adf2865e267db74f09ba6f872c28
3893ed123b39500bca8a0b382839198e
5c3c22968347b390f349ff340196ed39
$ cat ~/.subversion/auth/svn.simple/5671adf2865e267db74f09ba6f872c28
K 8
username
V 3
joe
K 8
password
V 4
blah
K 15
svn:realmstring
V 45
&lt;https://svn.domain.com:443&gt; Joe's repository
END
</pre>
</div>
<p>Once you have located the proper cache file, just delete
it.</p>
</div>
<div class="sect3" title="Command-line authentication">
<div class="titlepage">
<div>
<div>
<h4 class="title"><a id="svn.tour.initial.different-user"></a>Command-line authentication</h4>
</div>
</div>
</div>
<p>All Subversion command-line operations accept
the <code class="option">--username</code>
and <code class="option">--password</code> options, which allow you to
specify your username and password, respectively, so that
Subversion isn't forced to prompt you for that information.
This is especially handy if you need to invoke Subversion
from a script and cannot rely on Subversion being able to
locate valid cached credentials for you. These options are
also helpful when Subversion has already cached
authentication credentials for you, but you know they aren't
the ones you want it to use. Perhaps several system users
share a login to the system, but each have distinct
Subversion identities. You can omit
the <code class="option">--password</code> option from this pair if
you wish Subversion to use only the provided username, but
still prompt you for that username's password.</p>
</div>
<div class="sect3" title="Authentication wrap-up">
<div class="titlepage">
<div>
<div>
<h4 class="title"><a id="svn.tour.initial.authn-wrapup"></a>Authentication wrap-up</h4>
</div>
</div>
</div>
<p>One last word about <span class="command"><strong>svn</strong></span>'s
authentication behavior, specifically regarding the
<code class="option">--username</code> and <code class="option">--password</code>
options. Many client subcommands accept these options, but it
is important to understand that using these options does
<span class="emphasis"><em>not</em></span> automatically send credentials to the
server. As discussed earlier, the server <span class="quote"><span class="quote">pulls</span></span>
credentials from the client when it deems necessary; the
client cannot <span class="quote"><span class="quote">push</span></span> them at will. If a username
and/or password are passed as options, they will be
presented to the server only if the server requests them. These
options are typically used to authenticate as a different user
than Subversion would have chosen by default (such as your
system login name) or when trying to avoid interactive
prompting (such as when calling <span class="command"><strong>svn</strong></span> from a
script).</p>
<div class="note" title="Note" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Note">
<tr>
<td rowspan="2" align="center" valign="top" width="25">
<img alt="[Note]" src="images/note.png" />
</td>
<th align="left">Note</th>
</tr>
<tr>
<td align="left" valign="top">
<p>A common mistake is to misconfigure a server so
that it never issues an authentication challenge. When
users pass <code class="option">--username</code> and
<code class="option">--password</code> options to the client, they're
surprised to see that they're never used; that is, new
revisions still appear to have been committed
anonymously!</p>
</td>
</tr>
</table>
</div>
<p>Here is a final summary that describes how a Subversion
client behaves when it receives an authentication
challenge.</p>
<div class="orderedlist">
<ol class="orderedlist" type="1">
<li class="listitem">
<p>First, the client checks whether the user specified
any credentials as command-line options
(<code class="option">--username</code> and/or
<code class="option">--password</code>). If so, the client will try
to use those credentials to authenticate against the
server.</p>
</li>
<li class="listitem">
<p>If no command-line credentials were provided, or the
provided ones were invalid, the client looks up the server's
hostname, port, and realm in the runtime configuration's
<code class="filename">auth/</code> area, to see whether appropriate
credentials are cached there. If so, it attempts to use
those credentials to authenticate.</p>
</li>
<li class="listitem">
<p>Finally, if the previous mechanisms failed to
successfully authenticate the user against the server, the
client resorts to interactively prompting the user for
valid credentials (unless instructed not to do so via the
<code class="option">--non-interactive</code> option or its
client-specific equivalents).</p>
</li>
</ol>
</div>
<p>If the client successfully authenticates by any of these
methods, it will attempt to cache the credentials on disk
(unless the user has disabled this behavior, as mentioned
earlier).</p>
</div>
</div>
</div>
<div class="navfooter">
<hr />
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left"><a accesskey="p" href="svn.advanced.changelists.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="svn.advanced.html">Up</a>
</td>
<td width="40%" align="right"> <a accesskey="n" href="svn.advanced.summary.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">Changelists </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
<td width="40%" align="right" valign="top"> Summary</td>
</tr>
</table>
</div>
<div xmlns="" id="svn-footer">
<hr />
<p>You are reading <em>Version Control with Subversion</em> (for Subversion 1.7), by Ben Collins-Sussman, Brian W. Fitzpatrick, and C. Michael Pilato.<br />
This work is licensed under the <a href="http://creativecommons.org/licenses/by/2.0/">Creative Commons Attribution License v2.0</a>.<br />
To submit comments, corrections, or other contributions to the text, please visit <a href="http://www.svnbook.com/">http://www.svnbook.com/</a>.</p>
</div>
</body>
</html>

View file

@ -0,0 +1,109 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>post-commit</title>
<link rel="stylesheet" href="styles.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2" />
<style type="text/css">
body { background-image: url('images/draft.png');
background-repeat: no-repeat;
background-position: top left;
/* The following properties make the watermark "fixed" on the page. */
/* I think that's just a bit too distracting for the reader... */
/* background-attachment: fixed; */
/* background-position: center center; */
}</style>
<link rel="home" href="index.html" title="Version Control with Subversion [DRAFT]" />
<link rel="up" href="svn.ref.reposhooks.html" title="Repository Hooks" />
<link rel="prev" href="svn.ref.reposhooks.pre-commit.html" title="pre-commit" />
<link rel="next" href="svn.ref.reposhooks.pre-revprop-change.html" title="pre-revprop-change" />
</head>
<body>
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
<th colspan="3" align="center">post-commit</th>
</tr>
<tr>
<td width="20%" align="left"><a accesskey="p" href="svn.ref.reposhooks.pre-commit.html">Prev</a> </td>
<th width="60%" align="center">Repository Hooks</th>
<td width="20%" align="right"> <a accesskey="n" href="svn.ref.reposhooks.pre-revprop-change.html">Next</a></td>
</tr>
</table>
<hr />
</div>
<div class="refentry" title="post-commit">
<a id="svn.ref.reposhooks.post-commit"></a>
<div class="titlepage"></div>
<a id="idp44853104" class="indexterm"></a>
<div class="refnamediv">
<h2>Name</h2>
<p>post-commit — Notification of a successful commit.</p>
</div>
<div class="refsect1" title="Description">
<a id="idp44856192"></a>
<h2>Description</h2>
<p>The <code class="literal">post-commit</code> hook is run after the
transaction is committed and a new revision is created. Most
people use this hook to send out descriptive emails about
the commit or to notify some other tool (such as an issue
tracker) that a commit has happened. Some configurations
also use this hook to trigger backup processes.</p>
<p>If the <code class="literal">post-commit</code> hook returns a
nonzero exit status, the commit <span class="emphasis"><em>will
not</em></span> be aborted since it has already
completed. However, anything that the hook printed
to <code class="filename">stderr</code> will be marshalled back to the
client, making it easier to diagnose hook failures.</p>
</div>
<div class="refsect1" title="Input parameter(s)">
<a id="idp44860912"></a>
<h2>Input parameter(s)</h2>
<p>The command-line arguments passed to the hook program,
in order, are:</p>
<div class="orderedlist">
<ol class="orderedlist" type="1">
<li class="listitem">
<p>Repository path</p>
</li>
<li class="listitem">
<p>Revision number created by the commit</p>
</li>
</ol>
</div>
</div>
<div class="refsect1" title="Common uses">
<a id="idp44864736"></a>
<h2>Common uses</h2>
<p>Commit notification; tool integration</p>
</div>
</div>
<div class="navfooter">
<hr />
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left"><a accesskey="p" href="svn.ref.reposhooks.pre-commit.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="svn.ref.reposhooks.html">Up</a>
</td>
<td width="40%" align="right"> <a accesskey="n" href="svn.ref.reposhooks.pre-revprop-change.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">pre-commit </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
<td width="40%" align="right" valign="top"> pre-revprop-change</td>
</tr>
</table>
</div>
<div xmlns="" id="svn-footer">
<hr />
<p>You are reading <em>Version Control with Subversion</em> (for Subversion 1.7), by Ben Collins-Sussman, Brian W. Fitzpatrick, and C. Michael Pilato.<br />
This work is licensed under the <a href="http://creativecommons.org/licenses/by/2.0/">Creative Commons Attribution License v2.0</a>.<br />
To submit comments, corrections, or other contributions to the text, please visit <a href="http://www.svnbook.com/">http://www.svnbook.com/</a>.</p>
</div>
</body>
</html>

View file

@ -0,0 +1,493 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Path-Based Authorization</title>
<link rel="stylesheet" href="styles.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2" />
<style type="text/css">
body { background-image: url('images/draft.png');
background-repeat: no-repeat;
background-position: top left;
/* The following properties make the watermark "fixed" on the page. */
/* I think that's just a bit too distracting for the reader... */
/* background-attachment: fixed; */
/* background-position: center center; */
}</style>
<link rel="home" href="index.html" title="Version Control with Subversion [DRAFT]" />
<link rel="up" href="svn.serverconfig.html" title="Chapter 6. Server Configuration" />
<link rel="prev" href="svn.serverconfig.httpd.html" title="httpd, the Apache HTTP Server" />
<link rel="next" href="svn.serverconfig.operational-logging.html" title="High-level Logging" />
</head>
<body>
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
<th colspan="3" align="center">Path-Based Authorization</th>
</tr>
<tr>
<td width="20%" align="left"><a accesskey="p" href="svn.serverconfig.httpd.html">Prev</a> </td>
<th width="60%" align="center">Chapter 6. Server Configuration</th>
<td width="20%" align="right"> <a accesskey="n" href="svn.serverconfig.operational-logging.html">Next</a></td>
</tr>
</table>
<hr />
</div>
<div class="sect1" title="Path-Based Authorization">
<div class="titlepage">
<div>
<div>
<h2 class="title" style="clear: both"><a id="svn.serverconfig.pathbasedauthz"></a>Path-Based Authorization</h2>
</div>
</div>
</div>
<p>Both Apache and <span class="command"><strong>svnserve</strong></span> are capable of
granting (or denying) permissions to users. Typically this is
done over the entire repository: a user can read the repository
(or not), and she can write to the repository (or not). It's
also possible, however, to define finer-grained access rules.
One set of users may have permission to write to a certain
directory in the repository, but not others; another directory
might not even be readable by all but a few special
people.</p>
<p>Both servers use a common file format to describe these
path-based access rules. In the case of Apache, one needs to
load the <span class="command"><strong>mod_authz_svn</strong></span> module and then add
the <code class="literal">AuthzSVNAccessFile</code> directive (within
the <code class="filename">httpd.conf</code> file) pointing to your own
access rules file. (For a full explanation, see
<a class="xref" href="svn.serverconfig.httpd.html#svn.serverconfig.httpd.authz.perdir" title="Per-directory access control">the section called “Per-directory access control”</a>.) If
you're using <span class="command"><strong>svnserve</strong></span>, you need to make
the <code class="literal">authz-db</code> variable
(within <code class="filename">svnserve.conf</code>) point to your access
rules file.</p>
<div class="sidebar" title="Do You Really Need Path-Based Access Control?">
<p class="title">
<b>Do You Really Need Path-Based Access Control?</b>
</p>
<p>A lot of administrators setting up Subversion for the
first time tend to jump into path-based access control without
giving it a lot of thought. The administrator usually knows
which teams of people are working on which projects, so it's
easy to jump in and grant certain teams access to certain
directories and not others. It seems like a natural thing,
and it appeases the administrator's desire to maintain tight
control of the repository.</p>
<p>Note, though, that there are often invisible (and
visible!) costs associated with this feature. In the visible
category, the server needs to do a lot more work to ensure
that the user has the right to read or write each specific
path; in certain situations, there's very noticeable
performance loss. In the invisible category, consider the
culture you're creating. Most of the time, while certain
users <span class="emphasis"><em>shouldn't</em></span> be committing changes to
certain parts of the repository, that social contract doesn't
need to be technologically enforced. Teams can sometimes
spontaneously collaborate with each other; someone may want to
help someone else out by committing to an area she doesn't
normally work on. By preventing this sort of thing at the
server level, you're setting up barriers to unexpected
collaboration. You're also creating a bunch of rules that
need to be maintained as projects develop, new users are
added, and so on. It's a bunch of extra work to
maintain.</p>
<p>Remember that this is a version control system! Even if
somebody accidentally commits a change to something she
shouldn't, it's easy to undo the change. And if a user
commits to the wrong place with deliberate malice, it's a
social problem anyway, and that the problem needs to be dealt
with outside Subversion.</p>
<p>So, before you begin restricting users' access rights, ask
yourself whether there's a real, honest need for this, or
whether it's just something that <span class="quote"><span class="quote">sounds good</span></span> to
an administrator. Decide whether it's worth sacrificing some
server speed, and remember that there's very little risk
involved; it's bad to become dependent on technology as a
crutch for social problems.<sup>[<a id="idp39802688" href="#ftn.idp39802688" class="footnote">50</a>]</sup></p>
<p>As an example to ponder, consider that the Subversion
project itself has always had a notion of who is allowed to
commit where, but it's always been enforced socially. This is
a good model of community trust, especially for open source
projects. Of course, sometimes there <span class="emphasis"><em>are</em></span>
truly legitimate needs for path-based access control; within
corporations, for example, certain types of data really can be
sensitive, and access needs to be genuinely restricted to
small groups of people.</p>
</div>
<p>Once your server knows where to find your access file, it's
time to define the rules.</p>
<p>The syntax of the file is the same familiar one used
by <code class="filename">svnserve.conf</code> and the runtime
configuration files. Lines that start with a hash
(<code class="literal">#</code>) are ignored. In its simplest form, each
section names a repository and path within it, as well as the
authenticated usernames are the option names within each
section. The value of each option describes the user's level of
access to the repository path: either
<code class="literal">r</code> (read-only) or <code class="literal">rw</code>
(read/write). If the user is not mentioned at all, no access is
allowed.</p>
<p>To be more specific: the value of the section names is
either of the form <code class="literal">[repos-name:path]</code> or of the
form <code class="literal">[path]</code>.</p>
<div class="warning" title="Warning" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Warning">
<tr>
<td rowspan="2" align="center" valign="top" width="25">
<img alt="[Warning]" src="images/warning.png" />
</td>
<th align="left">Warning</th>
</tr>
<tr>
<td align="left" valign="top">
<p>Prior to version 1.7, Subversion treated repository names
and paths in a case-insensitive fashion for the purposes of
access control, converting them to lower case internally
before comparing them against the contents of your access
file. It now does these comparisons case-sensitively. If you
upgraded to Subversion 1.7 from an older version, you should
review your access files for case correctness.</p>
</td>
</tr>
</table>
</div>
<p>If you're using the
<code class="literal">SVNParentPath</code> directive, it's important
to specify the repository names in your sections. If you omit
them, a section such as
<code class="literal">[/some/dir]</code> will match the path
<code class="filename">/some/dir</code> in <span class="emphasis"><em>every</em></span>
repository. If you're using the <code class="literal">SVNPath</code>
directive, however, it's fine to only define paths in your
sections—after all, there's only one repository.</p>
<div class="informalexample">
<pre class="programlisting">
[calc:/branches/calc/bug-142]
harry = rw
sally = r
</pre>
</div>
<p>In this first example, the user <code class="literal">harry</code> has
full read and write access on the
<code class="filename">/branches/calc/bug-142</code> directory in the
<code class="literal">calc</code> repository, but the user
<code class="literal">sally</code> has read-only access. Any other users
are blocked from accessing this directory.</p>
<div class="warning" title="Warning" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Warning">
<tr>
<td rowspan="2" align="center" valign="top" width="25">
<img alt="[Warning]" src="images/warning.png" />
</td>
<th align="left">Warning</th>
</tr>
<tr>
<td align="left" valign="top">
<p><span class="command"><strong>mod_dav_svn</strong></span> offers a directive,
<code class="literal">SVNReposName</code>, which allows administrators
to define a more human-friendly name, of sorts, for a
repository:</p>
<div class="informalexample">
<pre class="programlisting">
&lt;Location /svn/calc&gt;
SVNPath /var/svn/calc
SVNReposName "Calculator Application"
</pre>
</div>
<p>This allows <span class="command"><strong>mod_dav_svn</strong></span> to identify the
repository by something other than merely its server directory
basename—<code class="filename">calc</code>, in the previous
example—when providing directory listings of repository
content. Be aware, however, that when consulting the access
file for authorization rules, Subversion uses this repository
basename for comparison, <span class="emphasis"><em>not</em></span> any
configured human-friendly name.</p>
</td>
</tr>
</table>
</div>
<p>Of course, permissions are inherited from parent to child
directory. That means we can specify a subdirectory with a
different access policy for Sally:</p>
<div class="informalexample">
<pre class="programlisting">
[calc:/branches/calc/bug-142]
harry = rw
sally = r
# give sally write access only to the 'testing' subdir
[calc:/branches/calc/bug-142/testing]
sally = rw
</pre>
</div>
<p>Now Sally can write to the <code class="filename">testing</code>
subdirectory of the branch, but can still only read other parts.
Harry, meanwhile, continues to have complete read/write access
to the whole branch.</p>
<p>It's also possible to explicitly deny permission to someone
via inheritance rules, by setting the username variable to
nothing:</p>
<div class="informalexample">
<pre class="programlisting">
[calc:/branches/calc/bug-142]
harry = rw
sally = r
[calc:/branches/calc/bug-142/secret]
harry =
</pre>
</div>
<p>In this example, Harry has read/write access to the
entire <code class="filename">bug-142</code> tree, but has absolutely no
access at all to the <code class="filename">secret</code> subdirectory
within it.</p>
<div class="tip" title="Tip" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Tip">
<tr>
<td rowspan="2" align="center" valign="top" width="25">
<img alt="[Tip]" src="images/tip.png" />
</td>
<th align="left">Tip</th>
</tr>
<tr>
<td align="left" valign="top">
<p>The thing to remember is that the most specific path
always matches first. The server tries to match the path
itself, and then the parent of the path, then the parent of
that, and so on. The net effect is that mentioning a specific
path in the access file will always override any permissions
inherited from parent directories.</p>
</td>
</tr>
</table>
</div>
<p>By default, nobody has any access to the repository at all.
That means that if you're starting with an empty file, you'll
probably want to give at least read permission to all users at
the root of the repository. You can do this by using the
asterisk variable (<code class="literal">*</code>), which means <span class="quote"><span class="quote">all
users</span></span>:</p>
<div class="informalexample">
<pre class="programlisting">
[/]
* = r
</pre>
</div>
<p>This is a common setup; notice that no repository
name is mentioned in the section name. This makes all repositories
world-readable to all users. Once all users have read access to
the repositories, you can give explicit
<code class="literal">rw</code> permission to certain users on specific
subdirectories within specific repositories.</p>
<p>The asterisk variable (<code class="literal">*</code>) is also worth
special mention because it's the
<span class="emphasis"><em>only</em></span> pattern that matches an anonymous
user. If you've configured your server block to allow a mixture
of anonymous and authenticated access, all users start out
accessing anonymously. The server looks for a
<code class="literal">*</code> value defined for the path being accessed;
if it can't find one, it demands real authentication from
the client.</p>
<p>The access file also allows you to define whole groups of
users, much like the Unix <code class="filename">/etc/group</code>
file:</p>
<div class="informalexample">
<pre class="programlisting">
[groups]
calc-developers = harry, sally, joe
paint-developers = frank, sally, jane
everyone = harry, sally, joe, frank, jane
</pre>
</div>
<p>Groups can be granted access control just like users.
Distinguish them with an <span class="quote"><span class="quote">at</span></span>
(<code class="literal">@</code>) prefix:</p>
<div class="informalexample">
<pre class="programlisting">
[calc:/projects/calc]
@calc-developers = rw
[paint:/projects/paint]
jane = r
@paint-developers = rw
</pre>
</div>
<p>Another important fact is that group permissions are not
overridden by individual user permissions. Rather, the
<span class="emphasis"><em>combination</em></span> of all matching permissions is
granted. In the prior example, Jane is a member of the
<code class="literal">paint-developers</code> group, which has read/write
access. Combined with the <code class="literal">jane = r</code> rule,
this still gives Jane read/write access. Permissions for group
members can only be extended beyond the permissions the group
already has. Restricting users who are part of a group to less
than their group's permissions is impossible.</p>
<p>Groups can also be defined to contain other groups:</p>
<div class="informalexample">
<pre class="programlisting">
[groups]
calc-developers = harry, sally, joe
paint-developers = frank, sally, jane
everyone = @calc-developers, @paint-developers
</pre>
</div>
<p>Subversion 1.5 brought several useful features to the access
file syntax—username aliases, authentication class tokens,
and a new rule exclusion mechanism—all of which further
simplify the maintenance of the access file. We'll describe
first the username aliases feature.</p>
<p>Some authentication systems expect and carry relatively
short usernames of the sorts we've been describing
here—<code class="literal">harry</code>,
<code class="literal">sally</code>, <code class="literal">joe</code>, and so on. But
other authentication systems—such as those which use LDAP
stores or SSL client certificates—may carry much more
complex usernames. For example, Harry's username in an
LDAP-protected system might be <code class="literal">CN=Harold
Hacker,OU=Engineers,DC=red-bean,DC=com</code>. With
usernames like that, the access file can become quite bloated
with long or obscure usernames that are easy to mistype.
Fortunately, username aliases allow you to have to type the
correct complex username only once, in a statement which assigns to
it a more easily digestable alias.</p>
<div class="informalexample">
<pre class="programlisting">
[aliases]
harry = CN=Harold Hacker,OU=Engineers,DC=red-bean,DC=com
sally = CN=Sally Swatterbug,OU=Engineers,DC=red-bean,DC=com
joe = CN=Gerald I. Joseph,OU=Engineers,DC=red-bean,DC=com
</pre>
</div>
<p>Once you've defined a set of aliases, you can refer to the
users elsewhere in the access file via their aliases in all the
same places you could have instead used their actual usernames.
Simply prepend an ampersand to the alias to distinguish it from
a regular username:</p>
<div class="informalexample">
<pre class="programlisting">
[groups]
calc-developers = &amp;harry, &amp;sally, &amp;joe
paint-developers = &amp;frank, &amp;sally, &amp;jane
everyone = @calc-developers, @paint-developers
</pre>
</div>
<p>You might also choose to use aliases if your users'
usernames change frequently. Doing so allows you to need to
update only the aliases table when these username changes occur,
instead of doing global-search-and-replace operations on the
whole access file.</p>
<p>Subversion also supports some <span class="quote"><span class="quote">magic</span></span> tokens
for helping you to make rule assignments based on the user's
authentication class. One such token is
the <code class="literal">$authenticated</code> token. Use this token
where you would otherwise specify a username, alias, or group
name in your authorization rules to declare the permissions
granted to any user who has authenticated with any username at
all. Similarly employed is the <code class="literal">$anonymous</code>
token, except that it matches everyone who has
<span class="emphasis"><em>not</em></span> authenticated with a username.</p>
<div class="informalexample">
<pre class="programlisting">
[calendar:/projects/calendar]
$anonymous = r
$authenticated = rw
</pre>
</div>
<p>Finally, another handy bit of access file syntax magic is
the use of the tilde (<code class="literal">~</code>) character as an
exclusion marker. In your authorization rules, prefixing a
username, alias, group name, or authentication class token with
a tilde character will cause Subversion to apply the rule to
users who do <span class="emphasis"><em>not</em></span> match the rule. Though
somewhat unnecessarily obfuscated, the following block is
equivalent to the one in the previous example:</p>
<div class="informalexample">
<pre class="programlisting">
[calendar:/projects/calendar]
~$authenticated = r
~$anonymous = rw
</pre>
</div>
<p>A less obvious example might be as follows:</p>
<div class="informalexample">
<pre class="programlisting">
[groups]
calc-developers = &amp;harry, &amp;sally, &amp;joe
calc-owners = &amp;hewlett, &amp;packard
calc = @calc-developers, @calc-owners
# Any calc participant has read-write access...
[calc:/projects/calc]
@calc = rw
# ...but only allow the owners to make and modify release tags.
[calc:/projects/calc/tags]
~@calc-owners = r
</pre>
</div>
<div class="sidebar" title="Partial Readability and Checkouts">
<p class="title">
<b>Partial Readability and Checkouts</b>
</p>
<p>If you're using Apache as your Subversion server and have
made certain subdirectories of your repository unreadable to
certain users, you need to be aware of a possible nonoptimal
behavior with <span class="command"><strong>svn checkout</strong></span>.</p>
<p>When the client requests a checkout or update over HTTP,
it makes a single server request and receives a single (often
large) server response. When the server receives the request,
that is the <span class="emphasis"><em>only</em></span> opportunity Apache has
to demand user authentication. This has some odd side
effects. For example, if a certain subdirectory of the
repository is readable only by user Sally, and user Harry
checks out a parent directory, his client will respond to the
initial authentication challenge as Harry. As the server
generates the large response, there's no way it can resend an
authentication challenge when it reaches the special
subdirectory; thus the subdirectory is skipped altogether,
rather than asking the user to reauthenticate as Sally at the
right moment. In a similar way, if the root of the repository
is anonymously world-readable, the entire checkout will be
done without authentication—again, skipping the
unreadable directory, rather than asking for authentication
partway through.</p>
</div>
<div class="footnotes">
<br />
<hr width="100" align="left" />
<div class="footnote">
<p><sup>[<a id="ftn.idp39802688" href="#idp39802688" class="para">50</a>] </sup>A common theme in
this book!</p>
</div>
</div>
</div>
<div class="navfooter">
<hr />
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left"><a accesskey="p" href="svn.serverconfig.httpd.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="svn.serverconfig.html">Up</a>
</td>
<td width="40%" align="right"> <a accesskey="n" href="svn.serverconfig.operational-logging.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">httpd, the Apache HTTP Server </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
<td width="40%" align="right" valign="top"> High-level Logging</td>
</tr>
</table>
</div>
<div xmlns="" id="svn-footer">
<hr />
<p>You are reading <em>Version Control with Subversion</em> (for Subversion 1.7), by Ben Collins-Sussman, Brian W. Fitzpatrick, and C. Michael Pilato.<br />
This work is licensed under the <a href="http://creativecommons.org/licenses/by/2.0/">Creative Commons Attribution License v2.0</a>.<br />
To submit comments, corrections, or other contributions to the text, please visit <a href="http://www.svnbook.com/">http://www.svnbook.com/</a>.</p>
</div>
</body>
</html>

View file

@ -0,0 +1,101 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>svnlook youngest</title>
<link rel="stylesheet" href="styles.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2" />
<style type="text/css">
body { background-image: url('images/draft.png');
background-repeat: no-repeat;
background-position: top left;
/* The following properties make the watermark "fixed" on the page. */
/* I think that's just a bit too distracting for the reader... */
/* background-attachment: fixed; */
/* background-position: center center; */
}</style>
<link rel="home" href="index.html" title="Version Control with Subversion [DRAFT]" />
<link rel="up" href="svn.ref.svnlook.html#svn.ref.svnlook.c" title="svnlook Subcommands" />
<link rel="prev" href="svn.ref.svnlook.c.uuid.html" title="svnlook uuid" />
<link rel="next" href="svn.ref.svnsync.html" title="svnsync—Subversion Repository Mirroring" />
</head>
<body>
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
<th colspan="3" align="center">svnlook youngest</th>
</tr>
<tr>
<td width="20%" align="left"><a accesskey="p" href="svn.ref.svnlook.c.uuid.html">Prev</a> </td>
<th width="60%" align="center">svnlook Subcommands</th>
<td width="20%" align="right"> <a accesskey="n" href="svn.ref.svnsync.html">Next</a></td>
</tr>
</table>
<hr />
</div>
<div class="refentry" title="svnlook youngest">
<a id="svn.ref.svnlook.c.youngest"></a>
<div class="titlepage"></div>
<a id="idp44176816" class="indexterm"></a>
<div class="refnamediv">
<h2>Name</h2>
<p>svnlook youngest — Print the youngest revision number.</p>
</div>
<div class="refsect1" title="Synopsis">
<a id="idp44179904"></a>
<h2>Synopsis</h2>
<p>
<code class="literal">svnlook youngest REPOS_PATH</code>
</p>
</div>
<div class="refsect1" title="Description">
<a id="idp44181536"></a>
<h2>Description</h2>
<p>Print the youngest revision number of a repository.</p>
</div>
<div class="refsect1" title="Options">
<a id="idp44182784"></a>
<h2>Options</h2>
<p>None</p>
</div>
<div class="refsect1" title="Examples">
<a id="idp44184000"></a>
<h2>Examples</h2>
<p>This shows the youngest revision of our sample
repository:</p>
<div class="informalexample">
<pre class="screen">
$ svnlook youngest /var/svn/repos/
42
</pre>
</div>
</div>
</div>
<div class="navfooter">
<hr />
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left"><a accesskey="p" href="svn.ref.svnlook.c.uuid.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="svn.ref.svnlook.html#svn.ref.svnlook.c">Up</a>
</td>
<td width="40%" align="right"> <a accesskey="n" href="svn.ref.svnsync.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">svnlook uuid </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
<td width="40%" align="right" valign="top"> svnsync—Subversion Repository Mirroring</td>
</tr>
</table>
</div>
<div xmlns="" id="svn-footer">
<hr />
<p>You are reading <em>Version Control with Subversion</em> (for Subversion 1.7), by Ben Collins-Sussman, Brian W. Fitzpatrick, and C. Michael Pilato.<br />
This work is licensed under the <a href="http://creativecommons.org/licenses/by/2.0/">Creative Commons Attribution License v2.0</a>.<br />
To submit comments, corrections, or other contributions to the text, please visit <a href="http://www.svnbook.com/">http://www.svnbook.com/</a>.</p>
</div>
</body>
</html>

View file

@ -0,0 +1,413 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Ignoring Unversioned Items</title>
<link rel="stylesheet" href="styles.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2" />
<style type="text/css">
body { background-image: url('images/draft.png');
background-repeat: no-repeat;
background-position: top left;
/* The following properties make the watermark "fixed" on the page. */
/* I think that's just a bit too distracting for the reader... */
/* background-attachment: fixed; */
/* background-position: center center; */
}</style>
<link rel="home" href="index.html" title="Version Control with Subversion [DRAFT]" />
<link rel="up" href="svn.advanced.html" title="Chapter 3. Advanced Topics" />
<link rel="prev" href="svn.advanced.props.file-portability.html" title="File Portability" />
<link rel="next" href="svn.advanced.props.special.keywords.html" title="Keyword Substitution" />
</head>
<body>
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
<th colspan="3" align="center">Ignoring Unversioned Items</th>
</tr>
<tr>
<td width="20%" align="left"><a accesskey="p" href="svn.advanced.props.file-portability.html">Prev</a> </td>
<th width="60%" align="center">Chapter 3. Advanced Topics</th>
<td width="20%" align="right"> <a accesskey="n" href="svn.advanced.props.special.keywords.html">Next</a></td>
</tr>
</table>
<hr />
</div>
<div class="sect1" title="Ignoring Unversioned Items">
<div class="titlepage">
<div>
<div>
<h2 class="title" style="clear: both"><a id="svn.advanced.props.special.ignore"></a>Ignoring Unversioned Items</h2>
</div>
</div>
</div>
<p>In any given working copy, there is a good chance that
alongside all those versioned files and directories are other
files and directories that are neither versioned nor intended
to be. Text editors litter directories with backup files.
Software compilers generate intermediate—or even
final—files that you typically wouldn't bother to
version. And users themselves drop various other files and
directories wherever they see fit, often in version control
working copies.</p>
<p>It's ludicrous to expect Subversion working copies to be
somehow impervious to this kind of clutter and impurity. In
fact, Subversion counts it as a <span class="emphasis"><em>feature</em></span>
that its working copies are just typical directories, just like
unversioned trees. But these not-to-be-versioned files and
directories can cause some annoyance for Subversion users. For
example, because the <span class="command"><strong>svn add</strong></span> and <span class="command"><strong>svn
import</strong></span> commands act recursively by default and don't
know which files in a given tree you do and don't wish to
version, it's easy to accidentally add stuff to version control
that you didn't mean to. And because <span class="command"><strong>svn
status</strong></span> reports, by default, every item of interest in
a working copy—including unversioned files and
directories—its output can get quite noisy where many of
these things exist.</p>
<p>So Subversion provides two ways for telling it which files
you would prefer that it simply disregard. One of the ways
involves the use of Subversion's runtime configuration system
(see <a class="xref" href="svn.advanced.confarea.html" title="Runtime Configuration Area">the section called “Runtime Configuration Area”</a>), and therefore
applies to all the Subversion operations that make use of that
runtime configuration—generally those performed on a particular
computer or by a particular user of a computer. The other way
makes use of Subversion's directory property support and is more
tightly bound to the versioned tree itself, and therefore
affects everyone who has a working copy of that tree. Both of
the mechanisms use <em class="firstterm">file patterns</em> (strings
of literal and special wildcard characters used to match against
filenames) to decide which files to ignore.</p>
<p>The Subversion runtime configuration system provides an
option, <code class="literal">global-ignores</code>, whose value is a
whitespace-delimited collection of file patterns. The
Subversion client checks these patterns against the names of the
files that are candidates for addition to version control, as
well as to unversioned files that the <span class="command"><strong>svn
status</strong></span> command notices. If any file's name matches
one of the patterns, Subversion will basically act as if the
file didn't exist at all. This is really useful for the kinds
of files that you almost never want to version, such as editor
backup files such as Emacs' <code class="literal">*~</code> and
<code class="literal">.*~</code> files.</p>
<div class="sidebar" title="File Patterns in Subversion">
<p class="title">
<b>File Patterns in Subversion</b>
</p>
<p>File patterns (also called <em class="firstterm">globs</em> or
<em class="firstterm">shell wildcard patterns</em>) are strings of
characters that are intended to be matched against filenames,
typically for the purpose of quickly selecting some subset of
similar files from a larger grouping without having to
explicitly name each file. The patterns contain two types of
characters: regular characters, which are compared explicitly
against potential matches, and special wildcard characters,
which are interpreted differently for matching
purposes.</p>
<p>There are different types of file pattern syntaxes, but
Subversion uses the one most commonly found in Unix systems
implemented as the <code class="function">fnmatch</code> system
function. It supports the following wildcards, described here
simply for your convenience:</p>
<div class="variablelist">
<dl>
<dt>
<span class="term">
<code class="literal">?</code>
</span>
</dt>
<dd>
<p>Matches any single character</p>
</dd>
<dt>
<span class="term">
<code class="literal">*</code>
</span>
</dt>
<dd>
<p>Matches any string of characters, including the
empty string</p>
</dd>
<dt>
<span class="term">
<code class="literal">[</code>
</span>
</dt>
<dd>
<p>Begins a character class definition terminated by
<code class="literal">]</code>, used for matching a subset of
characters</p>
</dd>
</dl>
</div>
<p>You can see this same pattern matching behavior at a Unix
shell prompt. The following are some examples of patterns
being used for various things:</p>
<div class="informalexample">
<pre class="screen">
$ ls ### the book sources
appa-quickstart.xml ch06-server-configuration.xml
appb-svn-for-cvs-users.xml ch07-customizing-svn.xml
appc-webdav.xml ch08-embedding-svn.xml
book.xml ch09-reference.xml
ch00-preface.xml ch10-world-peace-thru-svn.xml
ch01-fundamental-concepts.xml copyright.xml
ch02-basic-usage.xml foreword.xml
ch03-advanced-topics.xml images/
ch04-branching-and-merging.xml index.xml
ch05-repository-admin.xml styles.css
$ ls ch* ### the book chapters
ch00-preface.xml ch06-server-configuration.xml
ch01-fundamental-concepts.xml ch07-customizing-svn.xml
ch02-basic-usage.xml ch08-embedding-svn.xml
ch03-advanced-topics.xml ch09-reference.xml
ch04-branching-and-merging.xml ch10-world-peace-thru-svn.xml
ch05-repository-admin.xml
$ ls ch?0-* ### the book chapters whose numbers end in zero
ch00-preface.xml ch10-world-peace-thru-svn.xml
$ ls ch0[3578]-* ### the book chapters that Mike is responsible for
ch03-advanced-topics.xml ch07-customizing-svn.xml
ch05-repository-admin.xml ch08-embedding-svn.xml
$
</pre>
</div>
<p>File pattern matching is a bit more complex than what
we've described here, but this basic usage level tends to suit
the majority of Subversion users.</p>
</div>
<p>When found on a versioned directory, the
<code class="literal">svn:ignore</code> property is expected to contain a
list of newline-delimited file patterns that Subversion should
use to determine ignorable objects in that same directory.
These patterns do not override those found in the
<code class="literal">global-ignores</code> runtime configuration option,
but are instead appended to that list. And it's worth noting
again that, unlike the <code class="literal">global-ignores</code> option,
the patterns found in the <code class="literal">svn:ignore</code>
property apply only to the directory on which that property is
set, and not to any of its subdirectories. The
<code class="literal">svn:ignore</code> property is a good way to tell
Subversion to ignore files that are likely to be present in
every user's working copy of that directory, such as compiler
output or—to use an example more appropriate to this
book—the HTML, PDF, or PostScript files generated as the
result of a conversion of some source DocBook XML files to a
more legible output format.</p>
<div class="note" title="Note" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Note">
<tr>
<td rowspan="2" align="center" valign="top" width="25">
<img alt="[Note]" src="images/note.png" />
</td>
<th align="left">Note</th>
</tr>
<tr>
<td align="left" valign="top">
<p>Subversion's support for ignorable file patterns extends
only to the one-time process of adding unversioned
files and directories to version control. Once an object is
under Subversion's control, the ignore pattern mechanisms no
longer apply to it. In other words, don't expect Subversion
to avoid committing changes you've made to a versioned file
simply because that file's name matches an ignore
pattern—Subversion <span class="emphasis"><em>always</em></span> notices
all of its versioned objects.</p>
</td>
</tr>
</table>
</div>
<div class="sidebar" title="Ignore Patterns for CVS Users">
<p class="title">
<b>Ignore Patterns for CVS Users</b>
</p>
<p>The Subversion <code class="literal">svn:ignore</code> property is
very similar in syntax and function to the CVS
<code class="filename">.cvsignore</code> file. In fact, if you are
migrating a CVS working copy to Subversion, you can directly
migrate the ignore patterns by using the
<code class="filename">.cvsignore</code> file as input file to the
<span class="command"><strong>svn propset</strong></span> command:</p>
<div class="informalexample">
<pre class="screen">
$ svn propset svn:ignore -F .cvsignore .
property 'svn:ignore' set on '.'
$
</pre>
</div>
<p>There are, however, some differences in the ways that CVS
and Subversion handle ignore patterns. The two systems use
the ignore patterns at some different times, and there are
slight discrepancies in what the ignore patterns apply to.
Also, Subversion does not recognize the use of the
<code class="literal">!</code> pattern as a reset back to having no
ignore patterns at all.</p>
</div>
<p>The global list of ignore patterns tends to be more a
matter of personal taste and ties more closely to a user's
particular tool chain than to the details of any particular
working copy's needs. So, the rest of this section will focus
on the <code class="literal">svn:ignore</code> property and its
uses.</p>
<p>Say you have the following output from <span class="command"><strong>svn
status</strong></span>:</p>
<div class="informalexample">
<pre class="screen">
$ svn status calc
M calc/button.c
? calc/calculator
? calc/data.c
? calc/debug_log
? calc/debug_log.1
? calc/debug_log.2.gz
? calc/debug_log.3.gz
</pre>
</div>
<p>In this example, you have made some property modifications
to <code class="filename">button.c</code>, but in your working copy, you
also have some unversioned files: the latest
<code class="filename">calculator</code> program that you've compiled
from your source code, a source file named
<code class="filename">data.c</code>, and a set of debugging output
logfiles. Now, you know that your build system always results
in the <code class="filename">calculator</code> program being
generated.<sup>[<a id="idp34328384" href="#ftn.idp34328384" class="footnote">16</a>]</sup> And you know that your test suite
always leaves those debugging logfiles lying around. These
facts are true for all working copies of this project, not just
your own. And you know that you aren't interested in seeing
those things every time you run
<span class="command"><strong>svn status</strong></span>, and you are pretty sure that
nobody else is interested in them either. So you use
<strong class="userinput"><code>svn propedit svn:ignore calc</code></strong> to add some
ignore patterns to the <code class="filename">calc</code>
directory.</p>
<div class="informalexample">
<pre class="screen">
$ svn propget svn:ignore calc
calculator
debug_log*
$
</pre>
</div>
<p>After you've added this property, you will now have a local
property modification on the <code class="filename">calc</code>
directory. But notice what else is different about your
<span class="command"><strong>svn status</strong></span> output:</p>
<div class="informalexample">
<pre class="screen">
$ svn status
M calc
M calc/button.c
? calc/data.c
</pre>
</div>
<p>Now, all that cruft is missing from the output! Your
<code class="filename">calculator</code> compiled program and all those
logfiles are still in your working copy; Subversion just isn't
constantly reminding you that they are present and unversioned.
And now with all the uninteresting noise removed from the
display, you are left with more intriguing items—such as
that source code file <code class="filename">data.c</code> that you
probably forgot to add to version control.</p>
<p>Of course, this less-verbose report of your working copy
status isn't the only one available. If you actually want to
see the ignored files as part of the status report, you can pass
the <code class="option">--no-ignore</code> option to Subversion:</p>
<div class="informalexample">
<pre class="screen">
$ svn status --no-ignore
M calc
M calc/button.c
I calc/calculator
? calc/data.c
I calc/debug_log
I calc/debug_log.1
I calc/debug_log.2.gz
I calc/debug_log.3.gz
</pre>
</div>
<p>As mentioned earlier, the list of file patterns to ignore is
also used by <span class="command"><strong>svn add</strong></span> and <span class="command"><strong>svn
import</strong></span>. Both of these operations involve asking
Subversion to begin managing some set of files and directories.
Rather than force the user to pick and choose which files in a
tree she wishes to start versioning, Subversion uses the ignore
patterns—both the global and the per-directory
lists—to determine which files should not be swept into
the version control system as part of a larger recursive
addition or import operation. And here again, you can use the
<code class="option">--no-ignore</code> option to tell Subversion to disregard
its ignores list and operate on all the files and directories
present.</p>
<div class="tip" title="Tip" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Tip">
<tr>
<td rowspan="2" align="center" valign="top" width="25">
<img alt="[Tip]" src="images/tip.png" />
</td>
<th align="left">Tip</th>
</tr>
<tr>
<td align="left" valign="top">
<p>Even if <code class="literal">svn:ignore</code> is set, you may run
into problems if you use shell wildcards in a command. Shell
wildcards are expanded into an explicit list of targets before
Subversion operates on them, so running <strong class="userinput"><code>svn
<em class="replaceable"><code>SUBCOMMAND</code></em> *</code></strong> is just like
running <strong class="userinput"><code>svn <em class="replaceable"><code>SUBCOMMAND</code></em>
file1 file2 file3 …</code></strong>. In the case of the
<span class="command"><strong>svn add</strong></span> command, this has an effect similar
to passing the <code class="option">--no-ignore</code> option. So
instead of using a wildcard, use <strong class="userinput"><code>svn add --force
.</code></strong> to do a bulk scheduling of unversioned things for
addition. The explicit target will ensure that the current
directory isn't overlooked because of being already under
version control, and the <code class="option">--force</code> option will
cause Subversion to crawl through that directory, adding
unversioned files while still honoring the
<code class="literal">svn:ignore</code> property and
<code class="literal">global-ignores</code> runtime configuration
variable. Be sure to also provide the <code class="option">--depth
files</code> option to the <span class="command"><strong>svn add</strong></span>
command if you don't want a fully recursive crawl for things
to add.</p>
</td>
</tr>
</table>
</div>
<div class="footnotes">
<br />
<hr width="100" align="left" />
<div class="footnote">
<p><sup>[<a id="ftn.idp34328384" href="#idp34328384" class="para">16</a>] </sup>Isn't that the whole point of a build
system?</p>
</div>
</div>
</div>
<div class="navfooter">
<hr />
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left"><a accesskey="p" href="svn.advanced.props.file-portability.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="svn.advanced.html">Up</a>
</td>
<td width="40%" align="right"> <a accesskey="n" href="svn.advanced.props.special.keywords.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">File Portability </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
<td width="40%" align="right" valign="top"> Keyword Substitution</td>
</tr>
</table>
</div>
<div xmlns="" id="svn-footer">
<hr />
<p>You are reading <em>Version Control with Subversion</em> (for Subversion 1.7), by Ben Collins-Sussman, Brian W. Fitzpatrick, and C. Michael Pilato.<br />
This work is licensed under the <a href="http://creativecommons.org/licenses/by/2.0/">Creative Commons Attribution License v2.0</a>.<br />
To submit comments, corrections, or other contributions to the text, please visit <a href="http://www.svnbook.com/">http://www.svnbook.com/</a>.</p>
</div>
</body>
</html>

View file

@ -0,0 +1,434 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Keyword Substitution</title>
<link rel="stylesheet" href="styles.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2" />
<style type="text/css">
body { background-image: url('images/draft.png');
background-repeat: no-repeat;
background-position: top left;
/* The following properties make the watermark "fixed" on the page. */
/* I think that's just a bit too distracting for the reader... */
/* background-attachment: fixed; */
/* background-position: center center; */
}</style>
<link rel="home" href="index.html" title="Version Control with Subversion [DRAFT]" />
<link rel="up" href="svn.advanced.html" title="Chapter 3. Advanced Topics" />
<link rel="prev" href="svn.advanced.props.special.ignore.html" title="Ignoring Unversioned Items" />
<link rel="next" href="svn.advanced.sparsedirs.html" title="Sparse Directories" />
</head>
<body>
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
<th colspan="3" align="center">Keyword Substitution</th>
</tr>
<tr>
<td width="20%" align="left"><a accesskey="p" href="svn.advanced.props.special.ignore.html">Prev</a> </td>
<th width="60%" align="center">Chapter 3. Advanced Topics</th>
<td width="20%" align="right"> <a accesskey="n" href="svn.advanced.sparsedirs.html">Next</a></td>
</tr>
</table>
<hr />
</div>
<div class="sect1" title="Keyword Substitution">
<div class="titlepage">
<div>
<div>
<h2 class="title" style="clear: both"><a id="svn.advanced.props.special.keywords"></a>Keyword Substitution</h2>
</div>
</div>
</div>
<p>Subversion has the ability to substitute
<em class="firstterm">keywords</em>—pieces of useful,
dynamic information about a versioned file—into the
contents of the file itself. Keywords generally provide
information about the last modification made to the file.
Because this information changes each time the
file changes, and more importantly, just
<span class="emphasis"><em>after</em></span> the file changes, it is a hassle
for any process except the version control system to keep
the data completely up to date. Left to human authors, the
information would inevitably grow stale.</p>
<p>For example, say you have a document in which you would
like to display the last date on which it was modified. You
could burden every author of that document to, just before
committing their changes, also tweak the part of the
document that describes when it was last changed. But
sooner or later, someone would forget to do that. Instead,
simply ask Subversion to perform keyword substitution on the
<code class="literal">LastChangedDate</code> keyword. You control
where the keyword is inserted into your document by placing
a <em class="firstterm">keyword anchor</em> at the desired
location in the file. This anchor is just a string of text
formatted as
<code class="literal">$</code><em class="replaceable"><code>KeywordName</code></em><code class="literal">$</code>.</p>
<p>All keywords are case-sensitive where they appear as
anchors in files: you must use the correct capitalization
for the keyword to be expanded. You should consider the
value of the <code class="literal">svn:keywords</code> property to be
case-sensitive, too—certain keyword names will be recognized
regardless of case, but this behavior is deprecated.</p>
<p>Subversion defines the list of keywords available for
substitution. That list contains the following five keywords,
some of which have aliases that you can also use:</p>
<div class="variablelist">
<dl>
<dt>
<span class="term">
<code class="literal">Date</code>
</span>
</dt>
<dd>
<p>This keyword describes the last time the file was
known to have been changed in the repository, and is of
the form <code class="literal">$Date: 2006-07-22 21:42:37 -0700 (Sat,
22 Jul 2006) $</code>. It may also be specified as
<code class="literal">LastChangedDate</code>. Unlike the
<code class="literal">Id</code> keyword, which uses UTC, the
<code class="literal">Date</code> keyword displays dates using the
local time zone.</p>
</dd>
<dt>
<span class="term">
<code class="literal">Revision</code>
</span>
</dt>
<dd>
<p>This keyword describes the last known revision in
which this file changed in the repository, and looks
something like <code class="literal">$Revision: 144 $</code>.
It may also be specified as
<code class="literal">LastChangedRevision</code> or
<code class="literal">Rev</code>.</p>
</dd>
<dt>
<span class="term">
<code class="literal">Author</code>
</span>
</dt>
<dd>
<p>This keyword describes the last known user to
change this file in the repository, and looks
something like <code class="literal">$Author: harry $</code>.
It may also be specified as
<code class="literal">LastChangedBy</code>.</p>
</dd>
<dt>
<span class="term">
<code class="literal">HeadURL</code>
</span>
</dt>
<dd>
<p>This keyword describes the full URL to the latest
version of the file in the repository, and looks
something like <code class="literal">$HeadURL:
http://svn.example.com/repos/trunk/calc.c $</code>.
It may be abbreviated as
<code class="literal">URL</code>.</p>
</dd>
<dt>
<span class="term">
<code class="literal">Id</code>
</span>
</dt>
<dd>
<p>This keyword is a compressed combination of the other
keywords. Its substitution looks something like
<code class="literal">$Id: calc.c 148 2006-07-28 21:30:43Z sally
$</code>, and is interpreted to mean that the file
<code class="filename">calc.c</code> was last changed in revision
148 on the evening of July 28, 2006 by the user
<code class="literal">sally</code>. The date displayed by this
keyword is in UTC, unlike that of the
<code class="literal">Date</code> keyword (which uses the local time
zone).</p>
</dd>
<dt>
<span class="term">
<code class="literal">Header</code>
</span>
</dt>
<dd>
<p>This keyword is similar to the <code class="literal">Id</code>
keyword but contains the full URL of the latest revision
of the item, identical to <code class="literal">HeadURL</code>.
Its substitution looks something like <code class="literal">$Header:
http://svn.example.com/repos/trunk/calc.c
148 2006-07-28 21:30:43Z sally $</code>.
</p>
</dd>
</dl>
</div>
<p>Several of the preceding descriptions use the phrase
<span class="quote"><span class="quote">last known</span></span> or similar wording. Keep in mind that
keyword expansion is a client-side operation, and your client
<span class="quote"><span class="quote">knows</span></span> only about changes that have occurred in
the repository when you update your working copy to include
those changes. If you never update your working copy, your
keywords will never expand to different values even if those
versioned files are being changed regularly in the
repository.</p>
<p>Simply adding keyword anchor text to your file does nothing
special. Subversion will never attempt to perform textual
substitutions on your file contents unless explicitly asked to
do so. After all, you might be writing a
document<sup>[<a id="idp34391824" href="#ftn.idp34391824" class="footnote">17</a>]</sup> about how to use keywords, and
you don't want Subversion to substitute your beautiful examples
of unsubstituted keyword anchors!</p>
<p>To tell Subversion whether to substitute keywords
on a particular file, we again turn to the property-related
subcommands. The <code class="literal">svn:keywords</code> property,
when set on a versioned file, controls which keywords will
be substituted on that file. The value is a space-delimited
list of keyword names or aliases.</p>
<p>For example, say you have a versioned file named
<code class="filename">weather.txt</code> that looks like
this:</p>
<div class="informalexample">
<pre class="programlisting">
Here is the latest report from the front lines.
$LastChangedDate$
$Rev$
Cumulus clouds are appearing more frequently as summer approaches.
</pre>
</div>
<p>With no <code class="literal">svn:keywords</code> property set on
that file, Subversion will do nothing special. Now, let's
enable substitution of the
<code class="literal">LastChangedDate</code> keyword.</p>
<div class="informalexample">
<pre class="screen">
$ svn propset svn:keywords "Date Author" weather.txt
property 'svn:keywords' set on 'weather.txt'
$
</pre>
</div>
<p>Now you have made a local property modification on the
<code class="filename">weather.txt</code> file. You will see no
changes to the file's contents (unless you made some of your
own prior to setting the property). Notice that the file
contained a keyword anchor for the <code class="literal">Rev</code>
keyword, yet we did not include that keyword in the property
value we set. Subversion will happily ignore requests to
substitute keywords that are not present in the file and
will not substitute keywords that are not present in the
<code class="literal">svn:keywords</code> property value.</p>
<p>Immediately after you commit this property change,
Subversion will update your working file with the new
substitute text. Instead of seeing your keyword anchor
<code class="literal">$LastChangedDate$</code>, you'll see its
substituted result. That result also contains the name of
the keyword and continues to be delimited by the dollar sign
(<code class="literal">$</code>) characters. And as we predicted, the
<code class="literal">Rev</code> keyword was not substituted because
we didn't ask for it to be.</p>
<p>Note also that we set the <code class="literal">svn:keywords</code>
property to <code class="literal">Date Author</code>, yet the keyword
anchor used the alias <code class="literal">$LastChangedDate$</code>
and still expanded correctly:</p>
<div class="informalexample">
<pre class="screen">
Here is the latest report from the front lines.
$LastChangedDate: 2006-07-22 21:42:37 -0700 (Sat, 22 Jul 2006) $
$Rev$
Cumulus clouds are appearing more frequently as summer approaches.
</pre>
</div>
<p>If someone else now commits a change to
<code class="filename">weather.txt</code>, your copy of that file
will continue to display the same substituted keyword value
as before—until you update your working copy. At that
time, the keywords in your <code class="filename">weather.txt</code>
file will be resubstituted with information that
reflects the most recent known commit to that file.</p>
<div class="sidebar" title="Where's $GlobalRev$?">
<p class="title">
<b>Where's $GlobalRev$?</b>
</p>
<p>New users are often confused by how the
<code class="literal">$Rev$</code> keyword works. Since the repository
has a single, globally increasing revision number, many people
assume that it is this number that is reflected by the
<code class="literal">$Rev$</code> keyword's value. But
<code class="literal">$Rev$</code> expands to show the last revision in
which the file <span class="emphasis"><em>changed</em></span>, not the last
revision to which it was updated. Understanding this clears
the confusion, but frustration often remains—without the
support of a Subversion keyword to do so, how can you
automatically get the global revision number into your
files?</p>
<p>To do this, you need external processing. Subversion
ships with a tool called <span class="command"><strong>svnversion</strong></span>, which
was designed for just this purpose. It crawls your working
copy and generates as output the revision(s) it finds. You
can use this program, plus some additional tooling, to embed
that revision information into your files. For more
information on <span class="command"><strong>svnversion</strong></span>, see <a class="xref" href="svn.ref.svnversion.html" title="svnversion—Subversion Working Copy Version Info">the section called “svnversion—Subversion Working Copy Version Info”</a>.</p>
</div>
<p>You can also instruct Subversion to maintain a fixed length
(in terms of the number of bytes consumed) for the substituted
keyword. By using a double colon (<code class="literal">::</code>) after
the keyword name, followed by a number of space characters, you
define that fixed width. When Subversion goes to substitute
your keyword for the keyword and its value, it will essentially
replace only those space characters, leaving the overall width
of the keyword field unchanged. If the substituted value is
shorter than the defined field width, there will be extra
padding characters (spaces) at the end of the substituted field;
if it is too long, it is truncated with a special hash
(<code class="literal">#</code>) character just before the final dollar
sign terminator.</p>
<p>For example, say you have a document in which you have
some section of tabular data reflecting the document's
Subversion keywords. Using the original Subversion keyword
substitution syntax, your file might look something
like:</p>
<div class="informalexample">
<pre class="screen">
$Rev$: Revision of last commit
$Author$: Author of last commit
$Date$: Date of last commit
</pre>
</div>
<p>Now, that looks nice and tabular at the start of things.
But when you then commit that file (with keyword substitution
enabled, of course), you see:</p>
<div class="informalexample">
<pre class="screen">
$Rev: 12 $: Revision of last commit
$Author: harry $: Author of last commit
$Date: 2006-03-15 02:33:03 -0500 (Wed, 15 Mar 2006) $: Date of last commit
</pre>
</div>
<p>The result is not so beautiful. And you might be
tempted to then adjust the file after the substitution so
that it again looks tabular. But that holds only as long as
the keyword values are the same width. If the last
committed revision rolls into a new place value (say, from
99 to 100), or if another person with a longer username
commits the file, stuff gets all crooked again. However, if
you are using Subversion 1.2 or later, you can use the new
fixed-length keyword syntax and define some field widths that
seem sane, so your file might look like this:</p>
<div class="informalexample">
<pre class="screen">
$Rev:: $: Revision of last commit
$Author:: $: Author of last commit
$Date:: $: Date of last commit
</pre>
</div>
<p>You commit this change to your file. This time,
Subversion notices the new fixed-length keyword syntax and
maintains the width of the fields as defined by the padding
you placed between the double colon and the trailing dollar
sign. After substitution, the width of the fields is
completely unchanged—the short values for
<code class="literal">Rev</code> and <code class="literal">Author</code> are
padded with spaces, and the long <code class="literal">Date</code>
field is truncated by a hash character:</p>
<div class="informalexample">
<pre class="screen">
$Rev:: 13 $: Revision of last commit
$Author:: harry $: Author of last commit
$Date:: 2006-03-15 0#$: Date of last commit
</pre>
</div>
<p>The use of fixed-length keywords is especially handy when
performing substitutions into complex file formats that
themselves use fixed-length fields for data, or for which the
stored size of a given data field is overbearingly difficult to
modify from outside the format's native application (as is true
for the older Microsoft Office document formats).</p>
<div class="note" title="Note" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Note">
<tr>
<td rowspan="2" align="center" valign="top" width="25">
<img alt="[Note]" src="images/note.png" />
</td>
<th align="left">Note</th>
</tr>
<tr>
<td align="left" valign="top">
<p>Subversion will only perform keyword substitution on files
that it considers to be human-readable—this is, files
which don't carry an <code class="literal">svn:mime-type</code> property
whose value indicates otherwise. To force keyword
substitution on binary files, you'll need to either lie or
feign ignorance about their true content type. Understand,
however, that doing so will also enable for those files other
Subversion behaviors that you might not desire, including
line-based differencing and merging. For more about content
types, see <a class="xref" href="svn.advanced.props.file-portability.html#svn.advanced.props.special.mime-type" title="File Content Type">the section called “File Content Type”</a>.</p>
</td>
</tr>
</table>
</div>
<div class="warning" title="Warning" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Warning">
<tr>
<td rowspan="2" align="center" valign="top" width="25">
<img alt="[Warning]" src="images/warning.png" />
</td>
<th align="left">Warning</th>
</tr>
<tr>
<td align="left" valign="top">
<p>Be aware that because the width of a keyword field is
measured in bytes, the potential for corruption of
multibyte values exists. For example, a username that
contains some multibyte UTF-8 characters might suffer
truncation in the middle of the string of bytes that make
up one of those characters. The result will be a mere
truncation when viewed at the byte level, but will likely
appear as a string with an incorrect or garbled final
character when viewed as UTF-8 text. It is conceivable
that certain applications, when asked to load the file,
would notice the broken UTF-8 text and deem the entire
file corrupt, refusing to operate on the file
altogether. So, when limiting keywords to a fixed size,
choose a size that allows for this type of byte-wise
expansion.</p>
</td>
</tr>
</table>
</div>
<div class="footnotes">
<br />
<hr width="100" align="left" />
<div class="footnote">
<p><sup>[<a id="ftn.idp34391824" href="#idp34391824" class="para">17</a>] </sup>… or maybe even a section of a
book …</p>
</div>
</div>
</div>
<div class="navfooter">
<hr />
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left"><a accesskey="p" href="svn.advanced.props.special.ignore.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="svn.advanced.html">Up</a>
</td>
<td width="40%" align="right"> <a accesskey="n" href="svn.advanced.sparsedirs.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">Ignoring Unversioned Items </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
<td width="40%" align="right" valign="top"> Sparse Directories</td>
</tr>
</table>
</div>
<div xmlns="" id="svn-footer">
<hr />
<p>You are reading <em>Version Control with Subversion</em> (for Subversion 1.7), by Ben Collins-Sussman, Brian W. Fitzpatrick, and C. Michael Pilato.<br />
This work is licensed under the <a href="http://creativecommons.org/licenses/by/2.0/">Creative Commons Attribution License v2.0</a>.<br />
To submit comments, corrections, or other contributions to the text, please visit <a href="http://www.svnbook.com/">http://www.svnbook.com/</a>.</p>
</div>
</body>
</html>

View file

@ -0,0 +1,220 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Server Optimization</title>
<link rel="stylesheet" href="styles.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2" />
<style type="text/css">
body { background-image: url('images/draft.png');
background-repeat: no-repeat;
background-position: top left;
/* The following properties make the watermark "fixed" on the page. */
/* I think that's just a bit too distracting for the reader... */
/* background-attachment: fixed; */
/* background-position: center center; */
}</style>
<link rel="home" href="index.html" title="Version Control with Subversion [DRAFT]" />
<link rel="up" href="svn.serverconfig.html" title="Chapter 6. Server Configuration" />
<link rel="prev" href="svn.serverconfig.operational-logging.html" title="High-level Logging" />
<link rel="next" href="svn.serverconfig.multimethod.html" title="Supporting Multiple Repository Access Methods" />
</head>
<body>
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
<th colspan="3" align="center">Server Optimization</th>
</tr>
<tr>
<td width="20%" align="left"><a accesskey="p" href="svn.serverconfig.operational-logging.html">Prev</a> </td>
<th width="60%" align="center">Chapter 6. Server Configuration</th>
<td width="20%" align="right"> <a accesskey="n" href="svn.serverconfig.multimethod.html">Next</a></td>
</tr>
</table>
<hr />
</div>
<div class="sect1" title="Server Optimization">
<div class="titlepage">
<div>
<div>
<h2 class="title" style="clear: both"><a id="svn.serverconfig.optimization"></a>Server Optimization</h2>
</div>
</div>
</div>
<p>Part of the due diligence when offering a service such as a
Subversion server involves capacity planning and performance
tuning. Subversion doesn't tend to be particularly greedy in
terms of server resources such as CPU cycles and memory, but any
service can benefit from optimizations, especially when usage of
the service skyrockets<sup>[<a id="idp39918848" href="#ftn.idp39918848" class="footnote">51</a>]</sup>. In this section, we'll discuss
some ways you can tweak your Subversion server configuration
to offer even better performance and scalability.</p>
<div class="sect2" title="Data Caching">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="svn.serverconfig.optimization.caching"></a>Data Caching</h3>
</div>
</div>
</div>
<p>Generally speaking, the most expensive part of a
Subversion server's job is fetching data from the repository.
Subversion 1.6 attempted to offset this cost by introducing
some in-memory caching of certain classes of data read from
the repository. But Subversion 1.7 takes this a step further,
not only caching the results of some of the more costly
operations, but also by providing in each of the available
servers the means by which fine-tune the size and some
behaviors of the cache.</p>
<p>For <span class="command"><strong>svnserve</strong></span>, you can specify the size
of the cache using the <code class="option">--memory-cache-size</code>
(<code class="option">-M</code>) command-line option. You can also
dictate whether <span class="command"><strong>svnserve</strong></span> should attempt to
cache content fulltexts and deltas via the
boolean <code class="option">--cache-fulltexts</code>
and <code class="option">--cache-txdeltas</code> options,
respectively.</p>
<div class="informalexample">
<pre class="screen">
$ svnserve -d -r /path/to/repositories \
--memory-cache-size 1024 \
--cache-txdeltas yes \
--cache-fulltexts yes
$
</pre>
</div>
<p><span class="command"><strong>mod_dav_svn</strong></span> provides the same degree of
cache configurability via <code class="filename">httpd.conf</code>
directives.
The <code class="literal">SVNInMemoryCacheSize</code>,
<code class="literal">SVNCacheFullTexts</code>,
and <code class="literal">SVNCacheTextDeltas</code> directives may be
used at the server configuration level to control Subversion's
data cache characteristics:</p>
<div class="informalexample">
<pre class="programlisting">
&lt;IfModule dav_svn_module&gt;
# Enable a 1 Gb Subversion data cache for both fulltext and deltas.
SVNInMemoryCacheSize 1048576
SVNCacheTextDeltas On
SVNCacheFullTexts On
&lt;/IfModule&gt;
</pre>
</div>
<p>So what settings should you use? Certainly you need to
consider what resources are available on your server. To get
any benefit out of the cache at all, you'll probably want to
let the cache be at least large enough to hold all the files
which are most commonly accessed in your repository (for
example, your project's <code class="filename">trunk</code> directory
tree).</p>
<div class="tip" title="Tip" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Tip">
<tr>
<td rowspan="2" align="center" valign="top" width="25">
<img alt="[Tip]" src="images/tip.png" />
</td>
<th align="left">Tip</th>
</tr>
<tr>
<td align="left" valign="top">
<p>Setting the memory cache size to <code class="literal">0</code>
will disable this enhanced caching mechanism and cause
Subversion to fall back to using the older cache mechanisms
introduced in Subversion 1.6.</p>
</td>
</tr>
</table>
</div>
<div class="note" title="Note" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Note">
<tr>
<td rowspan="2" align="center" valign="top" width="25">
<img alt="[Note]" src="images/note.png" />
</td>
<th align="left">Note</th>
</tr>
<tr>
<td align="left" valign="top">
<p>Currently, only repositories which make use of the FSFS
backend data store make use of this data caching
functionality.</p>
</td>
</tr>
</table>
</div>
</div>
<div class="sect2" title="Network Compression of Data">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="svn.serverconfig.optimization.compression"></a>Network Compression of Data</h3>
</div>
</div>
</div>
<p>Compressing the data transmitted across the wire can
greatly reduce the size of those network transmissions, but
comes at the cost of server (and client) CPU cycles.
Depending on your server's CPU capacity, the typical access
patterns of the clients who use your servers, and the
bandwidth of the networks between them, you might wish to fine
tune just how hard your server will work to compress the data
it sends across the wire. To assist with this fine tuning
process, Subversion 1.7 offers
the <code class="option">--compression</code> (<code class="option">-c</code>)
option to <span class="command"><strong>svnserve</strong></span> and
the <code class="literal">SVNCompressionLevel</code> directive
for <span class="command"><strong>mod_dav_svn</strong></span>. Both accept a value which
is an integer between 0 and 9 (inclusive), where 9 offers the
best compression of wire data, and 0 disables compression
altogether.</p>
<p>For example, on a local area network (LAN) with 1-Gigabit
connections, it might not make sense to have the server
compress its network transmissions (which also forces the
clients to decompress them), as the network itself is so fast
that users won't really benefit from the smaller overall
network payload. On the other hand, servers which are
accessed primarily by clients with low-bandwidth connections
would be doing those clients a favor by minimizing the overall
size of its network communications.</p>
</div>
<div class="footnotes">
<br />
<hr width="100" align="left" />
<div class="footnote">
<p><sup>[<a id="ftn.idp39918848" href="#idp39918848" class="para">51</a>] </sup>In Subversion's case, the
skyrocketing affect is, of course, due to its cool name. Well,
that and its popularity, reliability, ease of
use….</p>
</div>
</div>
</div>
<div class="navfooter">
<hr />
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left"><a accesskey="p" href="svn.serverconfig.operational-logging.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="svn.serverconfig.html">Up</a>
</td>
<td width="40%" align="right"> <a accesskey="n" href="svn.serverconfig.multimethod.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">High-level Logging </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
<td width="40%" align="right" valign="top"> Supporting Multiple Repository Access Methods</td>
</tr>
</table>
</div>
<div xmlns="" id="svn-footer">
<hr />
<p>You are reading <em>Version Control with Subversion</em> (for Subversion 1.7), by Ben Collins-Sussman, Brian W. Fitzpatrick, and C. Michael Pilato.<br />
This work is licensed under the <a href="http://creativecommons.org/licenses/by/2.0/">Creative Commons Attribution License v2.0</a>.<br />
To submit comments, corrections, or other contributions to the text, please visit <a href="http://www.svnbook.com/">http://www.svnbook.com/</a>.</p>
</div>
</body>
</html>

View file

@ -0,0 +1,219 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Organization of This Book</title>
<link rel="stylesheet" href="styles.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2" />
<style type="text/css">
body { background-image: url('images/draft.png');
background-repeat: no-repeat;
background-position: top left;
/* The following properties make the watermark "fixed" on the page. */
/* I think that's just a bit too distracting for the reader... */
/* background-attachment: fixed; */
/* background-position: center center; */
}</style>
<link rel="home" href="index.html" title="Version Control with Subversion [DRAFT]" />
<link rel="up" href="svn.preface.html" title="Preface" />
<link rel="prev" href="svn.preface.howread.html" title="How to Read This Book" />
<link rel="next" href="svn.preface.free.html" title="This Book Is Free" />
</head>
<body>
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
<th colspan="3" align="center">Organization of This Book</th>
</tr>
<tr>
<td width="20%" align="left"><a accesskey="p" href="svn.preface.howread.html">Prev</a> </td>
<th width="60%" align="center">Preface</th>
<td width="20%" align="right"> <a accesskey="n" href="svn.preface.free.html">Next</a></td>
</tr>
</table>
<hr />
</div>
<div class="sect1" title="Organization of This Book">
<div class="titlepage">
<div>
<div>
<h2 class="title" style="clear: both"><a id="svn.preface.organization"></a>Organization of This Book</h2>
</div>
</div>
</div>
<p>The chapters that follow and their contents are listed
here:</p>
<div class="variablelist">
<dl>
<dt>
<span class="term">
<a class="xref" href="svn.basic.html" title="Chapter 1. Fundamental Concepts">Chapter 1, <i>Fundamental Concepts</i></a>
</span>
</dt>
<dd>
<p>Explains the basics of version control and different
versioning models, along with Subversion's repository,
working copies, and revisions.</p>
</dd>
<dt>
<span class="term">
<a class="xref" href="svn.tour.html" title="Chapter 2. Basic Usage">Chapter 2, <i>Basic Usage</i></a>
</span>
</dt>
<dd>
<p>Walks you through a day in the life of a Subversion
user. It demonstrates how to use a Subversion client to
obtain, modify, and commit data.</p>
</dd>
<dt>
<span class="term">
<a class="xref" href="svn.advanced.html" title="Chapter 3. Advanced Topics">Chapter 3, <i>Advanced Topics</i></a>
</span>
</dt>
<dd>
<p>Covers more complex features that regular users will
eventually come into contact with, such as versioned
metadata, file locking, and peg revisions.</p>
</dd>
<dt>
<span class="term">
<a class="xref" href="svn.branchmerge.html" title="Chapter 4. Branching and Merging">Chapter 4, <i>Branching and Merging</i></a>
</span>
</dt>
<dd>
<p>Discusses branches, merges, and tagging, including
best practices for branching and merging, common
use cases, how to undo changes, and how to easily swing
from one branch to the next.</p>
</dd>
<dt>
<span class="term">
<a class="xref" href="svn.reposadmin.html" title="Chapter 5. Repository Administration">Chapter 5, <i>Repository Administration</i></a>
</span>
</dt>
<dd>
<p>Describes the basics of the Subversion repository,
how to create, configure, and maintain a repository, and
the tools you can use to do all of this.</p>
</dd>
<dt>
<span class="term">
<a class="xref" href="svn.serverconfig.html" title="Chapter 6. Server Configuration">Chapter 6, <i>Server Configuration</i></a>
</span>
</dt>
<dd>
<p>Explains how to configure your Subversion server and
offers different ways to access your repository:
<code class="literal">HTTP</code>, the <code class="literal">svn</code>
protocol, and local disk access. It also covers the details
of authentication, authorization and anonymous
access.</p>
</dd>
<dt>
<span class="term">
<a class="xref" href="svn.customization.html" title="Chapter 7. Customizing Your Subversion Experience">Chapter 7, <i>Customizing Your Subversion Experience</i></a>
</span>
</dt>
<dd>
<p>Explores the Subversion client configuration files,
the handling of internationalized text, and how to make
external tools cooperate with Subversion.</p>
</dd>
<dt>
<span class="term">
<a class="xref" href="svn.developer.html" title="Chapter 8. Embedding Subversion">Chapter 8, <i>Embedding Subversion</i></a>
</span>
</dt>
<dd>
<p>Describes the internals of Subversion, the
Subversion filesystem, and the working copy
administrative areas from a programmer's point of view.
It also demonstrates how to use the public APIs to write a
program that uses Subversion.</p>
</dd>
<dt>
<span class="term">
<a class="xref" href="svn.ref.html" title="Chapter 9. Subversion Complete Reference">Chapter 9, <i>Subversion Complete Reference</i></a>
</span>
</dt>
<dd>
<p>Explains in great detail every subcommand of
<span class="command"><strong>svn</strong></span>, <span class="command"><strong>svnadmin</strong></span>, and
<span class="command"><strong>svnlook</strong></span> with plenty of examples for
the whole family!</p>
</dd>
<dt>
<span class="term">
<a class="xref" href="svn.intro.html" title="Appendix A. Subversion Quick-Start Guide">Appendix A, <i>Subversion Quick-Start Guide</i></a>
</span>
</dt>
<dd>
<p>For the impatient, a whirlwind explanation of how to
install Subversion and start using it immediately. You
have been warned.</p>
</dd>
<dt>
<span class="term">
<a class="xref" href="svn.forcvs.html" title="Appendix B. Subversion for CVS Users">Appendix B, <i>Subversion for CVS Users</i></a>
</span>
</dt>
<dd>
<p>Covers the similarities and differences between
Subversion and CVS, with numerous suggestions on how to
break all the bad habits you picked up from years of
using CVS. Included are descriptions of Subversion
revision numbers, versioned directories, offline
operations, <span class="command"><strong>update</strong></span>
versus <span class="command"><strong>status</strong></span>, branches, tags, metadata,
conflict resolution, and authentication.</p>
</dd>
<dt>
<span class="term">
<a class="xref" href="svn.webdav.html" title="Appendix C. WebDAV and Autoversioning">Appendix C, <i>WebDAV and Autoversioning</i></a>
</span>
</dt>
<dd>
<p>Describes the details of WebDAV and DeltaV and how
you can configure your Subversion repository to be
mounted read/write as a DAV share.</p>
</dd>
<dt>
<span class="term">
<a class="xref" href="svn.copyright.html" title="Appendix D. Copyright">Appendix D, <i>Copyright</i></a>
</span>
</dt>
<dd>
<p>A copy of the Creative Commons Attribution License,
under which this book is licensed.</p>
</dd>
</dl>
</div>
</div>
<div class="navfooter">
<hr />
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left"><a accesskey="p" href="svn.preface.howread.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="svn.preface.html">Up</a>
</td>
<td width="40%" align="right"> <a accesskey="n" href="svn.preface.free.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">How to Read This Book </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
<td width="40%" align="right" valign="top"> This Book Is Free</td>
</tr>
</table>
</div>
<div xmlns="" id="svn-footer">
<hr />
<p>You are reading <em>Version Control with Subversion</em> (for Subversion 1.7), by Ben Collins-Sussman, Brian W. Fitzpatrick, and C. Michael Pilato.<br />
This work is licensed under the <a href="http://creativecommons.org/licenses/by/2.0/">Creative Commons Attribution License v2.0</a>.<br />
To submit comments, corrections, or other contributions to the text, please visit <a href="http://www.svnbook.com/">http://www.svnbook.com/</a>.</p>
</div>
</body>
</html>

View file

@ -0,0 +1,92 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>svnadmin list-dblogs</title>
<link rel="stylesheet" href="styles.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2" />
<style type="text/css">
body { background-image: url('images/draft.png');
background-repeat: no-repeat;
background-position: top left;
/* The following properties make the watermark "fixed" on the page. */
/* I think that's just a bit too distracting for the reader... */
/* background-attachment: fixed; */
/* background-position: center center; */
}</style>
<link rel="home" href="index.html" title="Version Control with Subversion [DRAFT]" />
<link rel="up" href="svn.ref.svnadmin.html#svn.ref.svnadmin.c" title="svnadmin Subcommands" />
<link rel="prev" href="svn.ref.svnadmin.c.hotcopy.html" title="svnadmin hotcopy" />
<link rel="next" href="svn.ref.svnadmin.c.list-unused-dblogs.html" title="svnadmin list-unused-dblogs" />
</head>
<body>
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
<th colspan="3" align="center">svnadmin list-dblogs</th>
</tr>
<tr>
<td width="20%" align="left"><a accesskey="p" href="svn.ref.svnadmin.c.hotcopy.html">Prev</a> </td>
<th width="60%" align="center">svnadmin Subcommands</th>
<td width="20%" align="right"> <a accesskey="n" href="svn.ref.svnadmin.c.list-unused-dblogs.html">Next</a></td>
</tr>
</table>
<hr />
</div>
<div class="refentry" title="svnadmin list-dblogs">
<a id="svn.ref.svnadmin.c.list-dblogs"></a>
<div class="titlepage"></div>
<a id="idp43717792" class="indexterm"></a>
<div class="refnamediv">
<h2>Name</h2>
<p>svnadmin list-dblogs — Ask Berkeley DB which logfiles exist for a
given Subversion repository (applies only to repositories
using the <code class="literal">bdb</code> backend).</p>
</div>
<div class="refsect1" title="Synopsis">
<a id="idp43721712"></a>
<h2>Synopsis</h2>
<p>
<code class="literal">svnadmin list-dblogs REPOS_PATH</code>
</p>
</div>
<div class="refsect1" title="Description">
<a id="idp43723296"></a>
<h2>Description</h2>
<p>Berkeley DB creates logs of all changes to the
repository, which allow it to recover in the face of
catastrophe. Unless you enable
<code class="literal">DB_LOG_AUTOREMOVE</code>, the logfiles
accumulate, although most are no longer used and can be
deleted to reclaim disk space. See <a class="xref" href="svn.reposadmin.maint.html#svn.reposadmin.maint.diskspace" title="Managing Disk Space">the section called “Managing Disk Space”</a> for more
information.</p>
</div>
</div>
<div class="navfooter">
<hr />
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left"><a accesskey="p" href="svn.ref.svnadmin.c.hotcopy.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="svn.ref.svnadmin.html#svn.ref.svnadmin.c">Up</a>
</td>
<td width="40%" align="right"> <a accesskey="n" href="svn.ref.svnadmin.c.list-unused-dblogs.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">svnadmin hotcopy </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
<td width="40%" align="right" valign="top"> svnadmin list-unused-dblogs</td>
</tr>
</table>
</div>
<div xmlns="" id="svn-footer">
<hr />
<p>You are reading <em>Version Control with Subversion</em> (for Subversion 1.7), by Ben Collins-Sussman, Brian W. Fitzpatrick, and C. Michael Pilato.<br />
This work is licensed under the <a href="http://creativecommons.org/licenses/by/2.0/">Creative Commons Attribution License v2.0</a>.<br />
To submit comments, corrections, or other contributions to the text, please visit <a href="http://www.svnbook.com/">http://www.svnbook.com/</a>.</p>
</div>
</body>
</html>

View file

@ -0,0 +1,121 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>pre-unlock</title>
<link rel="stylesheet" href="styles.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2" />
<style type="text/css">
body { background-image: url('images/draft.png');
background-repeat: no-repeat;
background-position: top left;
/* The following properties make the watermark "fixed" on the page. */
/* I think that's just a bit too distracting for the reader... */
/* background-attachment: fixed; */
/* background-position: center center; */
}</style>
<link rel="home" href="index.html" title="Version Control with Subversion [DRAFT]" />
<link rel="up" href="svn.ref.reposhooks.html" title="Repository Hooks" />
<link rel="prev" href="svn.ref.reposhooks.post-lock.html" title="post-lock" />
<link rel="next" href="svn.ref.reposhooks.post-unlock.html" title="post-unlock" />
</head>
<body>
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
<th colspan="3" align="center">pre-unlock</th>
</tr>
<tr>
<td width="20%" align="left"><a accesskey="p" href="svn.ref.reposhooks.post-lock.html">Prev</a> </td>
<th width="60%" align="center">Repository Hooks</th>
<td width="20%" align="right"> <a accesskey="n" href="svn.ref.reposhooks.post-unlock.html">Next</a></td>
</tr>
</table>
<hr />
</div>
<div class="refentry" title="pre-unlock">
<a id="svn.ref.reposhooks.pre-unlock"></a>
<div class="titlepage"></div>
<a id="idp44942416" class="indexterm"></a>
<div class="refnamediv">
<h2>Name</h2>
<p>pre-unlock — Notification of a path unlock attempt.</p>
</div>
<div class="refsect1" title="Description">
<a id="idp44945504"></a>
<h2>Description</h2>
<p>The <code class="literal">pre-unlock</code> hook runs whenever
someone attempts to remove a lock on a file. It can be used
to create policies that specify which users are allowed to
unlock particular paths. It's particularly important for
determining policies about lock breakage. If user A locks a
file, is user B allowed to break the lock? What if the lock
is more than a week old? These sorts of things can be
decided and enforced by the hook.</p>
<p>If the <code class="literal">pre-unlock</code> hook program
returns a nonzero exit value, the unlock action is aborted
and anything printed to <code class="filename">stderr</code> is marshalled back to the
client.</p>
</div>
<div class="refsect1" title="Input parameter(s)">
<a id="idp44949824"></a>
<h2>Input parameter(s)</h2>
<p>The command-line arguments passed to the hook program,
in order, are:</p>
<div class="orderedlist">
<ol class="orderedlist" type="1">
<li class="listitem">
<p>Repository path</p>
</li>
<li class="listitem">
<p>Versioned path which is to be unlocked</p>
</li>
<li class="listitem">
<p>Authenticated username of the person attempting the
unlock</p>
</li>
<li class="listitem">
<p>Lock token associated with the lock which is to be
removed</p>
</li>
<li class="listitem">
<p><code class="literal">1</code> if the user is attempting to
break the lock; <code class="literal">0</code> otherwise</p>
</li>
</ol>
</div>
</div>
<div class="refsect1" title="Common uses">
<a id="idp44957440"></a>
<h2>Common uses</h2>
<p>Access control</p>
</div>
</div>
<div class="navfooter">
<hr />
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left"><a accesskey="p" href="svn.ref.reposhooks.post-lock.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="svn.ref.reposhooks.html">Up</a>
</td>
<td width="40%" align="right"> <a accesskey="n" href="svn.ref.reposhooks.post-unlock.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">post-lock </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
<td width="40%" align="right" valign="top"> post-unlock</td>
</tr>
</table>
</div>
<div xmlns="" id="svn-footer">
<hr />
<p>You are reading <em>Version Control with Subversion</em> (for Subversion 1.7), by Ben Collins-Sussman, Brian W. Fitzpatrick, and C. Michael Pilato.<br />
This work is licensed under the <a href="http://creativecommons.org/licenses/by/2.0/">Creative Commons Attribution License v2.0</a>.<br />
To submit comments, corrections, or other contributions to the text, please visit <a href="http://www.svnbook.com/">http://www.svnbook.com/</a>.</p>
</div>
</body>
</html>

View file

@ -0,0 +1,146 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>pre-lock</title>
<link rel="stylesheet" href="styles.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2" />
<style type="text/css">
body { background-image: url('images/draft.png');
background-repeat: no-repeat;
background-position: top left;
/* The following properties make the watermark "fixed" on the page. */
/* I think that's just a bit too distracting for the reader... */
/* background-attachment: fixed; */
/* background-position: center center; */
}</style>
<link rel="home" href="index.html" title="Version Control with Subversion [DRAFT]" />
<link rel="up" href="svn.ref.reposhooks.html" title="Repository Hooks" />
<link rel="prev" href="svn.ref.reposhooks.post-revprop-change.html" title="post-revprop-change" />
<link rel="next" href="svn.ref.reposhooks.post-lock.html" title="post-lock" />
</head>
<body>
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
<th colspan="3" align="center">pre-lock</th>
</tr>
<tr>
<td width="20%" align="left"><a accesskey="p" href="svn.ref.reposhooks.post-revprop-change.html">Prev</a> </td>
<th width="60%" align="center">Repository Hooks</th>
<td width="20%" align="right"> <a accesskey="n" href="svn.ref.reposhooks.post-lock.html">Next</a></td>
</tr>
</table>
<hr />
</div>
<div class="refentry" title="pre-lock">
<a id="svn.ref.reposhooks.pre-lock"></a>
<div class="titlepage"></div>
<a id="idp44906976" class="indexterm"></a>
<div class="refnamediv">
<h2>Name</h2>
<p>pre-lock — Notification of a path lock attempt.</p>
</div>
<div class="refsect1" title="Description">
<a id="idp44910064"></a>
<h2>Description</h2>
<p>The <code class="literal">pre-lock</code> hook runs whenever
someone attempts to lock a path. It can be used to prevent
locks altogether or to create a more complex policy
specifying exactly which users are allowed to lock
particular paths. If the hook notices a preexisting lock,
it can also decide whether a user is allowed
to <span class="quote"><span class="quote">steal</span></span> the existing lock.</p>
<p>If the <code class="literal">pre-lock</code> hook program returns
a nonzero exit value, the lock action is aborted and
anything printed to <code class="filename">stderr</code> is
marshalled back to the client.</p>
<p>The hook program may optionally dictate the lock token
which will be assigned to the lock by printing the desired
lock token to standard output. Because of this,
implementations of this hook should carefully avoid
unexpected output sent to standard output.</p>
<div class="warning" title="Warning" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Warning">
<tr>
<td rowspan="2" align="center" valign="top" width="25">
<img alt="[Warning]" src="images/warning.png" />
</td>
<th align="left">Warning</th>
</tr>
<tr>
<td align="left" valign="top">
<p>If the <code class="literal">pre-lock</code> script takes
advantage of lock token dictation feature, the
responsibility of generating a <span class="emphasis"><em>unique</em></span>
lock token falls to the script itself. Failure to
generate unique lock tokens may result in
undefined—and very likely,
undesired—behavior.</p>
</td>
</tr>
</table>
</div>
</div>
<div class="refsect1" title="Input parameter(s)">
<a id="idp44917776"></a>
<h2>Input parameter(s)</h2>
<p>The command-line arguments passed to the hook program,
in order, are:</p>
<div class="orderedlist">
<ol class="orderedlist" type="1">
<li class="listitem">
<p>Repository path</p>
</li>
<li class="listitem">
<p>Versioned path that is to be locked</p>
</li>
<li class="listitem">
<p>Authenticated username of the person attempting the
lock</p>
</li>
<li class="listitem">
<p>Comment provided when the lock was created</p>
</li>
<li class="listitem">
<p><code class="literal">1</code> if the user is attempting to
steal an existing lock; <code class="literal">0</code>
otherwise</p>
</li>
</ol>
</div>
</div>
<div class="refsect1" title="Common uses">
<a id="idp44925216"></a>
<h2>Common uses</h2>
<p>Access control</p>
</div>
</div>
<div class="navfooter">
<hr />
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left"><a accesskey="p" href="svn.ref.reposhooks.post-revprop-change.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="svn.ref.reposhooks.html">Up</a>
</td>
<td width="40%" align="right"> <a accesskey="n" href="svn.ref.reposhooks.post-lock.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">post-revprop-change </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
<td width="40%" align="right" valign="top"> post-lock</td>
</tr>
</table>
</div>
<div xmlns="" id="svn-footer">
<hr />
<p>You are reading <em>Version Control with Subversion</em> (for Subversion 1.7), by Ben Collins-Sussman, Brian W. Fitzpatrick, and C. Michael Pilato.<br />
This work is licensed under the <a href="http://creativecommons.org/licenses/by/2.0/">Creative Commons Attribution License v2.0</a>.<br />
To submit comments, corrections, or other contributions to the text, please visit <a href="http://www.svnbook.com/">http://www.svnbook.com/</a>.</p>
</div>
</body>
</html>

View file

@ -0,0 +1,118 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>pre-commit</title>
<link rel="stylesheet" href="styles.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2" />
<style type="text/css">
body { background-image: url('images/draft.png');
background-repeat: no-repeat;
background-position: top left;
/* The following properties make the watermark "fixed" on the page. */
/* I think that's just a bit too distracting for the reader... */
/* background-attachment: fixed; */
/* background-position: center center; */
}</style>
<link rel="home" href="index.html" title="Version Control with Subversion [DRAFT]" />
<link rel="up" href="svn.ref.reposhooks.html" title="Repository Hooks" />
<link rel="prev" href="svn.ref.reposhooks.start-commit.html" title="start-commit" />
<link rel="next" href="svn.ref.reposhooks.post-commit.html" title="post-commit" />
</head>
<body>
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
<th colspan="3" align="center">pre-commit</th>
</tr>
<tr>
<td width="20%" align="left"><a accesskey="p" href="svn.ref.reposhooks.start-commit.html">Prev</a> </td>
<th width="60%" align="center">Repository Hooks</th>
<td width="20%" align="right"> <a accesskey="n" href="svn.ref.reposhooks.post-commit.html">Next</a></td>
</tr>
</table>
<hr />
</div>
<div class="refentry" title="pre-commit">
<a id="svn.ref.reposhooks.pre-commit"></a>
<div class="titlepage"></div>
<a id="idp44837008" class="indexterm"></a>
<div class="refnamediv">
<h2>Name</h2>
<p>pre-commit — Notification just prior to commit completion.</p>
</div>
<div class="refsect1" title="Description">
<a id="idp44840160"></a>
<h2>Description</h2>
<p>The <code class="literal">pre-commit</code> hook is run just
before a commit transaction is promoted to a new revision.
Typically, this hook is used to protect against commits that
are disallowed due to content or location (e.g., your
site might require that all commits to a certain branch
include a ticket number from the bug tracker, or that the
incoming log message is nonempty).</p>
<p>If the <code class="literal">pre-commit</code> hook program
returns a nonzero exit value, the commit is aborted, the
commit transaction is removed, and anything printed to
<code class="filename">stderr</code> is marshalled back to the client.</p>
</div>
<div class="refsect1" title="Input parameter(s)">
<a id="idp44844448"></a>
<h2>Input parameter(s)</h2>
<p>The command-line arguments passed to the hook program,
in order, are:</p>
<div class="orderedlist">
<ol class="orderedlist" type="1">
<li class="listitem">
<p>Repository path</p>
</li>
<li class="listitem">
<p>Commit transaction name</p>
</li>
</ol>
</div>
<p>Additionally, Subversion passes any lock tokens provided
by the committing client to the hook script via standard
input. When present, these are formatted as a single line
containing the string <code class="literal">LOCK-TOKENS:</code>,
followed by additional lines—one per lock
token—which contain the lock token information. Each
lock token information line consists of the URI-escaped
repository filesystem path associated with the lock,
followed by the pipe (<code class="literal">|</code>) separator
character, and finally the lock token string.</p>
</div>
<div class="refsect1" title="Common uses">
<a id="idp44850592"></a>
<h2>Common uses</h2>
<p>Change validation and control</p>
</div>
</div>
<div class="navfooter">
<hr />
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left"><a accesskey="p" href="svn.ref.reposhooks.start-commit.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="svn.ref.reposhooks.html">Up</a>
</td>
<td width="40%" align="right"> <a accesskey="n" href="svn.ref.reposhooks.post-commit.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">start-commit </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
<td width="40%" align="right" valign="top"> post-commit</td>
</tr>
</table>
</div>
<div xmlns="" id="svn-footer">
<hr />
<p>You are reading <em>Version Control with Subversion</em> (for Subversion 1.7), by Ben Collins-Sussman, Brian W. Fitzpatrick, and C. Michael Pilato.<br />
This work is licensed under the <a href="http://creativecommons.org/licenses/by/2.0/">Creative Commons Attribution License v2.0</a>.<br />
To submit comments, corrections, or other contributions to the text, please visit <a href="http://www.svnbook.com/">http://www.svnbook.com/</a>.</p>
</div>
</body>
</html>

View file

@ -0,0 +1,110 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>svnadmin setuuid</title>
<link rel="stylesheet" href="styles.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2" />
<style type="text/css">
body { background-image: url('images/draft.png');
background-repeat: no-repeat;
background-position: top left;
/* The following properties make the watermark "fixed" on the page. */
/* I think that's just a bit too distracting for the reader... */
/* background-attachment: fixed; */
/* background-position: center center; */
}</style>
<link rel="home" href="index.html" title="Version Control with Subversion [DRAFT]" />
<link rel="up" href="svn.ref.svnadmin.html#svn.ref.svnadmin.c" title="svnadmin Subcommands" />
<link rel="prev" href="svn.ref.svnadmin.c.setrevprop.html" title="svnadmin setrevprop" />
<link rel="next" href="svn.ref.svnadmin.c.upgrade.html" title="svnadmin upgrade" />
</head>
<body>
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
<th colspan="3" align="center">svnadmin setuuid</th>
</tr>
<tr>
<td width="20%" align="left"><a accesskey="p" href="svn.ref.svnadmin.c.setrevprop.html">Prev</a> </td>
<th width="60%" align="center">svnadmin Subcommands</th>
<td width="20%" align="right"> <a accesskey="n" href="svn.ref.svnadmin.c.upgrade.html">Next</a></td>
</tr>
</table>
<hr />
</div>
<div class="refentry" title="svnadmin setuuid">
<a id="svn.ref.svnadmin.c.setuuid"></a>
<div class="titlepage"></div>
<a id="idp43875712" class="indexterm"></a>
<div class="refnamediv">
<h2>Name</h2>
<p>svnadmin setuuid — Reset the repository UUID.</p>
</div>
<div class="refsect1" title="Synopsis">
<a id="idp43878800"></a>
<h2>Synopsis</h2>
<p>
<code class="literal">svnadmin setuuid REPOS_PATH [NEW_UUID]</code>
</p>
</div>
<div class="refsect1" title="Description">
<a id="idp43880432"></a>
<h2>Description</h2>
<p>Reset the repository UUID for the repository located
at <em class="replaceable"><code>REPOS_PATH</code></em>.
If <em class="replaceable"><code>NEW_UUID</code></em> is provided, use
that as the new repository UUID; otherwise, generate a
brand-new UUID for the repository.</p>
</div>
<div class="refsect1" title="Options">
<a id="idp43882704"></a>
<h2>Options</h2>
<p>None</p>
</div>
<div class="refsect1" title="Examples">
<a id="idp43883920"></a>
<h2>Examples</h2>
<p>If you've <span class="command"><strong>svnsync</strong></span>ed <code class="filename">/var/svn/repos</code>
to <code class="filename">/var/svn/repos-new</code> and intend to use <code class="filename">repos-new</code> as your
canonical repository, you may want to change the UUID for
<code class="filename">repos-new</code> to the UUID of <code class="filename">repos</code> so that your users don't
have to check out a new working copy to accommodate the
change:</p>
<div class="informalexample">
<pre class="screen">
$ svnadmin setuuid /var/svn/repos-new 2109a8dd-854f-0410-ad31-d604008985ab
</pre>
</div>
<p>As you can see, <span class="command"><strong>svnadmin setuuid</strong></span>
has no output upon success.</p>
</div>
</div>
<div class="navfooter">
<hr />
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left"><a accesskey="p" href="svn.ref.svnadmin.c.setrevprop.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="svn.ref.svnadmin.html#svn.ref.svnadmin.c">Up</a>
</td>
<td width="40%" align="right"> <a accesskey="n" href="svn.ref.svnadmin.c.upgrade.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">svnadmin setrevprop </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
<td width="40%" align="right" valign="top"> svnadmin upgrade</td>
</tr>
</table>
</div>
<div xmlns="" id="svn-footer">
<hr />
<p>You are reading <em>Version Control with Subversion</em> (for Subversion 1.7), by Ben Collins-Sussman, Brian W. Fitzpatrick, and C. Michael Pilato.<br />
This work is licensed under the <a href="http://creativecommons.org/licenses/by/2.0/">Creative Commons Attribution License v2.0</a>.<br />
To submit comments, corrections, or other contributions to the text, please visit <a href="http://www.svnbook.com/">http://www.svnbook.com/</a>.</p>
</div>
</body>
</html>

View file

@ -0,0 +1,114 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>start-commit</title>
<link rel="stylesheet" href="styles.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2" />
<style type="text/css">
body { background-image: url('images/draft.png');
background-repeat: no-repeat;
background-position: top left;
/* The following properties make the watermark "fixed" on the page. */
/* I think that's just a bit too distracting for the reader... */
/* background-attachment: fixed; */
/* background-position: center center; */
}</style>
<link rel="home" href="index.html" title="Version Control with Subversion [DRAFT]" />
<link rel="up" href="svn.ref.reposhooks.html" title="Repository Hooks" />
<link rel="prev" href="svn.ref.reposhooks.html" title="Repository Hooks" />
<link rel="next" href="svn.ref.reposhooks.pre-commit.html" title="pre-commit" />
</head>
<body>
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
<th colspan="3" align="center">start-commit</th>
</tr>
<tr>
<td width="20%" align="left"><a accesskey="p" href="svn.ref.reposhooks.html">Prev</a> </td>
<th width="60%" align="center">Repository Hooks</th>
<td width="20%" align="right"> <a accesskey="n" href="svn.ref.reposhooks.pre-commit.html">Next</a></td>
</tr>
</table>
<hr />
</div>
<div class="refentry" title="start-commit">
<a id="svn.ref.reposhooks.start-commit"></a>
<div class="titlepage"></div>
<a id="idp44821280" class="indexterm"></a>
<div class="refnamediv">
<h2>Name</h2>
<p>start-commit — Notification of the beginning of a commit.</p>
</div>
<div class="refsect1" title="Description">
<a id="idp44824432"></a>
<h2>Description</h2>
<p>The start-commit hook is run before the commit
transaction is even created. It is typically used to
decide whether the user has commit privileges at all.</p>
<p>If the start-commit hook program returns a nonzero exit
value, the commit is stopped before the commit transaction
is even created, and anything printed to <code class="filename">stderr</code> is
marshalled back to the client.</p>
</div>
<div class="refsect1" title="Input Parameter(s)">
<a id="idp44827136"></a>
<h2>Input Parameter(s)</h2>
<p>The command-line arguments passed to the hook program,
in order, are:</p>
<div class="orderedlist">
<ol class="orderedlist" type="1">
<li class="listitem">
<p>Repository path</p>
</li>
<li class="listitem">
<p>Authenticated username attempting the commit</p>
</li>
<li class="listitem">
<p>Colon-separated list of
capabilities that a client passes to the server,
including <code class="literal">depth</code>,
<code class="literal">mergeinfo</code>, and
<code class="literal">log-revprops</code> (new in Subversion 1.5).</p>
</li>
</ol>
</div>
</div>
<div class="refsect1" title="Common uses">
<a id="idp44834000"></a>
<h2>Common uses</h2>
<p>Access control (e.g., temporarily lock out commits for
some reason).</p>
<p>A means to allow access only from clients that have
certain capabilities.</p>
</div>
</div>
<div class="navfooter">
<hr />
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left"><a accesskey="p" href="svn.ref.reposhooks.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="svn.ref.reposhooks.html">Up</a>
</td>
<td width="40%" align="right"> <a accesskey="n" href="svn.ref.reposhooks.pre-commit.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">Repository Hooks </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
<td width="40%" align="right" valign="top"> pre-commit</td>
</tr>
</table>
</div>
<div xmlns="" id="svn-footer">
<hr />
<p>You are reading <em>Version Control with Subversion</em> (for Subversion 1.7), by Ben Collins-Sussman, Brian W. Fitzpatrick, and C. Michael Pilato.<br />
This work is licensed under the <a href="http://creativecommons.org/licenses/by/2.0/">Creative Commons Attribution License v2.0</a>.<br />
To submit comments, corrections, or other contributions to the text, please visit <a href="http://www.svnbook.com/">http://www.svnbook.com/</a>.</p>
</div>
</body>
</html>

View file

@ -0,0 +1,189 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Distinction Between Status and Update</title>
<link rel="stylesheet" href="styles.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2" />
<style type="text/css">
body { background-image: url('images/draft.png');
background-repeat: no-repeat;
background-position: top left;
/* The following properties make the watermark "fixed" on the page. */
/* I think that's just a bit too distracting for the reader... */
/* background-attachment: fixed; */
/* background-position: center center; */
}</style>
<link rel="home" href="index.html" title="Version Control with Subversion [DRAFT]" />
<link rel="up" href="svn.forcvs.html" title="Appendix B. Subversion for CVS Users" />
<link rel="prev" href="svn.forcvs.disconnected.html" title="More Disconnected Operations" />
<link rel="next" href="svn.forcvs.branches-and-tags.html" title="Branches and Tags" />
</head>
<body>
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
<th colspan="3" align="center">Distinction Between Status and Update</th>
</tr>
<tr>
<td width="20%" align="left"><a accesskey="p" href="svn.forcvs.disconnected.html">Prev</a> </td>
<th width="60%" align="center">Appendix B. Subversion for CVS Users</th>
<td width="20%" align="right"> <a accesskey="n" href="svn.forcvs.branches-and-tags.html">Next</a></td>
</tr>
</table>
<hr />
</div>
<div class="sect1" title="Distinction Between Status and Update">
<div class="titlepage">
<div>
<div>
<h2 class="title" style="clear: both"><a id="svn.forcvs.status-vs-update"></a>Distinction Between Status and Update</h2>
</div>
</div>
</div>
<p>Subversion attempts to erase a lot of the confusion
between the <span class="command"><strong>cvs status</strong></span> and
<span class="command"><strong>cvs update</strong></span> commands.</p>
<p>The <span class="command"><strong>cvs status</strong></span> command has two purposes:
first, to show the user any local modifications in the working
copy, and second, to show the user which files are out of date.
Unfortunately, because of CVS's hard-to-read status output, many
CVS users don't take advantage of this command at all. Instead,
they've developed a habit of running <strong class="userinput"><code>cvs
update</code></strong> or <strong class="userinput"><code>cvs -n update</code></strong> to quickly
see their changes. If users forget to use
the <code class="option">-n</code> option, this has the side effect of
merging repository changes they may not be ready to deal
with.</p>
<p>Subversion removes this muddle by making the output of
<span class="command"><strong>svn status</strong></span> easy to read for both humans and
parsers. Also, <span class="command"><strong>svn update</strong></span> prints only
information about files that are updated,
<span class="emphasis"><em>not</em></span> local modifications.</p>
<div class="sect2" title="Status">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="svn.forcvs.status-vs-update.status"></a>Status</h3>
</div>
</div>
</div>
<p><span class="command"><strong>svn status</strong></span> prints all files that have
local modifications. By default, the repository is not
contacted. While this subcommand accepts a fair number of
options, the following are the most commonly used ones:</p>
<div class="variablelist">
<dl>
<dt>
<span class="term">
<code class="option">-u</code>
</span>
</dt>
<dd>
<p>Contact the repository to determine, and then display,
out-of-dateness information.</p>
</dd>
<dt>
<span class="term">
<code class="option">-v</code>
</span>
</dt>
<dd>
<p>Show <span class="emphasis"><em>all</em></span> entries under
version control.</p>
</dd>
<dt>
<span class="term">
<code class="option">-N</code>
</span>
</dt>
<dd>
<p>Run nonrecursively (do not descend into
subdirectories).</p>
</dd>
</dl>
</div>
<p>The <span class="command"><strong>svn status</strong></span> command has two output
formats. In the default <span class="quote"><span class="quote">short</span></span> format, local
modifications look like this:</p>
<div class="informalexample">
<pre class="screen">
$ svn status
M foo.c
M bar/baz.c
</pre>
</div>
<p>If you specify the <code class="option">--show-updates</code>
(<code class="option">-u</code>) option, a longer output format is
used:</p>
<div class="informalexample">
<pre class="screen">
$ svn status -u
M 1047 foo.c
* 1045 faces.html
* bloo.png
M 1050 bar/baz.c
Status against revision: 1066
</pre>
</div>
<p>In this case, two new columns appear. The second column
contains an asterisk if the file or directory is out of date.
The third column shows the working copy's revision number of the
item. In the previous example, the asterisk indicates that
<code class="filename">faces.html</code> would be patched if we updated,
and that <code class="filename">bloo.png</code> is a newly added file in
the repository. (The absence of any revision number next to
<code class="filename">bloo.png</code> means that it doesn't yet exist in
the working copy.)</p>
<p>For a more detailed discussion of <span class="command"><strong>svn
status</strong></span>, including an explanation of the status codes
shown in the previous example, see
<a class="xref" href="svn.tour.cycle.html#svn.tour.cycle.examine.status" title="See an overview of your changes">the section called “See an overview of your changes”</a>.</p>
</div>
<div class="sect2" title="Update">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="svn.forcvs.status-vs-update.update"></a>Update</h3>
</div>
</div>
</div>
<p><span class="command"><strong>svn update</strong></span> updates your working copy,
and prints only information about files that it updates.</p>
<p>Subversion has combined CVS's <code class="literal">P</code> and
<code class="literal">U</code> codes into just <code class="literal">U</code>. When
a merge or conflict occurs, Subversion simply prints
<code class="literal">G</code> or <code class="literal">C</code>, rather than a
whole sentence about it.</p>
<p>For a more detailed discussion of <span class="command"><strong>svn
update</strong></span>, see <a class="xref" href="svn.tour.cycle.html#svn.tour.cycle.update" title="Update Your Working Copy">the section called “Update Your Working Copy”</a>.</p>
</div>
</div>
<div class="navfooter">
<hr />
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left"><a accesskey="p" href="svn.forcvs.disconnected.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="svn.forcvs.html">Up</a>
</td>
<td width="40%" align="right"> <a accesskey="n" href="svn.forcvs.branches-and-tags.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">More Disconnected Operations </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
<td width="40%" align="right" valign="top"> Branches and Tags</td>
</tr>
</table>
</div>
<div xmlns="" id="svn-footer">
<hr />
<p>You are reading <em>Version Control with Subversion</em> (for Subversion 1.7), by Ben Collins-Sussman, Brian W. Fitzpatrick, and C. Michael Pilato.<br />
This work is licensed under the <a href="http://creativecommons.org/licenses/by/2.0/">Creative Commons Attribution License v2.0</a>.<br />
To submit comments, corrections, or other contributions to the text, please visit <a href="http://www.svnbook.com/">http://www.svnbook.com/</a>.</p>
</div>
</body>
</html>

View file

@ -0,0 +1,126 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>post-revprop-change</title>
<link rel="stylesheet" href="styles.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2" />
<style type="text/css">
body { background-image: url('images/draft.png');
background-repeat: no-repeat;
background-position: top left;
/* The following properties make the watermark "fixed" on the page. */
/* I think that's just a bit too distracting for the reader... */
/* background-attachment: fixed; */
/* background-position: center center; */
}</style>
<link rel="home" href="index.html" title="Version Control with Subversion [DRAFT]" />
<link rel="up" href="svn.ref.reposhooks.html" title="Repository Hooks" />
<link rel="prev" href="svn.ref.reposhooks.pre-revprop-change.html" title="pre-revprop-change" />
<link rel="next" href="svn.ref.reposhooks.pre-lock.html" title="pre-lock" />
</head>
<body>
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
<th colspan="3" align="center">post-revprop-change</th>
</tr>
<tr>
<td width="20%" align="left"><a accesskey="p" href="svn.ref.reposhooks.pre-revprop-change.html">Prev</a> </td>
<th width="60%" align="center">Repository Hooks</th>
<td width="20%" align="right"> <a accesskey="n" href="svn.ref.reposhooks.pre-lock.html">Next</a></td>
</tr>
</table>
<hr />
</div>
<div class="refentry" title="post-revprop-change">
<a id="svn.ref.reposhooks.post-revprop-change"></a>
<div class="titlepage"></div>
<a id="idp44886176" class="indexterm"></a>
<div class="refnamediv">
<h2>Name</h2>
<p>post-revprop-change — Notification of a successful revision property
change.</p>
</div>
<div class="refsect1" title="Description">
<a id="idp44889264"></a>
<h2>Description</h2>
<p>The <code class="literal">post-revprop-change</code> hook is run
immediately after the modification of a revision property
when performed outside the scope of a normal commit. As you can
derive from the description of its counterpart, the
<code class="literal">pre-revprop-change</code> hook, this hook will
not run at all unless
the <code class="literal">pre-revprop-change</code> hook is
implemented. It is typically used to send email
notification of the property change.</p>
<p>If the <code class="literal">post-revprop-change</code> hook returns a
nonzero exit status, the change <span class="emphasis"><em>will
not</em></span> be aborted since it has already
completed. However, anything that the hook printed
to <code class="filename">stderr</code> will be marshalled back to the
client, making it easier to diagnose hook failures.</p>
</div>
<div class="refsect1" title="Input parameter(s)">
<a id="idp44895520"></a>
<h2>Input parameter(s)</h2>
<p>The command-line arguments passed to the hook program,
in order, are:</p>
<div class="orderedlist">
<ol class="orderedlist" type="1">
<li class="listitem">
<p>Repository path</p>
</li>
<li class="listitem">
<p>Revision whose property was modified</p>
</li>
<li class="listitem">
<p>Authenticated username of the person making the change</p>
</li>
<li class="listitem">
<p>Name of the property changed</p>
</li>
<li class="listitem">
<p>Change description: <code class="literal">A</code> (added),
<code class="literal">D</code> (deleted), or <code class="literal">M</code>
(modified)</p>
</li>
</ol>
</div>
<p>Additionally, Subversion passes to the hook program, via
standard input, the previous value of the property.</p>
</div>
<div class="refsect1" title="Common uses">
<a id="idp44904352"></a>
<h2>Common uses</h2>
<p>Property change notification</p>
</div>
</div>
<div class="navfooter">
<hr />
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left"><a accesskey="p" href="svn.ref.reposhooks.pre-revprop-change.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="svn.ref.reposhooks.html">Up</a>
</td>
<td width="40%" align="right"> <a accesskey="n" href="svn.ref.reposhooks.pre-lock.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">pre-revprop-change </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
<td width="40%" align="right" valign="top"> pre-lock</td>
</tr>
</table>
</div>
<div xmlns="" id="svn-footer">
<hr />
<p>You are reading <em>Version Control with Subversion</em> (for Subversion 1.7), by Ben Collins-Sussman, Brian W. Fitzpatrick, and C. Michael Pilato.<br />
This work is licensed under the <a href="http://creativecommons.org/licenses/by/2.0/">Creative Commons Attribution License v2.0</a>.<br />
To submit comments, corrections, or other contributions to the text, please visit <a href="http://www.svnbook.com/">http://www.svnbook.com/</a>.</p>
</div>
</body>
</html>

View file

@ -0,0 +1,105 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>svnadmin rmlocks</title>
<link rel="stylesheet" href="styles.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2" />
<style type="text/css">
body { background-image: url('images/draft.png');
background-repeat: no-repeat;
background-position: top left;
/* The following properties make the watermark "fixed" on the page. */
/* I think that's just a bit too distracting for the reader... */
/* background-attachment: fixed; */
/* background-position: center center; */
}</style>
<link rel="home" href="index.html" title="Version Control with Subversion [DRAFT]" />
<link rel="up" href="svn.ref.svnadmin.html#svn.ref.svnadmin.c" title="svnadmin Subcommands" />
<link rel="prev" href="svn.ref.svnadmin.c.recover.html" title="svnadmin recover" />
<link rel="next" href="svn.ref.svnadmin.c.rmtxns.html" title="svnadmin rmtxns" />
</head>
<body>
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
<th colspan="3" align="center">svnadmin rmlocks</th>
</tr>
<tr>
<td width="20%" align="left"><a accesskey="p" href="svn.ref.svnadmin.c.recover.html">Prev</a> </td>
<th width="60%" align="center">svnadmin Subcommands</th>
<td width="20%" align="right"> <a accesskey="n" href="svn.ref.svnadmin.c.rmtxns.html">Next</a></td>
</tr>
</table>
<hr />
</div>
<div class="refentry" title="svnadmin rmlocks">
<a id="svn.ref.svnadmin.c.rmlocks"></a>
<div class="titlepage"></div>
<a id="idp43811536" class="indexterm"></a>
<div class="refnamediv">
<h2>Name</h2>
<p>svnadmin rmlocks — Unconditionally remove one or more locks from a
repository.</p>
</div>
<div class="refsect1" title="Synopsis">
<a id="idp43814704"></a>
<h2>Synopsis</h2>
<p>
<code class="literal">svnadmin rmlocks REPOS_PATH LOCKED_PATH...</code>
</p>
</div>
<div class="refsect1" title="Description">
<a id="idp43816352"></a>
<h2>Description</h2>
<p>Remove one or more locks from each <em class="replaceable"><code>LOCKED_PATH</code></em>.</p>
</div>
<div class="refsect1" title="Options">
<a id="idp43817952"></a>
<h2>Options</h2>
<p>None</p>
</div>
<div class="refsect1" title="Examples">
<a id="idp43819168"></a>
<h2>Examples</h2>
<p>This deletes the locks on
<code class="filename">tree.jpg</code> and
<code class="filename">house.jpg</code> in the repository at
<code class="filename">/var/svn/repos</code>:</p>
<div class="informalexample">
<pre class="screen">
$ svnadmin rmlocks /var/svn/repos tree.jpg house.jpg
Removed lock on '/tree.jpg.
Removed lock on '/house.jpg.
</pre>
</div>
</div>
</div>
<div class="navfooter">
<hr />
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left"><a accesskey="p" href="svn.ref.svnadmin.c.recover.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="svn.ref.svnadmin.html#svn.ref.svnadmin.c">Up</a>
</td>
<td width="40%" align="right"> <a accesskey="n" href="svn.ref.svnadmin.c.rmtxns.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">svnadmin recover </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
<td width="40%" align="right" valign="top"> svnadmin rmtxns</td>
</tr>
</table>
</div>
<div xmlns="" id="svn-footer">
<hr />
<p>You are reading <em>Version Control with Subversion</em> (for Subversion 1.7), by Ben Collins-Sussman, Brian W. Fitzpatrick, and C. Michael Pilato.<br />
This work is licensed under the <a href="http://creativecommons.org/licenses/by/2.0/">Creative Commons Attribution License v2.0</a>.<br />
To submit comments, corrections, or other contributions to the text, please visit <a href="http://www.svnbook.com/">http://www.svnbook.com/</a>.</p>
</div>
</body>
</html>

View file

@ -0,0 +1,113 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>svnadmin lslocks</title>
<link rel="stylesheet" href="styles.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2" />
<style type="text/css">
body { background-image: url('images/draft.png');
background-repeat: no-repeat;
background-position: top left;
/* The following properties make the watermark "fixed" on the page. */
/* I think that's just a bit too distracting for the reader... */
/* background-attachment: fixed; */
/* background-position: center center; */
}</style>
<link rel="home" href="index.html" title="Version Control with Subversion [DRAFT]" />
<link rel="up" href="svn.ref.svnadmin.html#svn.ref.svnadmin.c" title="svnadmin Subcommands" />
<link rel="prev" href="svn.ref.svnadmin.c.load.html" title="svnadmin load" />
<link rel="next" href="svn.ref.svnadmin.c.lstxns.html" title="svnadmin lstxns" />
</head>
<body>
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
<th colspan="3" align="center">svnadmin lslocks</th>
</tr>
<tr>
<td width="20%" align="left"><a accesskey="p" href="svn.ref.svnadmin.c.load.html">Prev</a> </td>
<th width="60%" align="center">svnadmin Subcommands</th>
<td width="20%" align="right"> <a accesskey="n" href="svn.ref.svnadmin.c.lstxns.html">Next</a></td>
</tr>
</table>
<hr />
</div>
<div class="refentry" title="svnadmin lslocks">
<a id="svn.ref.svnadmin.c.lslocks"></a>
<div class="titlepage"></div>
<a id="idp43758656" class="indexterm"></a>
<div class="refnamediv">
<h2>Name</h2>
<p>svnadmin lslocks — Print descriptions of all locks.</p>
</div>
<div class="refsect1" title="Synopsis">
<a id="idp43761744"></a>
<h2>Synopsis</h2>
<p>
<code class="literal">svnadmin lslocks REPOS_PATH [PATH-IN-REPOS]</code>
</p>
</div>
<div class="refsect1" title="Description">
<a id="idp43763392"></a>
<h2>Description</h2>
<p>Print descriptions of all locks in
repository <em class="replaceable"><code>REPOS_PATH</code></em>
underneath the
path <em class="replaceable"><code>PATH-IN-REPOS</code></em>.
If <em class="replaceable"><code>PATH-IN-REPOS</code></em> is not
provided, it defaults to the root directory of the
repository.</p>
</div>
<div class="refsect1" title="Options">
<a id="idp43766112"></a>
<h2>Options</h2>
<p>None</p>
</div>
<div class="refsect1" title="Examples">
<a id="idp43767328"></a>
<h2>Examples</h2>
<p>This lists the one locked file in the repository at
<code class="filename">/var/svn/repos</code>:</p>
<div class="informalexample">
<pre class="screen">
$ svnadmin lslocks /var/svn/repos
Path: /tree.jpg
UUID Token: opaquelocktoken:ab00ddf0-6afb-0310-9cd0-dda813329753
Owner: harry
Created: 2005-07-08 17:27:36 -0500 (Fri, 08 Jul 2005)
Expires:
Comment (1 line):
Rework the uppermost branches on the bald cypress in the foreground.
</pre>
</div>
</div>
</div>
<div class="navfooter">
<hr />
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left"><a accesskey="p" href="svn.ref.svnadmin.c.load.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="svn.ref.svnadmin.html#svn.ref.svnadmin.c">Up</a>
</td>
<td width="40%" align="right"> <a accesskey="n" href="svn.ref.svnadmin.c.lstxns.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">svnadmin load </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
<td width="40%" align="right" valign="top"> svnadmin lstxns</td>
</tr>
</table>
</div>
<div xmlns="" id="svn-footer">
<hr />
<p>You are reading <em>Version Control with Subversion</em> (for Subversion 1.7), by Ben Collins-Sussman, Brian W. Fitzpatrick, and C. Michael Pilato.<br />
This work is licensed under the <a href="http://creativecommons.org/licenses/by/2.0/">Creative Commons Attribution License v2.0</a>.<br />
To submit comments, corrections, or other contributions to the text, please visit <a href="http://www.svnbook.com/">http://www.svnbook.com/</a>.</p>
</div>
</body>
</html>

View file

@ -0,0 +1,93 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>svndumpfilter help</title>
<link rel="stylesheet" href="styles.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2" />
<style type="text/css">
body { background-image: url('images/draft.png');
background-repeat: no-repeat;
background-position: top left;
/* The following properties make the watermark "fixed" on the page. */
/* I think that's just a bit too distracting for the reader... */
/* background-attachment: fixed; */
/* background-position: center center; */
}</style>
<link rel="home" href="index.html" title="Version Control with Subversion [DRAFT]" />
<link rel="up" href="svn.ref.svndumpfilter.html#svn.ref.svndumpfilter.c" title="svndumpfilter Subcommands" />
<link rel="prev" href="svn.ref.svndumpfilter.commands.c.include.html" title="svndumpfilter include" />
<link rel="next" href="svn.ref.svnversion.html" title="svnversion—Subversion Working Copy Version Info" />
</head>
<body>
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
<th colspan="3" align="center">svndumpfilter help</th>
</tr>
<tr>
<td width="20%" align="left"><a accesskey="p" href="svn.ref.svndumpfilter.commands.c.include.html">Prev</a> </td>
<th width="60%" align="center">svndumpfilter Subcommands</th>
<td width="20%" align="right"> <a accesskey="n" href="svn.ref.svnversion.html">Next</a></td>
</tr>
</table>
<hr />
</div>
<div class="refentry" title="svndumpfilter help">
<a id="svn.ref.svndumpfilter.commands.c.help"></a>
<div class="titlepage"></div>
<a id="idp44572176" class="indexterm"></a>
<div class="refnamediv">
<h2>Name</h2>
<p>svndumpfilter help — Help!</p>
</div>
<div class="refsect1" title="Synopsis">
<a id="idp44575296"></a>
<h2>Synopsis</h2>
<p>
<code class="literal">svndumpfilter help [SUBCOMMAND...]</code>
</p>
</div>
<div class="refsect1" title="Description">
<a id="idp44576880"></a>
<h2>Description</h2>
<p>Displays the help message
for <span class="command"><strong>svndumpfilter</strong></span>. Unlike other help
commands documented in this chapter, there is no witty
commentary for this help command. The authors of this
book deeply regret the omission.</p>
</div>
<div class="refsect1" title="Options">
<a id="idp44579024"></a>
<h2>Options</h2>
<p>None</p>
</div>
</div>
<div class="navfooter">
<hr />
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left"><a accesskey="p" href="svn.ref.svndumpfilter.commands.c.include.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="svn.ref.svndumpfilter.html#svn.ref.svndumpfilter.c">Up</a>
</td>
<td width="40%" align="right"> <a accesskey="n" href="svn.ref.svnversion.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">svndumpfilter include </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
<td width="40%" align="right" valign="top"> svnversion—Subversion Working Copy Version Info</td>
</tr>
</table>
</div>
<div xmlns="" id="svn-footer">
<hr />
<p>You are reading <em>Version Control with Subversion</em> (for Subversion 1.7), by Ben Collins-Sussman, Brian W. Fitzpatrick, and C. Michael Pilato.<br />
This work is licensed under the <a href="http://creativecommons.org/licenses/by/2.0/">Creative Commons Attribution License v2.0</a>.<br />
To submit comments, corrections, or other contributions to the text, please visit <a href="http://www.svnbook.com/">http://www.svnbook.com/</a>.</p>
</div>
</body>
</html>

View file

@ -0,0 +1,115 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>svnadmin setrevprop</title>
<link rel="stylesheet" href="styles.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2" />
<style type="text/css">
body { background-image: url('images/draft.png');
background-repeat: no-repeat;
background-position: top left;
/* The following properties make the watermark "fixed" on the page. */
/* I think that's just a bit too distracting for the reader... */
/* background-attachment: fixed; */
/* background-position: center center; */
}</style>
<link rel="home" href="index.html" title="Version Control with Subversion [DRAFT]" />
<link rel="up" href="svn.ref.svnadmin.html#svn.ref.svnadmin.c" title="svnadmin Subcommands" />
<link rel="prev" href="svn.ref.svnadmin.c.setlog.html" title="svnadmin setlog" />
<link rel="next" href="svn.ref.svnadmin.c.setuuid.html" title="svnadmin setuuid" />
</head>
<body>
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
<th colspan="3" align="center">svnadmin setrevprop</th>
</tr>
<tr>
<td width="20%" align="left"><a accesskey="p" href="svn.ref.svnadmin.c.setlog.html">Prev</a> </td>
<th width="60%" align="center">svnadmin Subcommands</th>
<td width="20%" align="right"> <a accesskey="n" href="svn.ref.svnadmin.c.setuuid.html">Next</a></td>
</tr>
</table>
<hr />
</div>
<div class="refentry" title="svnadmin setrevprop">
<a id="svn.ref.svnadmin.c.setrevprop"></a>
<div class="titlepage"></div>
<a id="idp43858416" class="indexterm"></a>
<div class="refnamediv">
<h2>Name</h2>
<p>svnadmin setrevprop — Set a property on a revision.</p>
</div>
<div class="refsect1" title="Synopsis">
<a id="idp43861504"></a>
<h2>Synopsis</h2>
<p>
<code class="literal">svnadmin setrevprop REPOS_PATH -r REVISION NAME FILE</code>
</p>
</div>
<div class="refsect1" title="Description">
<a id="idp43863152"></a>
<h2>Description</h2>
<p>Set the property <em class="replaceable"><code>NAME</code></em> on
revision <em class="replaceable"><code>REVISION</code></em> to the
contents of <em class="replaceable"><code>FILE</code></em>. Use
<code class="option">--use-pre-revprop-change-hook</code>
or <code class="option">--use-post-revprop-change-hook</code> to
trigger the revision property-related hooks (e.g., if
you want an email notification sent from your <code class="literal">post-revprop-change-hook</code>).</p>
</div>
<div class="refsect1" title="Options">
<a id="idp43867488"></a>
<h2>Options</h2>
<div class="informalexample">
<pre class="screen">
--revision (-r) ARG
--use-post-revprop-change-hook
--use-pre-revprop-change-hook
</pre>
</div>
</div>
<div class="refsect1" title="Examples">
<a id="idp43869424"></a>
<h2>Examples</h2>
<p>The following sets the revision
property <code class="literal">repository-photo</code> to the contents
of the file <code class="filename">sandwich.png</code>:</p>
<div class="informalexample">
<pre class="screen">
$ svnadmin setrevprop /var/svn/repos -r 0 repository-photo sandwich.png
</pre>
</div>
<p>As you can see, <span class="command"><strong>svnadmin setrevprop</strong></span>
has no output upon success.</p>
</div>
</div>
<div class="navfooter">
<hr />
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left"><a accesskey="p" href="svn.ref.svnadmin.c.setlog.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="svn.ref.svnadmin.html#svn.ref.svnadmin.c">Up</a>
</td>
<td width="40%" align="right"> <a accesskey="n" href="svn.ref.svnadmin.c.setuuid.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">svnadmin setlog </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
<td width="40%" align="right" valign="top"> svnadmin setuuid</td>
</tr>
</table>
</div>
<div xmlns="" id="svn-footer">
<hr />
<p>You are reading <em>Version Control with Subversion</em> (for Subversion 1.7), by Ben Collins-Sussman, Brian W. Fitzpatrick, and C. Michael Pilato.<br />
This work is licensed under the <a href="http://creativecommons.org/licenses/by/2.0/">Creative Commons Attribution License v2.0</a>.<br />
To submit comments, corrections, or other contributions to the text, please visit <a href="http://www.svnbook.com/">http://www.svnbook.com/</a>.</p>
</div>
</body>
</html>

View file

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>svnadmin hotcopy</title>
<link rel="stylesheet" href="styles.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2" />
<style type="text/css">
body { background-image: url('images/draft.png');
background-repeat: no-repeat;
background-position: top left;
/* The following properties make the watermark "fixed" on the page. */
/* I think that's just a bit too distracting for the reader... */
/* background-attachment: fixed; */
/* background-position: center center; */
}</style>
<link rel="home" href="index.html" title="Version Control with Subversion [DRAFT]" />
<link rel="up" href="svn.ref.svnadmin.html#svn.ref.svnadmin.c" title="svnadmin Subcommands" />
<link rel="prev" href="svn.ref.svnadmin.c.help.html" title="svnadmin help" />
<link rel="next" href="svn.ref.svnadmin.c.list-dblogs.html" title="svnadmin list-dblogs" />
</head>
<body>
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
<th colspan="3" align="center">svnadmin hotcopy</th>
</tr>
<tr>
<td width="20%" align="left"><a accesskey="p" href="svn.ref.svnadmin.c.help.html">Prev</a> </td>
<th width="60%" align="center">svnadmin Subcommands</th>
<td width="20%" align="right"> <a accesskey="n" href="svn.ref.svnadmin.c.list-dblogs.html">Next</a></td>
</tr>
</table>
<hr />
</div>
<div class="refentry" title="svnadmin hotcopy">
<a id="svn.ref.svnadmin.c.hotcopy"></a>
<div class="titlepage"></div>
<a id="idp43704112" class="indexterm"></a>
<div class="refnamediv">
<h2>Name</h2>
<p>svnadmin hotcopy — Make a hot copy of a repository.</p>
</div>
<div class="refsect1" title="Synopsis">
<a id="idp43707200"></a>
<h2>Synopsis</h2>
<p>
<code class="literal">svnadmin hotcopy REPOS_PATH NEW_REPOS_PATH</code>
</p>
</div>
<div class="refsect1" title="Description">
<a id="idp43708848"></a>
<h2>Description</h2>
<p>This subcommand makes a full <span class="quote"><span class="quote">hot</span></span> backup
of your repository, including all hooks, configuration
files, and, of course, database files. If you pass the
<code class="option">--clean-logs</code> option,
<span class="command"><strong>svnadmin</strong></span> will perform a hot copy of your
repository, and then remove unused Berkeley DB logs from
the original repository. You can run this command at any
time and make a safe copy of the repository, regardless of
whether other processes are using the repository.</p>
</div>
<div class="refsect1" title="Options">
<a id="idp43712096"></a>
<h2>Options</h2>
<div class="informalexample">
<pre class="screen">
--clean-logs
</pre>
</div>
<div class="warning" title="Warning" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Warning">
<tr>
<td rowspan="2" align="center" valign="top" width="25">
<img alt="[Warning]" src="images/warning.png" />
</td>
<th align="left">Warning</th>
</tr>
<tr>
<td align="left" valign="top">
<p>As described in <a class="xref" href="svn.reposadmin.planning.html#svn.reposadmin.basics.backends.bdb" title="Berkeley DB">the section called “Berkeley DB”</a>, hot-copied
Berkeley DB repositories are <span class="emphasis"><em>not</em></span>
portable across operating systems, nor will they work on
machines with a different <span class="quote"><span class="quote">endianness</span></span> than
the machine where they were created.</p>
</td>
</tr>
</table>
</div>
</div>
</div>
<div class="navfooter">
<hr />
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left"><a accesskey="p" href="svn.ref.svnadmin.c.help.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="svn.ref.svnadmin.html#svn.ref.svnadmin.c">Up</a>
</td>
<td width="40%" align="right"> <a accesskey="n" href="svn.ref.svnadmin.c.list-dblogs.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">svnadmin help </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
<td width="40%" align="right" valign="top"> svnadmin list-dblogs</td>
</tr>
</table>
</div>
<div xmlns="" id="svn-footer">
<hr />
<p>You are reading <em>Version Control with Subversion</em> (for Subversion 1.7), by Ben Collins-Sussman, Brian W. Fitzpatrick, and C. Michael Pilato.<br />
This work is licensed under the <a href="http://creativecommons.org/licenses/by/2.0/">Creative Commons Attribution License v2.0</a>.<br />
To submit comments, corrections, or other contributions to the text, please visit <a href="http://www.svnbook.com/">http://www.svnbook.com/</a>.</p>
</div>
</body>
</html>

View file

@ -0,0 +1,144 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>svnadmin recover</title>
<link rel="stylesheet" href="styles.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2" />
<style type="text/css">
body { background-image: url('images/draft.png');
background-repeat: no-repeat;
background-position: top left;
/* The following properties make the watermark "fixed" on the page. */
/* I think that's just a bit too distracting for the reader... */
/* background-attachment: fixed; */
/* background-position: center center; */
}</style>
<link rel="home" href="index.html" title="Version Control with Subversion [DRAFT]" />
<link rel="up" href="svn.ref.svnadmin.html#svn.ref.svnadmin.c" title="svnadmin Subcommands" />
<link rel="prev" href="svn.ref.svnadmin.c.pack.html" title="svnadmin pack" />
<link rel="next" href="svn.ref.svnadmin.c.rmlocks.html" title="svnadmin rmlocks" />
</head>
<body>
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
<th colspan="3" align="center">svnadmin recover</th>
</tr>
<tr>
<td width="20%" align="left"><a accesskey="p" href="svn.ref.svnadmin.c.pack.html">Prev</a> </td>
<th width="60%" align="center">svnadmin Subcommands</th>
<td width="20%" align="right"> <a accesskey="n" href="svn.ref.svnadmin.c.rmlocks.html">Next</a></td>
</tr>
</table>
<hr />
</div>
<div class="refentry" title="svnadmin recover">
<a id="svn.ref.svnadmin.c.recover"></a>
<div class="titlepage"></div>
<a id="idp43791648" class="indexterm"></a>
<div class="refnamediv">
<h2>Name</h2>
<p>svnadmin recover — Bring a repository database back into a
consistent state (applies only to repositories using the
<code class="literal">bdb</code> backend). In addition, if
<code class="filename">repos/conf/passwd</code> does not exist, it
will create a default passwordfile .</p>
</div>
<div class="refsect1" title="Synopsis">
<a id="idp43796288"></a>
<h2>Synopsis</h2>
<p>
<code class="literal">svnadmin recover REPOS_PATH</code>
</p>
</div>
<div class="refsect1" title="Description">
<a id="idp43797920"></a>
<h2>Description</h2>
<p>Run this command if you get an error indicating that
your repository needs to be recovered.</p>
</div>
<div class="refsect1" title="Options">
<a id="idp43799216"></a>
<h2>Options</h2>
<div class="informalexample">
<pre class="screen">
--wait
</pre>
</div>
</div>
<div class="refsect1" title="Examples">
<a id="idp43801088"></a>
<h2>Examples</h2>
<p>Recover a hung repository:</p>
<div class="informalexample">
<pre class="screen">
$ svnadmin recover /var/svn/repos/
Repository lock acquired.
Please wait; recovering the repository may take some time...
Recovery completed.
The latest repos revision is 34.
</pre>
</div>
<p>Recovering the database requires an exclusive lock on
the repository. (This is a <span class="quote"><span class="quote">database lock</span></span>;
see the sidebar <a class="xref" href="svn.advanced.locking.html#svn.advanced.locking.meanings" title="The Three Meanings of “Lock”">The Three Meanings of <span class="quote"><span class="quote">Lock</span></span></a>.)
If another process is accessing the repository,
then <span class="command"><strong>svnadmin recover</strong></span> will error:</p>
<div class="informalexample">
<pre class="screen">
$ svnadmin recover /var/svn/repos
svn: Failed to get exclusive repository access; perhaps another process
such as httpd, svnserve or svn has it open?
$
</pre>
</div>
<p>The <code class="option">--wait</code> option, however, will
cause <span class="command"><strong>svnadmin recover</strong></span> to wait
indefinitely for other processes to disconnect:</p>
<div class="informalexample">
<pre class="screen">
$ svnadmin recover /var/svn/repos --wait
Waiting on repository lock; perhaps another process has it open?
### time goes by…
Repository lock acquired.
Please wait; recovering the repository may take some time...
Recovery completed.
The latest repos revision is 34.
</pre>
</div>
</div>
</div>
<div class="navfooter">
<hr />
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left"><a accesskey="p" href="svn.ref.svnadmin.c.pack.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="svn.ref.svnadmin.html#svn.ref.svnadmin.c">Up</a>
</td>
<td width="40%" align="right"> <a accesskey="n" href="svn.ref.svnadmin.c.rmlocks.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">svnadmin pack </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
<td width="40%" align="right" valign="top"> svnadmin rmlocks</td>
</tr>
</table>
</div>
<div xmlns="" id="svn-footer">
<hr />
<p>You are reading <em>Version Control with Subversion</em> (for Subversion 1.7), by Ben Collins-Sussman, Brian W. Fitzpatrick, and C. Michael Pilato.<br />
This work is licensed under the <a href="http://creativecommons.org/licenses/by/2.0/">Creative Commons Attribution License v2.0</a>.<br />
To submit comments, corrections, or other contributions to the text, please visit <a href="http://www.svnbook.com/">http://www.svnbook.com/</a>.</p>
</div>
</body>
</html>

View file

@ -0,0 +1,102 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>svnadmin deltify</title>
<link rel="stylesheet" href="styles.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2" />
<style type="text/css">
body { background-image: url('images/draft.png');
background-repeat: no-repeat;
background-position: top left;
/* The following properties make the watermark "fixed" on the page. */
/* I think that's just a bit too distracting for the reader... */
/* background-attachment: fixed; */
/* background-position: center center; */
}</style>
<link rel="home" href="index.html" title="Version Control with Subversion [DRAFT]" />
<link rel="up" href="svn.ref.svnadmin.html#svn.ref.svnadmin.c" title="svnadmin Subcommands" />
<link rel="prev" href="svn.ref.svnadmin.c.create.html" title="svnadmin create" />
<link rel="next" href="svn.ref.svnadmin.c.dump.html" title="svnadmin dump" />
</head>
<body>
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
<th colspan="3" align="center">svnadmin deltify</th>
</tr>
<tr>
<td width="20%" align="left"><a accesskey="p" href="svn.ref.svnadmin.c.create.html">Prev</a> </td>
<th width="60%" align="center">svnadmin Subcommands</th>
<td width="20%" align="right"> <a accesskey="n" href="svn.ref.svnadmin.c.dump.html">Next</a></td>
</tr>
</table>
<hr />
</div>
<div class="refentry" title="svnadmin deltify">
<a id="svn.ref.svnadmin.c.deltify"></a>
<div class="titlepage"></div>
<a id="idp43658240" class="indexterm"></a>
<div class="refnamediv">
<h2>Name</h2>
<p>svnadmin deltify — Deltify changed paths in a revision range.</p>
</div>
<div class="refsect1" title="Synopsis">
<a id="idp43661392"></a>
<h2>Synopsis</h2>
<p>
<code class="literal">svnadmin deltify [-r LOWER[:UPPER]] REPOS_PATH</code>
</p>
</div>
<div class="refsect1" title="Description">
<a id="idp43663040"></a>
<h2>Description</h2>
<p><span class="command"><strong>svnadmin deltify</strong></span> exists in
current versions of Subversion only for historical reasons.
This command is deprecated and no longer needed.</p>
<p>It dates from a time when Subversion offered
administrators greater control over compression strategies
in the repository. This turned out to be a lot of
complexity for <span class="emphasis"><em>very</em></span> little gain, and
this <span class="quote"><span class="quote">feature</span></span> was deprecated.</p>
</div>
<div class="refsect1" title="Options">
<a id="idp43666416"></a>
<h2>Options</h2>
<div class="informalexample">
<pre class="screen">
--memory-cache-size
--quiet (-q)
--revision (-r) REV
</pre>
</div>
</div>
</div>
<div class="navfooter">
<hr />
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left"><a accesskey="p" href="svn.ref.svnadmin.c.create.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="svn.ref.svnadmin.html#svn.ref.svnadmin.c">Up</a>
</td>
<td width="40%" align="right"> <a accesskey="n" href="svn.ref.svnadmin.c.dump.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">svnadmin create </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
<td width="40%" align="right" valign="top"> svnadmin dump</td>
</tr>
</table>
</div>
<div xmlns="" id="svn-footer">
<hr />
<p>You are reading <em>Version Control with Subversion</em> (for Subversion 1.7), by Ben Collins-Sussman, Brian W. Fitzpatrick, and C. Michael Pilato.<br />
This work is licensed under the <a href="http://creativecommons.org/licenses/by/2.0/">Creative Commons Attribution License v2.0</a>.<br />
To submit comments, corrections, or other contributions to the text, please visit <a href="http://www.svnbook.com/">http://www.svnbook.com/</a>.</p>
</div>
</body>
</html>

View file

@ -0,0 +1,100 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>svnadmin lstxns</title>
<link rel="stylesheet" href="styles.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2" />
<style type="text/css">
body { background-image: url('images/draft.png');
background-repeat: no-repeat;
background-position: top left;
/* The following properties make the watermark "fixed" on the page. */
/* I think that's just a bit too distracting for the reader... */
/* background-attachment: fixed; */
/* background-position: center center; */
}</style>
<link rel="home" href="index.html" title="Version Control with Subversion [DRAFT]" />
<link rel="up" href="svn.ref.svnadmin.html#svn.ref.svnadmin.c" title="svnadmin Subcommands" />
<link rel="prev" href="svn.ref.svnadmin.c.lslocks.html" title="svnadmin lslocks" />
<link rel="next" href="svn.ref.svnadmin.c.pack.html" title="svnadmin pack" />
</head>
<body>
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
<th colspan="3" align="center">svnadmin lstxns</th>
</tr>
<tr>
<td width="20%" align="left"><a accesskey="p" href="svn.ref.svnadmin.c.lslocks.html">Prev</a> </td>
<th width="60%" align="center">svnadmin Subcommands</th>
<td width="20%" align="right"> <a accesskey="n" href="svn.ref.svnadmin.c.pack.html">Next</a></td>
</tr>
</table>
<hr />
</div>
<div class="refentry" title="svnadmin lstxns">
<a id="svn.ref.svnadmin.c.lstxns"></a>
<div class="titlepage"></div>
<a id="idp43771888" class="indexterm"></a>
<div class="refnamediv">
<h2>Name</h2>
<p>svnadmin lstxns — Print the names of all uncommitted transactions.</p>
</div>
<div class="refsect1" title="Synopsis">
<a id="idp43775040"></a>
<h2>Synopsis</h2>
<p>
<code class="literal">svnadmin lstxns REPOS_PATH</code>
</p>
</div>
<div class="refsect1" title="Description">
<a id="idp43776624"></a>
<h2>Description</h2>
<p>Print the names of all uncommitted transactions. See
<a class="xref" href="svn.reposadmin.maint.html#svn.reposadmin.maint.diskspace.deadtxns" title="Removing dead transactions">the section called “Removing dead transactions”</a>
for information on how uncommitted transactions are
created and what you should do with them.</p>
</div>
<div class="refsect1" title="Examples">
<a id="idp43778864"></a>
<h2>Examples</h2>
<p>List all outstanding transactions in a
repository:</p>
<div class="informalexample">
<pre class="screen">
$ svnadmin lstxns /var/svn/repos/
1w
1x
</pre>
</div>
</div>
</div>
<div class="navfooter">
<hr />
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left"><a accesskey="p" href="svn.ref.svnadmin.c.lslocks.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="svn.ref.svnadmin.html#svn.ref.svnadmin.c">Up</a>
</td>
<td width="40%" align="right"> <a accesskey="n" href="svn.ref.svnadmin.c.pack.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">svnadmin lslocks </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
<td width="40%" align="right" valign="top"> svnadmin pack</td>
</tr>
</table>
</div>
<div xmlns="" id="svn-footer">
<hr />
<p>You are reading <em>Version Control with Subversion</em> (for Subversion 1.7), by Ben Collins-Sussman, Brian W. Fitzpatrick, and C. Michael Pilato.<br />
This work is licensed under the <a href="http://creativecommons.org/licenses/by/2.0/">Creative Commons Attribution License v2.0</a>.<br />
To submit comments, corrections, or other contributions to the text, please visit <a href="http://www.svnbook.com/">http://www.svnbook.com/</a>.</p>
</div>
</body>
</html>

View file

@ -0,0 +1,172 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>svndumpfilter include</title>
<link rel="stylesheet" href="styles.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2" />
<style type="text/css">
body { background-image: url('images/draft.png');
background-repeat: no-repeat;
background-position: top left;
/* The following properties make the watermark "fixed" on the page. */
/* I think that's just a bit too distracting for the reader... */
/* background-attachment: fixed; */
/* background-position: center center; */
}</style>
<link rel="home" href="index.html" title="Version Control with Subversion [DRAFT]" />
<link rel="up" href="svn.ref.svndumpfilter.html#svn.ref.svndumpfilter.c" title="svndumpfilter Subcommands" />
<link rel="prev" href="svn.ref.svndumpfilter.commands.c.exclude.html" title="svndumpfilter exclude" />
<link rel="next" href="svn.ref.svndumpfilter.commands.c.help.html" title="svndumpfilter help" />
</head>
<body>
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
<th colspan="3" align="center">svndumpfilter include</th>
</tr>
<tr>
<td width="20%" align="left"><a accesskey="p" href="svn.ref.svndumpfilter.commands.c.exclude.html">Prev</a> </td>
<th width="60%" align="center">svndumpfilter Subcommands</th>
<td width="20%" align="right"> <a accesskey="n" href="svn.ref.svndumpfilter.commands.c.help.html">Next</a></td>
</tr>
</table>
<hr />
</div>
<div class="refentry" title="svndumpfilter include">
<a id="svn.ref.svndumpfilter.commands.c.include"></a>
<div class="titlepage"></div>
<a id="idp44553504" class="indexterm"></a>
<div class="refnamediv">
<h2>Name</h2>
<p>svndumpfilter include — Filter out nodes without given prefixes from
dump stream.</p>
</div>
<div class="refsect1" title="Synopsis">
<a id="idp44556672"></a>
<h2>Synopsis</h2>
<p>
<code class="literal">svndumpfilter include PATH_PREFIX...</code>
</p>
</div>
<div class="refsect1" title="Description">
<a id="idp44558304"></a>
<h2>Description</h2>
<p>Can be used to include nodes that begin with one or
more <em class="replaceable"><code>PATH_PREFIX</code></em>es in a
filtered dump file (thus excluding all other paths).</p>
</div>
<div class="refsect1" title="Options">
<a id="idp44560080"></a>
<h2>Options</h2>
<div class="informalexample">
<pre class="screen">
--drop-empty-revs
--pattern
--preserve-revprops
--quiet
--renumber-revs
--skip-missing-merge-sources
--targets ARG
</pre>
</div>
</div>
<div class="refsect1" title="Example">
<a id="idp44562048"></a>
<h2>Example</h2>
<p>If we have a dump file from a repository with a number of
different picnic-related directories in it, but want to
keep only the <code class="filename">sandwiches</code> part of the
repository, we'll include only that path:</p>
<div class="informalexample">
<pre class="screen">
$ svndumpfilter include sandwiches &lt; dumpfile &gt; filtered-dumpfile
Including prefixes:
'/sandwiches'
Revision 0 committed as 0.
Revision 1 committed as 1.
Revision 2 committed as 2.
Revision 3 committed as 3.
Revision 4 committed as 4.
Dropped 12 node(s):
'/condiments'
'/condiments/pepper'
'/condiments/pepper.OLD'
'/condiments/salt'
'/condiments/salt.OLD'
'/drinks'
'/snacks'
'/supplies'
'/toppings'
'/toppings/cheese'
'/toppings/cheese.OLD'
'/toppings/lettuce'
$
</pre>
</div>
<p>Beginning in Subversion 1.7,
<span class="command"><strong>svndumpfilter</strong></span> can optionally treat
the <em class="replaceable"><code>PATH_PREFIX</code></em>s not merely as
explicit substrings, but as file patterns instead. So,
for example, if you wished to include only paths which ended
with <code class="filename">ks</code>, you would do the
following:</p>
<div class="informalexample">
<pre class="screen">
$ svndumpfilter include --pattern "*ks" &lt; dumpfile &gt; filtered-dumpfile
Including prefix patterns:
'/*ks'
Revision 0 committed as 0.
Revision 1 committed as 1.
Revision 2 committed as 2.
Revision 3 committed as 3.
Revision 4 committed as 4.
Dropped 11 node(s):
'/condiments'
'/condiments/pepper'
'/condiments/pepper.OLD'
'/condiments/salt'
'/condiments/salt.OLD'
'/sandwiches'
'/supplies'
'/toppings'
'/toppings/cheese'
'/toppings/cheese.OLD'
'/toppings/lettuce'
$
</pre>
</div>
</div>
</div>
<div class="navfooter">
<hr />
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left"><a accesskey="p" href="svn.ref.svndumpfilter.commands.c.exclude.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="svn.ref.svndumpfilter.html#svn.ref.svndumpfilter.c">Up</a>
</td>
<td width="40%" align="right"> <a accesskey="n" href="svn.ref.svndumpfilter.commands.c.help.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">svndumpfilter exclude </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
<td width="40%" align="right" valign="top"> svndumpfilter help</td>
</tr>
</table>
</div>
<div xmlns="" id="svn-footer">
<hr />
<p>You are reading <em>Version Control with Subversion</em> (for Subversion 1.7), by Ben Collins-Sussman, Brian W. Fitzpatrick, and C. Michael Pilato.<br />
This work is licensed under the <a href="http://creativecommons.org/licenses/by/2.0/">Creative Commons Attribution License v2.0</a>.<br />
To submit comments, corrections, or other contributions to the text, please visit <a href="http://www.svnbook.com/">http://www.svnbook.com/</a>.</p>
</div>
</body>
</html>

View file

@ -0,0 +1,153 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>svndumpfilter exclude</title>
<link rel="stylesheet" href="styles.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2" />
<style type="text/css">
body { background-image: url('images/draft.png');
background-repeat: no-repeat;
background-position: top left;
/* The following properties make the watermark "fixed" on the page. */
/* I think that's just a bit too distracting for the reader... */
/* background-attachment: fixed; */
/* background-position: center center; */
}</style>
<link rel="home" href="index.html" title="Version Control with Subversion [DRAFT]" />
<link rel="up" href="svn.ref.svndumpfilter.html#svn.ref.svndumpfilter.c" title="svndumpfilter Subcommands" />
<link rel="prev" href="svn.ref.svndumpfilter.html" title="svndumpfilter—Subversion History Filtering" />
<link rel="next" href="svn.ref.svndumpfilter.commands.c.include.html" title="svndumpfilter include" />
</head>
<body>
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
<th colspan="3" align="center">svndumpfilter exclude</th>
</tr>
<tr>
<td width="20%" align="left"><a accesskey="p" href="svn.ref.svndumpfilter.html">Prev</a> </td>
<th width="60%" align="center">svndumpfilter Subcommands</th>
<td width="20%" align="right"> <a accesskey="n" href="svn.ref.svndumpfilter.commands.c.include.html">Next</a></td>
</tr>
</table>
<hr />
</div>
<div class="refentry" title="svndumpfilter exclude">
<a id="svn.ref.svndumpfilter.commands.c.exclude"></a>
<div class="titlepage"></div>
<a id="idp44535120" class="indexterm"></a>
<div class="refnamediv">
<h2>Name</h2>
<p>svndumpfilter exclude — Filter out nodes with given prefixes from the dump stream.</p>
</div>
<div class="refsect1" title="Synopsis">
<a id="idp44538288"></a>
<h2>Synopsis</h2>
<p>
<code class="literal">svndumpfilter exclude PATH_PREFIX...</code>
</p>
</div>
<div class="refsect1" title="Description">
<a id="idp44539920"></a>
<h2>Description</h2>
<p>This can be used to exclude nodes that begin with one or
more <em class="replaceable"><code>PATH_PREFIX</code></em>es from a
filtered dump file.</p>
</div>
<div class="refsect1" title="Options">
<a id="idp44541616"></a>
<h2>Options</h2>
<div class="informalexample">
<pre class="screen">
--drop-empty-revs
--pattern
--preserve-revprops
--quiet
--renumber-revs
--skip-missing-merge-sources
--targets ARG
</pre>
</div>
</div>
<div class="refsect1" title="Examples">
<a id="idp44543584"></a>
<h2>Examples</h2>
<p>If we have a dump file from a repository with a number
of different picnic-related directories in it, but we want
to keep everything <span class="emphasis"><em>except</em></span>
the <code class="filename">sandwiches</code> part of the
repository, we'll exclude only that path:</p>
<div class="informalexample">
<pre class="screen">
$ svndumpfilter exclude sandwiches &lt; dumpfile &gt; filtered-dumpfile
Excluding prefixes:
'/sandwiches'
Revision 0 committed as 0.
Revision 1 committed as 1.
Revision 2 committed as 2.
Revision 3 committed as 3.
Revision 4 committed as 4.
Dropped 1 node(s):
'/sandwiches'
$
</pre>
</div>
<p>Beginning in Subversion 1.7,
<span class="command"><strong>svndumpfilter</strong></span> can optionally treat
the <em class="replaceable"><code>PATH_PREFIX</code></em>s not merely as
explicit substrings, but as file patterns instead. So,
for example, if you wished to filter out paths which ended
with <code class="filename">.OLD</code>, you would do the
following:</p>
<div class="informalexample">
<pre class="screen">
$ svndumpfilter exclude --pattern "*.OLD" &lt; dumpfile &gt; filtered-dumpfile
Excluding prefix patterns:
'/*.OLD'
Revision 0 committed as 0.
Revision 1 committed as 1.
Revision 2 committed as 2.
Revision 3 committed as 3.
Revision 4 committed as 4.
Dropped 3 node(s):
'/condiments/salt.OLD'
'/condiments/pepper.OLD'
'/toppings/cheese.OLD'
$
</pre>
</div>
</div>
</div>
<div class="navfooter">
<hr />
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left"><a accesskey="p" href="svn.ref.svndumpfilter.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="svn.ref.svndumpfilter.html#svn.ref.svndumpfilter.c">Up</a>
</td>
<td width="40%" align="right"> <a accesskey="n" href="svn.ref.svndumpfilter.commands.c.include.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">svndumpfilter—Subversion History Filtering </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
<td width="40%" align="right" valign="top"> svndumpfilter include</td>
</tr>
</table>
</div>
<div xmlns="" id="svn-footer">
<hr />
<p>You are reading <em>Version Control with Subversion</em> (for Subversion 1.7), by Ben Collins-Sussman, Brian W. Fitzpatrick, and C. Michael Pilato.<br />
This work is licensed under the <a href="http://creativecommons.org/licenses/by/2.0/">Creative Commons Attribution License v2.0</a>.<br />
To submit comments, corrections, or other contributions to the text, please visit <a href="http://www.svnbook.com/">http://www.svnbook.com/</a>.</p>
</div>
</body>
</html>

View file

@ -0,0 +1,152 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>svnadmin create</title>
<link rel="stylesheet" href="styles.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2" />
<style type="text/css">
body { background-image: url('images/draft.png');
background-repeat: no-repeat;
background-position: top left;
/* The following properties make the watermark "fixed" on the page. */
/* I think that's just a bit too distracting for the reader... */
/* background-attachment: fixed; */
/* background-position: center center; */
}</style>
<link rel="home" href="index.html" title="Version Control with Subversion [DRAFT]" />
<link rel="up" href="svn.ref.svnadmin.html#svn.ref.svnadmin.c" title="svnadmin Subcommands" />
<link rel="prev" href="svn.ref.svnadmin.c.crashtest.html" title="svnadmin crashtest" />
<link rel="next" href="svn.ref.svnadmin.c.deltify.html" title="svnadmin deltify" />
</head>
<body>
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
<th colspan="3" align="center">svnadmin create</th>
</tr>
<tr>
<td width="20%" align="left"><a accesskey="p" href="svn.ref.svnadmin.c.crashtest.html">Prev</a> </td>
<th width="60%" align="center">svnadmin Subcommands</th>
<td width="20%" align="right"> <a accesskey="n" href="svn.ref.svnadmin.c.deltify.html">Next</a></td>
</tr>
</table>
<hr />
</div>
<div class="refentry" title="svnadmin create">
<a id="svn.ref.svnadmin.c.create"></a>
<div class="titlepage"></div>
<a id="idp43635376" class="indexterm"></a>
<div class="refnamediv">
<h2>Name</h2>
<p>svnadmin create — Create a new, empty repository.</p>
</div>
<div class="refsect1" title="Synopsis">
<a id="idp43638464"></a>
<h2>Synopsis</h2>
<p>
<code class="literal">svnadmin create REPOS_PATH</code>
</p>
</div>
<div class="refsect1" title="Description">
<a id="idp43640096"></a>
<h2>Description</h2>
<p>Create a new, empty repository at the path provided.
If the provided directory does not exist, it will be
created for
you.<sup>[<a id="idp43641200" href="#ftn.idp43641200" class="footnote">60</a>]</sup> As of
Subversion 1.2, <span class="command"><strong>svnadmin</strong></span> creates new
repositories with the
<code class="literal">FSFS</code> filesystem backend by
default.</p>
<p>While <span class="command"><strong>svnadmin create</strong></span> will create
the base directory for a new repository, it will not
create intermediate directories. For example, if you
have an empty directory named
<code class="filename">/var/svn</code>, creating
<code class="filename">/var/svn/repos</code> will work, while
attempting to create
<code class="filename">/var/svn/subdirectory/repos</code> will
fail with an error. Also, keep in mind that, depending
on where on your system you are creating your
repository, you might need to run <span class="command"><strong>svnadmin
create</strong></span> as a user with elevated privileges
(such as the <code class="literal">root</code> user).</p>
</div>
<div class="refsect1" title="Options">
<a id="idp43650416"></a>
<h2>Options</h2>
<div class="informalexample">
<pre class="screen">
--bdb-log-keep
--bdb-txn-nosync
--config-dir DIR
--fs-type TYPE
--pre-1.4-compatible
--pre-1.5-compatible
--pre-1.6-compatible
</pre>
</div>
</div>
<div class="refsect1" title="Examples">
<a id="idp43652400"></a>
<h2>Examples</h2>
<p>Creating a new repository is this easy:</p>
<div class="informalexample">
<pre class="screen">
$ cd /var/svn
$ svnadmin create repos
$
</pre>
</div>
<p>In Subversion 1.0, a Berkeley DB repository is always
created. In Subversion 1.1, a Berkeley DB repository is
the default repository type, but an FSFS repository can be
created using the <code class="option">--fs-type</code>
option:</p>
<div class="informalexample">
<pre class="screen">
$ cd /var/svn
$ svnadmin create repos --fs-type fsfs
$
</pre>
</div>
</div>
<div class="footnotes">
<br />
<hr width="100" align="left" />
<div class="footnote">
<p><sup>[<a id="ftn.idp43641200" href="#idp43641200" class="para">60</a>] </sup>Remember, <span class="command"><strong>svnadmin</strong></span>
works only with local <span class="emphasis"><em>paths</em></span>, not
<span class="emphasis"><em>URLs</em></span>.</p>
</div>
</div>
</div>
<div class="navfooter">
<hr />
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left"><a accesskey="p" href="svn.ref.svnadmin.c.crashtest.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="svn.ref.svnadmin.html#svn.ref.svnadmin.c">Up</a>
</td>
<td width="40%" align="right"> <a accesskey="n" href="svn.ref.svnadmin.c.deltify.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">svnadmin crashtest </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
<td width="40%" align="right" valign="top"> svnadmin deltify</td>
</tr>
</table>
</div>
<div xmlns="" id="svn-footer">
<hr />
<p>You are reading <em>Version Control with Subversion</em> (for Subversion 1.7), by Ben Collins-Sussman, Brian W. Fitzpatrick, and C. Michael Pilato.<br />
This work is licensed under the <a href="http://creativecommons.org/licenses/by/2.0/">Creative Commons Attribution License v2.0</a>.<br />
To submit comments, corrections, or other contributions to the text, please visit <a href="http://www.svnbook.com/">http://www.svnbook.com/</a>.</p>
</div>
</body>
</html>

View file

@ -0,0 +1,116 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>svnadmin verify</title>
<link rel="stylesheet" href="styles.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2" />
<style type="text/css">
body { background-image: url('images/draft.png');
background-repeat: no-repeat;
background-position: top left;
/* The following properties make the watermark "fixed" on the page. */
/* I think that's just a bit too distracting for the reader... */
/* background-attachment: fixed; */
/* background-position: center center; */
}</style>
<link rel="home" href="index.html" title="Version Control with Subversion [DRAFT]" />
<link rel="up" href="svn.ref.svnadmin.html#svn.ref.svnadmin.c" title="svnadmin Subcommands" />
<link rel="prev" href="svn.ref.svnadmin.c.upgrade.html" title="svnadmin upgrade" />
<link rel="next" href="svn.ref.svnlook.html" title="svnlook—Subversion Repository Examination" />
</head>
<body>
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
<th colspan="3" align="center">svnadmin verify</th>
</tr>
<tr>
<td width="20%" align="left"><a accesskey="p" href="svn.ref.svnadmin.c.upgrade.html">Prev</a> </td>
<th width="60%" align="center">svnadmin Subcommands</th>
<td width="20%" align="right"> <a accesskey="n" href="svn.ref.svnlook.html">Next</a></td>
</tr>
</table>
<hr />
</div>
<div class="refentry" title="svnadmin verify">
<a id="svn.ref.svnadmin.c.verify"></a>
<div class="titlepage"></div>
<a id="idp43908704" class="indexterm"></a>
<div class="refnamediv">
<h2>Name</h2>
<p>svnadmin verify — Verify the data stored in the repository.</p>
</div>
<div class="refsect1" title="Synopsis">
<a id="idp43911856"></a>
<h2>Synopsis</h2>
<p>
<code class="literal">svnadmin verify REPOS_PATH</code>
</p>
</div>
<div class="refsect1" title="Description">
<a id="idp43913440"></a>
<h2>Description</h2>
<p>Run this command if you wish to verify the integrity
of your repository. This basically iterates through all
revisions in the repository by internally dumping all
revisions and discarding the output—it's a good idea
to run this on a regular basis to guard against latent
hard disk failures and <span class="quote"><span class="quote">bitrot.</span></span> If this
command fails—which it will do at the first sign of
a problem—that means your repository has at
least one corrupted revision, and you should restore the
corrupted revision from a backup (you did make a backup,
didn't you?).</p>
</div>
<div class="refsect1" title="Options">
<a id="idp43915808"></a>
<h2>Options</h2>
<div class="informalexample">
<pre class="screen">
--memory-cache-size
--quiet (-q)
--revision (-r) ARG
</pre>
</div>
</div>
<div class="refsect1" title="Examples">
<a id="idp43917680"></a>
<h2>Examples</h2>
<p>Verify a hung repository:</p>
<div class="informalexample">
<pre class="screen">
$ svnadmin verify /var/svn/repos/
* Verified revision 1729.
</pre>
</div>
</div>
</div>
<div class="navfooter">
<hr />
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left"><a accesskey="p" href="svn.ref.svnadmin.c.upgrade.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="svn.ref.svnadmin.html#svn.ref.svnadmin.c">Up</a>
</td>
<td width="40%" align="right"> <a accesskey="n" href="svn.ref.svnlook.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">svnadmin upgrade </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
<td width="40%" align="right" valign="top"> svnlook—Subversion Repository Examination</td>
</tr>
</table>
</div>
<div xmlns="" id="svn-footer">
<hr />
<p>You are reading <em>Version Control with Subversion</em> (for Subversion 1.7), by Ben Collins-Sussman, Brian W. Fitzpatrick, and C. Michael Pilato.<br />
This work is licensed under the <a href="http://creativecommons.org/licenses/by/2.0/">Creative Commons Attribution License v2.0</a>.<br />
To submit comments, corrections, or other contributions to the text, please visit <a href="http://www.svnbook.com/">http://www.svnbook.com/</a>.</p>
</div>
</body>
</html>

Some files were not shown because too many files have changed in this diff Show more