Bil_K
March 10, 2006, 10:29pm
#1
OK, I give up.
Can someone (Kou?) please sketch out how to intercept
a Subversion transaction with a pre-commit hook and
throw each file matching, say, /.rb$/ to some StyleChecker?
Based on Kou’s svnlook,
https://svn.collab.net/repos/svn/trunk/tools/examples/svnlook.rb
and the bindings,
http://svn.collab.net/repos/svn/trunk/subversion/bindings/swig/ruby/svn/
it seems that Svn:Fs might be the answer, but I’m having
trouble figuring out SVN transactions – the manual says
very little about these creatures.
Thanks,
Bil_K
March 10, 2006, 10:44pm
#2
Bil K. wrote:
and the bindings,
http://fun3d.larc.nasa.gov
I don’t know about pre-commit hooks, but here’s a post-commit hook I
wrote the other day. Not fancy or anything, but will maybe give you an
idea?
I just used the normal ‘svnlook’.
deleted = Array.new
modified << changed[1…-1]
end
repository = ARGV[0]
From: SVN [email protected]
smtp.send_message(message, '[email protected] ', recipients)
}
-Justin
Bil_K
March 10, 2006, 11:06pm
#3
Justin C. wrote:
I don’t know about pre-commit hooks, but here’s a post-commit hook I
wrote the other day. Not fancy or anything, but will maybe give you an
idea?
Thanks.
I just used the normal ‘svnlook’.
If you have the SVN Ruby bindings compiled, you could use Kouhei’s
commit-email.rb for post-hook mailings (and RSS feed):
https://svn.collab.net/repos/svn/trunk/tools/hook-scripts/commit-email.rb
If you want HTML output also, see
https://svn.collab.net/repos/svn/trunk/tools/examples/svnlog2html.rb
Regards,
Bil_K
March 13, 2006, 4:00pm
#4
Hi,
In [email protected]
“svn pre-commit hook” on Sat, 11 Mar 2006 06:28:43 +0900,
Bil K. [email protected] wrote:
Can someone (Kou?) please sketch out how to intercept
a Subversion transaction with a pre-commit hook and
throw each file matching, say, /.rb$/ to some StyleChecker?
What about attached script?
You can use the attached script with the following
pre-commit script:
#!/bin/sh
REPOS="$1"
TXN="$2"
/…/ruby
/…/pre-check-file.rb “$REPOS” “$TXN”
-p PATTERN1 -c CHECK_COMMAND1
-p PATTERN2 -c CHECK_COMMAND2
…
|| exit 1
exit 0
For example (reject space indented Ruby scripts and C programs):
#!/bin/sh
REPOS="$1"
TXN="$2"
/usr/bin/ruby
~/work/ruby/pre-check-file.rb “$REPOS” “$TXN”
-p .rb$ -c 'grep -v ^ ’
-p .c$ -c 'grep -v ^ ’
|| exit 1
exit 0
Thanks,
Bil_K
March 13, 2006, 4:16pm
#5
Kouhei S. wrote:
Hi,
Hello.
What about attached script?
Excellent, Thanks!
This is the nugget I most craved:
def changed_paths(base_rev=nil)
base_rev ||= @txn.base_revision
base_root = @fs.root (base_rev)
editor = Svn::Delta::ChangedEditor.new(@root , base_root)
base_root.dir_delta(’’, ‘’, @root , ‘’, editor)
(editor.added_files + editor.updated_files).uniq.sort
end
Thanks again,