blob: b835f22b16af8970f15e123fdd1398b0bad01ab1 [file] [log] [blame]
#!/bin/sh
# PRE-OBLITERATE HOOK
#
# The pre-obliterate hook is invoked before an obliteration. Subversion
# runs this hook by invoking a program (script, executable, binary, etc.)
# named 'pre-obliterate' (for which this file is a template), with the
# following ordered arguments and input:
#
# [1] REPOS-PATH (the path to this repository)
# [2] USER (the username of the person trying to obliterate)
#
# [STDIN] OBLITERATION-SET (a list of PATH@REV, one per line)
#
# If the hook program exits with success, the obliteration happens; but
# if it exits with failure (non-zero), the obliteration doesn't happen.
# The hook program can use the 'svnlook' utility to examine the
# existing history of the repository.
#
# NOTE: Unlike most other hooks, this hook MUST exist for obliteration
# to be enabled. If the hook does not exist, Subversion
# will behave as if the hook were present, but failed. The reason
# for this is that obliteration is irreversible: the old data is gone
# forever.
#
# WARNING: We recommend not enabling the hook until:
# - it is needed;
# - there is a good repository back-up and restore procedure operating;
# - the user name(s) to be allowed obliteration privileges are
# authenticated user names with strong passwords;
# - the hook script has been tested.
#
# On a Unix system, the normal procedure is to have 'pre-obliterate'
# invoke other programs to do the real work, though it may do the
# work itself too.
#
# Note that 'pre-obliterate' must be executable by the user(s) who will
# invoke it (typically the user httpd runs as), and that user must
# have filesystem-level permission to access the repository.
#
# On a Windows system, you should name the hook program
# 'pre-obliterate.bat' or 'pre-obliterate.exe',
# but the basic idea is the same.
#
# The hook program typically does not inherit the environment of
# its parent process. For example, a common problem is for the
# PATH environment variable to not be set to its usual value, so
# that subprograms fail to launch unless invoked via absolute path.
# If you're having unexpected problems with a hook program, the
# culprit may be unusual (or missing) environment variables.
#
# Here is an example hook script, for a Unix /bin/sh interpreter.
# For more examples and pre-written hooks, see those in
# the Subversion repository at
# http://svn.apache.org/repos/asf/subversion/trunk/tools/hook-scripts/ and
# http://svn.apache.org/repos/asf/subversion/trunk/contrib/hook-scripts/
REPOS="$1"
USER="$2"
if [ "$USER" = "the-admin" ]; then exit 0; fi
echo "Obliteration is not enabled for normal users" >&2
exit 1