[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: Automatic prefix and suffix for commit messages

From: Ben Collins-Sussman <sussman_at_red-bean.com>
Date: 2007-03-16 15:05:20 CET

Rather than changing the client code (which requires all your users to
use hacked clients), wouldn't it have much easier to just write a
post-commit hook script on the server side, which ran 'svnadmin
setlog' or something?

We always preach that repository hooks scripts aren't allowed to
change versioned data -- that it would mess up the clients. But log
messages are unversioned data; clients don't track them.

On 3/16/07, Krzysiek Pawlik <nelchael@gentoo.org> wrote:
>
> Hi,
>
> I need a way to add some text for every commit message, typing it in by hand is
> quite error-prone. I'm working on same repository from various hosts with the
> same user name, and I need a way to tell on what machine the commit was made.
> I've made a patch for libsvn_client that adds two environment variables:
>
> - SVN_LOG_PREFIX - appends the text before commit message
> - SVN_LOG_SUFFIX - appends the text after commit message
>
> For example:
>
> nelchael@nelchael testing-repo$ export SVN_LOG_PREFIX='Prefix:
> ======================'
> nelchael@nelchael testing-repo$ export SVN_LOG_SUFFIX='Suffix:
> ======================'
> nelchael@nelchael testing-repo$ ls
> total 0
> nelchael@nelchael testing-repo$ touch 1 2 3
> nelchael@nelchael testing-repo$ svn add *
> A 1
> A 2
> A 3
> nelchael@nelchael testing-repo$ svn commit -m 'Testing'
> Adding 1
> Adding 2
> Adding 3
> Transmitting file data ...
> Committed revision 11.
> nelchael@nelchael testing-repo$ svn up
> At revision 11.
> nelchael@nelchael testing-repo$ svn log .
> ------------------------------------------------------------------------
> r11 | nelchael | 2007-03-16 12:55:47 +0100 (Fri, 16 Mar 2007) | 3 lines
>
> Prefix: ======================
> Testing
> Suffix: ======================
> ------------------------------------------------------------------------
> <cut...>
>
> That way it's possible to do something like this in ~/.bashrc:
>
> export SVN_LOG_SUFFIX="From $(hostname)"
>
> Attached patch adds this feature.
>
> The change has to be done in libsvn_client because log_msg can go in by two
> ways: -m on command line (handled in svn) or using $EDITOR (handled in
> libsvn_client).
>
> --
> Krzysiek Pawlik <nelchael at gentoo.org> key id: 0xBC555551
> desktop-misc, desktop-dock, x86, java, apache, ppc...
>
> diff -ur subversion-1.4.3.vanilla/subversion/libsvn_client/commit.c subversion-1.4.3/subversion/libsvn_client/commit.c
> --- subversion-1.4.3.vanilla/subversion/libsvn_client/commit.c 2007-03-16 12:06:33.000000000 +0100
> +++ subversion-1.4.3/subversion/libsvn_client/commit.c 2007-03-16 12:57:51.000000000 +0100
> @@ -1480,6 +1480,22 @@
> else
> log_msg = "";
>
> + char *log_add = NULL;
> + if (apr_env_get(&log_add, "SVN_LOG_PREFIX", pool) == APR_SUCCESS)
> + if (log_add != NULL) {
> + size_t len = strlen(log_msg) + strlen(log_add) + 2;
> + char *new_message = (char*)apr_pcalloc(pool, len);
> + apr_snprintf(new_message, len, "%s\n%s", log_add, log_msg);
> + log_msg = new_message;
> + }
> + if (apr_env_get(&log_add, "SVN_LOG_SUFFIX", pool) == APR_SUCCESS)
> + if (log_add != NULL) {
> + size_t len = strlen(log_msg) + strlen(log_add) + 2;
> + char *new_message = (char*)apr_pcalloc(pool, len);
> + apr_snprintf(new_message, len, "%s\n%s", log_msg, log_add);
> + log_msg = new_message;
> + }
> +
> /* Sort and condense our COMMIT_ITEMS. */
> if ((cmt_err = svn_client__condense_commit_items(&base_url,
> commit_items,
>
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Fri Mar 16 15:05:39 2007

This is an archived mail posted to the Subversion Dev mailing list.