blob: 4c5a6aa2aad3c7974ed9e350fd81580b67872036 [file] [log] [blame]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Authorization Design for Svn Obliterate</title>
</head>
<body>
<div class="h1">
<h1 style="text-align: center">Authorization Design for Svn Obliterate</h1>
</div>
<div class="h1">
<h2>Table of Contents</h2>
<ol id="toc">
<li><a href="#pre-obliterate">Pre-obliterate hook</a>
</li>
</ol>
</div>
<!--
================================================================
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
====================================================================
This software consists of voluntary contributions made by many
individuals on behalf of CollabNet.
-->
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<div class="h2" id="introduction" title="#introduction">
<h2>Introduction</h2>
<p>Authorization is by a pre-obliterate hook which can base its decision on
the user name and the details of the attempted obliteration.</p>
<p>A post-obliterate hook will be available for reporting or other purposes,
analogous to the post-commit hook. This is not involved in authorization.
</p>
<p>Before a normal commit, two hooks are invoked: start-commit and
pre-commit, with only the list of files available to the first one and
the entire content of the change available to the second one. As
obliteration does not involve transmitting file contents, there is no
reason to have separate start-obliterate and pre-obliterate hooks.</p>
</div>
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<div class="h2" id="pre-obliterate" title="#pre-obliterate">
<h2>Pre-obliterate hook</h2>
<p>Obliteration is authorized by a pre-obliterate hook. A pre-obliterate
hook script must be installed in order to allow any obliteration at all.
This hook is not installed by default.</p>
<p>See the <a href="hooks/pre-obliterate.tmpl">template for a Unix pre-obliterate script</a>.</p>
<p>The pre-obliterate hook is named 'pre-obliterate'.</p>
<p>The pre-obliterate hook is passed the following parameters:</p>
<ol>
<li>REPOS-PATH - the path to this repository</li>
<li>USER - the username of the user attempting the obliteration</li>
</ol>
<p>The pre-obliterate hook is passed the OBLITERATION SET on its standard
input as one or more PATH@REV1:REV2 lines, where PATH is the path within
the repository, starting with '/', and REV1 is the first and REV2 the
last revision number in the range to be obliterated. (For a single
revision, REV1 == REV2 and both are present.)</p>
<p>If the hook returns a zero exit code, the obliteration is performed.
If the hook returns a non-zero exit code, the obliteration is denied
and the client should display an error message and any output that the
hook sent to stderr.</p>
</div>
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
</body>
</html>