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

Re: Precommit hook script for Windows. PLS HELP

From: Dang Nguyen <haidangwa_at_comcast.net>
Date: Wed, 09 Jul 2008 05:50:32 -0700

It depends on your SVN client how you set the bugtraq properties, but
keep in mind, setting them are done on a working copy and committed into
the repository. Here's a good write-up that I used as a guide when
setting up my implementation. His blog contains a good description of
all the bugtraq properties you can set.

http://markphip.blogspot.com/2007/01/integrating-subversion-with-your-issue.html

In his blog, he's using Subclipse to set the properties, but you can do
the same thing using TortoiseSVN or the svn command line client.

Uzo okoye wrote:
> Hi Dang,
>
> How can you from the properties
>
> set things like force users to enter a number,
> append/prepend the reference to the commit log.
>
> I know they can be prompted for an ID but not forced to imput an ID.
>
> Thanks
>
>
> ... Cast your burdens upon the Lord for He cares for you ...
> Enough to die for you!!!
> ------------------------------------------------------------------------
>
>
>
>
> ------------------------------------------------------------------------
> Date: Fri, 4 Jul 2008 06:53:38 -0700
> From: haidangwa_at_comcast.net
> To: kejike80_at_hotmail.com; users_at_subversion.tigris.org
> Subject: Re: Precommit hook script for Windows. PLS HELP
>
> Depending on what you want to do with the bug reference ID after it's
> committed, but in general, I would use the bugtraq properties instead
> of writing a hook script. Most svn clients, like TortoiseSVN, support
> bugtraq properties and you can control the UI by setting them on your
> committed folders. With the bugtraq properties, you can set things
> like force users to enter a number, customize the label for the
> field, and append/prepend the reference to the commit log. In my
> opinion, though, I would not force the users to enter a bug number,
> because not all commits are a result of a bug.
>
> In my implementation, I use the bugtraq properties to let developers
> enter a Bugzilla bug number. When the developers commit, they can
> enter one or more bug numbers in the field (comma-separated). The bug
> number is appended to the commit log message. In my case, I have it
> state, "Resolves: %BUGID%", where %BUGID% is automatically replaced by
> the number(s) they've entered in the bugtraq field. Additionally, I
> have a post-commit hook script that will parse for the appended string
> and get the bug numbers. From there, the hook script sends an email
> to Bugzilla's email_in.pl script to automatically mark the bug
> "Resolved:FIXED" and adds a bug comment with the SVN revision number
> and a link to WebSVN showing the files changed. Google for
> "Subversion Bugzilla integration" and you'll find lots of info.
>
> In my case, the only scripting I had to do was the part that sends an
> email to Bugzilla to resolve the bug, and it was a VERY short Nant
> script. If all you need is to append the bug reference to your commit
> log, then there's no scripting needed. Just set the bugtraq
> properties on all of your folders.
>
>
> To your other inquiry, a hook script can be written in anything you
> want. However, you will need to create a pre-commit.bat (.cmd) or
> post-commit.bat (.cmd) file in your <repo>\hooks folder that invokes
> your script. In my case, I invoke a Nant script.
>
> My post-commit.cmd looks like this:
>
> nant.exe -buildfile:commit-hooks.build -D:repository.path=%1
> -D:revision=%2
>
> /%1 and %2 are passed into the hook script by Subversion./
>
> (ref:
> http://codebetter.com/blogs/jeffrey.palermo/archive/2007/12/13/easily-extend-post-commit-hook-in-subversion-using-nant-email-anyone.aspx)
>
> Uzo okoye wrote:
>
> Hi,
>
>
>
> I am a newbie to Subversion and have no clue to writing scripts!!!
>
>
>
> I am trying to write a script for windows so that it forces users
> to add a bug reference id during a commit.
>
>
>
> Now for starters
>
>
>
> I want to know if its possible to write the hook script directly
> as a bat file and get it to work or must I to use sth else like
> Python?
>
>
>
> Sb helped me write the script in python and in trying to execute it,
>
> I realised that the I don’t have the utility SVNLOOK installed ,
> so to resolve this I manually copied the file across the bin
> directory.
>
> I still get errors. I don’t know why.
>
>
>
> This is the python script written for the hook and the
> corresponding error message
>
> ---------------------------------------------------------------------------
>
> #!/usr/bin/python
>
> # commit acceptance python client for SVN
>
>
>
> import os
>
> import re
>
> import sys
>
> import urlparse
>
>
>
> # configure svnlook path
>
> svnlookPath = '\"C:\\Program Files\\VisualSVN
> Server\\bin\\svnlook.exe\"'
>
>
>
> # get committer
>
> try:
>
> f = os.popen(svnlookPath + ' author -t ' + sys.argv[2]
> + ' ' + sys.argv[1])
>
> committer = f.read()
>
> if f.close():
>
> raise 1
>
> committer = committer.rstrip("\n\r")
>
> except:
>
> print >> sys.stderr, 'Unable to get committer with
> svnlook.'
>
> print >> sys.stderr, svnlookPath
>
> print >> sys.stderr, sys.argv[1]
>
> print >> sys.stderr, sys.argv[2]
>
> sys.exit(1)
>
>
>
> # get commit message
>
> try:
>
> f = os.popen(svnlookPath + ' log -t ' + sys.argv[2] +
> ' ' + sys.argv[1])
>
> commitMessage = f.read()
>
> if f.close():
>
> raise 1
>
> commitMessage = commitMessage.rstrip('\n\r')
>
> except:
>
> print >> sys.stderr, 'Unable to get commit message
> with svnlook.'
>
> print >> sys.stderr, svnlookPath
>
> print >> sys.stderr, sys.argv[1]
>
> print >> sys.stderr, sys.argv[2]
>
> sys.exit(1)
>
>
>
> # print arguments
>
> # print >> sys.stderr, 'Committer: ' + committer
>
> print >> sys.stderr, 'Commit message: "' + commitMessage + '"'
>
>
>
> if (re.match('^[a-zA-Z]+-[0-9]+([\s]+|$)',commitMessage)):
>
> print >> sys.stderr, 'Commit accepted.'
>
> sys.exit(0)
>
> else:
>
> print >> sys.stderr, 'Commit rejected: This repository
> requires a commit message to begin with a REF issue number.\n\reg
> REFPRJ-1'
>
> sys.exit(1)
>
>
>
> Commit Error Msg
>
>
>
>
>
> Command: Commit
>
> Modified: data\TEST\added2.sql
>
> Sending content: data\TEST\added2.sql
>
> Error: Commit failed (details follow):
>
> Error: Commit blocked by pre-commit hook (exit code 1) with output:
>
> Error: Unable to get committer with svnlook.
>
> Error: "C:\Program Files\TortoiseSVN\bin\svnlook.exe"
>
> Error: C:\data2
>
> Error: 80-1
>
> Finished!:
>
>
>
> Any help will be appreciated to resolving this.
>
>
>
> Thanks
>
>
>
>
>
> ... Cast your burdens upon the Lord for He cares for you ...
> Enough to die for you!!!
> ------------------------------------------------------------------------
>
>
>
> ------------------------------------------------------------------------
> Get fish-slapping on Messenger! Play Now
> <http://clk.atdmt.com/UKM/go/101719805/direct/01/>
>
>
> ------------------------------------------------------------------------
> Get Messenger on your Mobile! Get it now!
> <http://clk.atdmt.com/UKM/go/101719964/direct/01/>
Received on 2008-07-09 14:50:57 CEST

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

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.