Only to record.
I solved the problem looking for ephemeral properties on commit. They are
only sent for 1.8 clients.
To do this I changed my start-commit hook was to this:
# The start-commit hook is invoked before a Subversion txn is created
# in the process of doing a commit. Subversion runs this hook
# by invoking a program (script, executable, binary, etc.) named
# 'start-commit' (for which this file is a template)
# with the following ordered arguments:
#  REPOS-PATH (the path to this repository)
#  USER (the authenticated user attempting to commit)
#  CAPABILITIES (a colon-separated list of capabilities reported
# by the client; see note below)
#  TXN-NAME (the name of the commit txn just created (1.8 or
out,err = child.communicate()
return ([p.strip() for p in out.strip().split('\n')],'')
child = subprocess.Popen(['/usr/bin/svnlook','log','-t',txn,repos],
out,err = child.communicate()
capabilities = sys.argv.split(':')
if 'mergeinfo' not in capabilities:
sys.stderr.write('Commits from merge-tracking-unaware clients are not
'Please upgrade to Subversion 1.5 or newer.\n')
repos = sys.argv
txn = sys.argv
log,err = get_svn_txn_log(repos,txn)
sys.stderr.write('Error inspecting commit log: '+err)
elif not log.strip():
proplist,err = get_svn_txn_proplist(repos,txn)
sys.stderr.write('Error inspecting commit properties: '+err)
elif 'svn:txn-user-agent' in proplist:
sys.stderr.write('Commits without log message are not permitted.\n'
'Please enter the log message.\n')
On Tuesday, March 31, 2015 at 12:34:36 PM UTC-3, Carlos Alberto Costa
> Sorry for asking without proprer documentation read and thanks.
> There is a way to "detect" that the log message is not sent because of an
> older client version?
> My intent is to block the commit early if I can.
> On Tuesday, March 31, 2015 at 12:28:37 PM UTC-3, Andreas Stieger wrote:
>> > validate the log message [...] start-commit [...]
>> > [...]
>> > if the client is using an older version (like 1.7) the commit message
>> > using svnlook is always empty durng the start-commit. In this case the
>> > message is available only during pre-commit.
>> Yes, and this is expected, documented  and will not change. Quoting:
>> Note: Subversion does not require that commit transaction properties
>> (such as the revision log message) be attached to the transaction as part
>> of its initialization. As such, some clients will still not provide that
>> information to the server until after the start-commit hook has been
>> invoked. Here is a list of such clients we are aware of:
>> Pre-1.8 clients communicating via HTTP
>> Clients communicating via HTTP when mod_dav_svn's
>> "SVNAdvertiseV2Protocol" option has been set to "off"
>> Administrators should consider modularizing the tests that their hooks
>> perform on transaction properties, invoke those tests from both the
>> start-commit and pre-commit hook scripts."
>> You will need to run the same hook again as pre-commit.
Received on 2015-03-31 20:29:25 CEST