Windows Pre-commit hook for comment length Subversion Windows Pre-commit hook for comment length Subversion windows windows

Windows Pre-commit hook for comment length Subversion


This is a .bat file to require there is a comment. It checks for the existence of at least one character in the comment.

 @echo off   :: Stops commits that have empty log messages.         @echo off   setlocal   rem Subversion sends through the path to the repository and transaction id   set REPOS=%1   set TXN=%2            svnlook log %REPOS% -t %TXN% | findstr . > nul   if %errorlevel% gtr 0 (goto err) else exit 0   :err   echo. 1>&2   echo Your commit has been blocked because you didn't enter a comment. 1>&2   echo Write a log message describing the changes made and try again. 1>&2 echo Thanks 1>&2 exit 1

This file sits in the /hooks folder of the repository, named pre-commit.bat. If you need a minimum amount of characters, the line to modify is

svnlook log %REPOS% -t %TXN% | findstr . > nul

So if you wanted a minimum of 10 characters, you need to have 10 .'s rather than just one

svnlook log %REPOS% -t %TXN% | findstr .......... > nul

More advanced options for the findstr command will let you do fancier checks (certain character sets, ect)


I use SubversionNotify, it probably does more than what you need, but is pretty simple to set up.


I have a pre-commit hook that can do exactly what you want. Plus a lot more.

  • You can specify a minimum length of commit comment.
  • You can match the commit comment against a regular expression. Not only can you specify a length, but you can also specify certain parameters. For example, does the commit comment contain a bug number that your defect tracking system uses, so you can trace back the change to a particular defect?

It also allows you to do the following:

  • Set various commit permissions against particular files or directories:
    • read-write: User can checkout and commit these items.
    • read-only: User can checkout this item, but can't commit changes.
    • add-only: User can add a directory via svn cp, but not commit any changes. This is perfect for the /tags directory where you are allowed to make a tag, but not modify the tag.
    • no-delete: Users can commit changes and add new files, but not delete these files.
    • no-add: Users can only commit changes, and not add or delete files in a commit.

And, it also allows you to do this:

  • Ban certain file names via regular expressions of globbing,
  • Require certain files or directories have a particular property set to a particular value. Very useful for things like making sure Unix shell scripts, Unix Makefiles, and Windows Batch files have the correct line ending, or svn:ignore is set, so users don't accidentally commit in files they shouldn't commit.
  • Require certain revisions properties to be set with certain values. This is how you check commit messages, but saying that svn:log must match certain regular expressions.

This pre-commit script is written in Perl. By default, Perl comes with Unix, Mac, and Linux servers. Unfortunately, it isn't included on Windows computers. Fortunately, there are several open source, free, and easy to install Perl packages for the PC such as ActivePerl and Strawberry Perl