Subversion: Commit Pre-Hook to Enforce a Code Freeze

It is almost all done for you in this script. Copy this script in /path/to/svn/<repos>/hooks, call it pre-commit, change the permissions to make it executable. Then, all you have to do is add the following below the if there is bogosity comment in test_path_change:

  ### Test the path change as you see fit.  If there is bogosity,
  ### write to sys.stderr and return non-zero.
  if "trunk/" in path.lower():
    sys.stderr.write("Code Freeze: Nothing can be committed to trunk anymore.")
    return 1
  return 0

Simple (if you don’t have any file/directory containing the word “trunk/” somewhere…1). It is interesting to note the "blah" in string python notation which I have just discovered—quite handy.

1 You’ll then have a bit smarter, like checking the presence of the word branches, etc.