Next: , Previous: history file, Up: Repository Administrative Files


Specifies programs to run on the log message for each commit, based on what's being committed. Each line consists of a regular expression followed by a command template:


The PROGRAM is passed the log message on its standard input.

Several special codes are available for use in the arguments: %s expands to the names of the files being committed, %V expands to the old revisions from before the commit, and %v expands to the new revisions after the commit. When there are multiple files involved, each element of the expansion is separated from the others by whitespace. For example, in a commit involving two files, %s might expand into hello.c README.txt, and %v into 1.17 1.12.

You may combine codes inside curly braces, in which case, each unit of expansion is internally separated by commas and externally separated from the other units by whitespace. Continuing the previous example, %{sv} expands into hello.c,1.17 README.txt,1.12.

If any % expansion is done at all, the expansion is prefixed by the path to the project subdirectory (relative to the top of the repository). So that last expansion would actually be:

     myproj  hello.c,1.17  README.txt,1.12

If PROGRAM exits with nonzero status, the commit fails; otherwise, it succeeds. (See also the Shared Syntax section in this chapter.)

Karl Fogel wrote this book. Buy a printed copy via his homepage at

copyright  ©  January 18 2019 sean dreilinger url: