subversion-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Stefan Sperling <s...@elego.de>
Subject [VOTE] merge the log-message-templates branch to trunk
Date Wed, 10 Sep 2014 17:06:07 GMT
I've been working on the log-message-templates branch recently.
This branch was started by cmpilato a long time ago but for some
reason sat around untouched ever since. It's now been overhauled
by me with much help from Bert.

I believe the functionality is useful and complete. One user I have
in mind who would probably make use of this is the FreeBSD project.
They patch their Subversion clients to define a log message template
with the following content:
[[[
PR:
Submitted by:
Reviewed by:
Approved by:
Obtained from:
MFC after:
MFH:
Relnotes:
Security:
Sponsored by:
]]]
The patch is here:
http://svnweb.freebsd.org/ports/head/devel/subversion/files/extra-patch-fbsd-template?revision=361003&view=markup
With the changes on the log-message-templates branch, they can drop their
custom patch and add their log message template to an svn:log-template
property instead.

I believe many other users might find this feature useful as well.

The current diff between the trunk and branch is this:
svn diff ^/subversion/trunk@1623990 ^/subversion/branches/log-message-templates@r1624055

Because there was quite a bit of back-and-forth on this branch
here's a quick overview of what the branch implements right now:

[[[
Introduce a new svn:log-template property. This is an inherited property
which can be used to define static log message templates to be inserted
into the default log message by the client.

This branch adds the following public API elements:

  SVN_PROP_INHERITABLE_LOG_TEMPLATE: New property name.
  svn_client_get_log_message_template(),
  svn_client_get_log_message_templates_for_commit_items(): New functions
   which provide easy access to log templates defined for a given path
   or URL, or a set of commit items. 

For a given path, the svn:log-template property is always inherited
from the nearest ancestor which has the property set on itself.
For a given commit, however, the set of commit target paths is arbitrary,
so multiple templates may apply, each contributed by one or more paths
in the commit target list.

For example, with:

  $ svn ci iota.txt epsilon/gamma.txt

we might see the following default log message:

  --Log message template from '/'--
  The root log message template.
  This always applies since it is defined at the root of the repository.
  --Log message template from 'trunk/epsilon'--
  This is a template set on 'trunk/epsilon', which in this example
  was contributed by the commit target epsilon/gamma.txt.
  --This line, and those below, will be ignored--

The "--Log message template from --" line does not appear if only
a single template applies to the commit.

A rough overview of the files changed (see branch commit log for details):

* subversion/tests/libsvn_client/client-test.c
  (test_log_message_template): New test.

* subversion/svn/cl.h
  (svn_cl__make_log_msg_baton): Change 'config' hash parameter to a
   client context 'ctx'. 'config' is still available as 'ctx->config'.

* subversion/svn/move-cmd.c, subversion/svn/copy-cmd.c,
  subversion/svn/commit-cmd.c, subversion/svn/delete-cmd.c,
  subversion/svn/mkdir-cmd.c, subversion/svn/import-cmd.c,
  subversion/svn/propedit-cmd.c: Adjust callers of svn_cl__make_log_msg_baton().

* subversion/svn/util.c
  (log_msg_baton): Store entire client context instead of just the config hash.
  (svn_cl__make_log_msg_baton): Adjust accordingly.
  (svn_cl__get_log_message): Call the new API function
   svn_client_get_log_message_templates_for_commit_items() to obtain
   log templates and add the templates to the default log message.

* subversion/include/svn_props.h
  (SVN_PROP_INHERITABLE_LOG_TEMPLATE): New property.

* subversion/include/svn_client.h
  (svn_client_get_log_message_template,
   svn_client_get_log_message_templates_for_commit_items): New API functions.

* subversion/libsvn_client/commit_util.c
  (svn_client_get_log_message_template,
   svn_client_get_log_message_templates_for_commit_items): Provide convenient
   functionality for clients wishing to support log message templates.
]]]

Mime
View raw message