diff --git a/.gitattributes b/.gitattributes index e25b8c0ab65..f90d8b10aec 100644 --- a/.gitattributes +++ b/.gitattributes @@ -647,10 +647,12 @@ Maintenance/rpm/rpmbuild -text Maintenance/svn_server/hooks/post-commit -text Maintenance/svn_server/hooks/post-commit.tmpl -text Maintenance/svn_server/hooks/post-lock.tmpl -text +Maintenance/svn_server/hooks/post-revprop-change -text Maintenance/svn_server/hooks/post-revprop-change.tmpl -text Maintenance/svn_server/hooks/post-unlock.tmpl -text Maintenance/svn_server/hooks/pre-commit.tmpl -text Maintenance/svn_server/hooks/pre-lock.tmpl -text +Maintenance/svn_server/hooks/pre-revprop-change -text Maintenance/svn_server/hooks/pre-revprop-change.tmpl -text Maintenance/svn_server/hooks/pre-unlock.tmpl -text Maintenance/svn_server/hooks/start-commit.tmpl -text diff --git a/Maintenance/svn_server/hooks/post-revprop-change b/Maintenance/svn_server/hooks/post-revprop-change new file mode 100755 index 00000000000..079ffb85f24 --- /dev/null +++ b/Maintenance/svn_server/hooks/post-revprop-change @@ -0,0 +1,50 @@ +#!/bin/sh + +# POST-REVPROP-CHANGE HOOK +# +# The post-revprop-change hook is invoked after a revision property +# has been added, modified or deleted. Subversion runs this hook by +# invoking a program (script, executable, binary, etc.) named +# 'post-revprop-change' (for which this file is a template), with the +# following ordered arguments: +# +# [1] REPOS-PATH (the path to this repository) +# [2] REV (the revision that was tweaked) +# [3] USER (the username of the person tweaking the property) +# [4] PROPNAME (the property that was changed) +# [5] ACTION (the property was 'A'dded, 'M'odified, or 'D'eleted) +# +# [STDIN] PROPVAL ** the old property value is passed via STDIN. +# +# Because the propchange has already completed and cannot be undone, +# the exit code of the hook program is ignored. The hook program +# can use the 'svnlook' utility to help it examine the +# new property value. +# +# On a Unix system, the normal procedure is to have 'post-revprop-change' +# invoke other programs to do the real work, though it may do the +# work itself too. +# +# Note that 'post-revprop-change' 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 +# 'post-revprop-change.bat' or 'post-revprop-change.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. + +REPOS="$1" +REV="$2" +USER="$3" +PROPNAME="$4" +ACTION="$5" + +/usr/lib/subversion/hook-scripts/propchange-email.pl "$REPOS" "$REV" "$USER" "$PROPNAME" -h users.gforge.inria.fr cgal-commits@lists.gforge.inria.fr + diff --git a/Maintenance/svn_server/hooks/post-revprop-change.tmpl b/Maintenance/svn_server/hooks/post-revprop-change.tmpl index b3b80200448..77640e99d5f 100644 --- a/Maintenance/svn_server/hooks/post-revprop-change.tmpl +++ b/Maintenance/svn_server/hooks/post-revprop-change.tmpl @@ -40,7 +40,8 @@ # 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 +# 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.collab.net/repos/svn/trunk/tools/hook-scripts/ and # http://svn.collab.net/repos/svn/trunk/contrib/hook-scripts/ @@ -53,3 +54,4 @@ PROPNAME="$4" ACTION="$5" /usr/lib/subversion/hook-scripts/propchange-email.pl "$REPOS" "$REV" "$USER" "$PROPNAME" watchers@example.org + diff --git a/Maintenance/svn_server/hooks/pre-revprop-change b/Maintenance/svn_server/hooks/pre-revprop-change new file mode 100755 index 00000000000..4c8b5cbfa68 --- /dev/null +++ b/Maintenance/svn_server/hooks/pre-revprop-change @@ -0,0 +1,61 @@ +#!/bin/sh + +# PRE-REVPROP-CHANGE HOOK +# +# The pre-revprop-change hook is invoked before a revision property +# is added, modified or deleted. Subversion runs this hook by invoking +# a program (script, executable, binary, etc.) named 'pre-revprop-change' +# (for which this file is a template), with the following ordered +# arguments: +# +# [1] REPOS-PATH (the path to this repository) +# [2] REVISION (the revision being tweaked) +# [3] USER (the username of the person tweaking the property) +# [4] PROPNAME (the property being set on the revision) +# [5] ACTION (the property is being 'A'dded, 'M'odified, or 'D'eleted) +# +# [STDIN] PROPVAL ** the new property value is passed via STDIN. +# +# If the hook program exits with success, the propchange happens; but +# if it exits with failure (non-zero), the propchange doesn't happen. +# The hook program can use the 'svnlook' utility to examine the +# existing value of the revision property. +# +# WARNING: unlike other hooks, this hook MUST exist for revision +# properties to be changed. If the hook does not exist, Subversion +# will behave as if the hook were present, but failed. The reason +# for this is that revision properties are UNVERSIONED, meaning that +# a successful propchange is destructive; the old value is gone +# forever. We recommend the hook back up the old value somewhere. +# +# On a Unix system, the normal procedure is to have 'pre-revprop-change' +# invoke other programs to do the real work, though it may do the +# work itself too. +# +# Note that 'pre-revprop-change' 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-revprop-change.bat' or 'pre-revprop-change.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. + +REPOS="$1" +REV="$2" +USER="$3" +PROPNAME="$4" +ACTION="$5" # empty on 06/15/2006 + +if [ "$PROPNAME" = "svn:log" ]; then + exit 0; +else + echo "Changing revision properties other than svn:log is prohibited" >&2 + exit 1 +fi diff --git a/Maintenance/svn_server/hooks/pre-revprop-change.tmpl b/Maintenance/svn_server/hooks/pre-revprop-change.tmpl index fda28b94d37..2f2de984892 100644 --- a/Maintenance/svn_server/hooks/pre-revprop-change.tmpl +++ b/Maintenance/svn_server/hooks/pre-revprop-change.tmpl @@ -47,7 +47,8 @@ # 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 +# 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.collab.net/repos/svn/trunk/tools/hook-scripts/ and # http://svn.collab.net/repos/svn/trunk/contrib/hook-scripts/