Its all about Ruby On Rails
Subversion
Ruby Script for SVN commit notification with log message, list of updated files and readable colored SVN Diff
Jan 14th
Some days ago I wrote a post about “SVN commit notification” which uses a perl script for sending commit notification with svn diff by mail. In this mail you can find svn diff from the last committed revision. I used to love this mail, soon I realized that it is a bit ugly and difficult to read. Also there were some important information missing. Like the name of user committing the code, the log message etc…
And then I started writing my own ruby script for same purpose but with some addition and modification. Commit Notification Script is that script, you can download and configure it with your SVN post commit hook as follows.
Add following line at the bottom of your post-commit file:
/usr/bin/ruby /var/www/repositories/project/hooks/commit-email.rb "$1" "$2"
* Please remember to change the path of you commit-email ruby script.
Now open commit-email ruby file and modify the following section according to your requirement:
# You can edit below
# Subject prefix
sub = "[test_project@vinsol]" # A project 'test_project' is maitained at vinsol
#list of users who will recieve commit notification
recipients = ["bansalakhil30.10@gmail.com", "akhil@vinsol.com"]
# email which will appear in from email field
from_user = "svn-notify@somedomain.com"
# your smtp settings here
ActionMailer::Base.smtp_settings = { :address => 'localhost', :port => 25, :domain => 'domain.com'}
# Do not edit below this line
You are done with that, now onwards whenever someone commits the code, you’ll get the commit notification mail like:
Get svn commit notification right into your inbox by using svn hook post-commit
Jul 12th
If you wish you can get notification right into your inbox when a team member commits the code. This mail will contain list of files added/deleted along with the svn diff of files that are modified. This needs some extra efforts to setup, but once it is setup it is very helpful.
This can be done by using svn hooks. Yes, svn has inbuilt hook functionality like pre-commit, post-commit, post-lock, post-unlock, pre-lock, pre-unlock, start-commit. We’ll use post-commit hook to get notifications.
First of all get a perl script from here http://svn.collab.net/repos/svn/trunk/tools/hook-scripts/commit-email.pl.in and copy it to hooks directory inside your repository directory, lets say /var/www/repos/repository_name/hooks.
Make sure to rename it as commit-email.pl, ofcourse you need perl installed on your server. Now cd to hooks directory inside you repository directory. Rename post-commit.tmpl to post-commit, and chmod 755 to post-commit and commit-email.pl . Now open post-commit in you favorite editor, and put “/usr/bin/perl /var/www/repos/commit-email.pl –from svn-notify@example.com -s ‘SVN commit notification’ ‘$REPOS’ ‘$REV’ user_whom_to_notify@example.com, another_user_to_notify@example.com” at the bottom of that file. Now open commit-email.pl and make changes in configuration section according to your requirement and server, specially svnlook path.
Congrats!, You are done
.
Now your server will send email notification to user_whom_to_notify@example.com, another_user_to_notify@example.com whenever someone commits.
**For security reasons, the Subversion repository executes hook scripts with an empty environment that is, no environment variables are set at all, not even $PATH or %PATH%. Because of this, a lot of administrators are baffled when their hook script runs fine by hand,but doesn’t work when run by Subversion. Be sure to explicitly set environment variables in your hook and/or use absolute paths to programs.
It worked for me, Please let me know if it works for you too.
Is SVN really atomic?
Jul 9th
I am just wondering if svn is really atomic. Actually some days ago I freezed rails and tried to commit but due to some network problem the commit process failed. And then I found some of those files under version control, which should not be there if snv is atomic. I tried many times to commit after svn delete those files, but stuck with the same problem. May be I misunderstood some thing about svn. Did somebody also faced same problem?
Ruby script for creating new rails project and initial SVN import (with ignoring/removing log/other files)
Feb 8th
Some days go I wrote a bash script for creating new rails project and initial SVN import (with ignoring/removing log/other files). And I received many comments if I could write a ruby script for this stuff. Hence here is the ruby script for creating new rails project and initial SVN import (with ignoring/removing log/other files). Copy this script to any of your directory as “create_rails_with_subversion.rb” and execute by issuing “ruby create_rails_with_subversion.rb ”
You may need command line subversion for windows.
I have tested it at my windows and linux machine, if it not work for you please let me know.
Also I love to have your comments….
Bash script for creating new rails project and initial SVN import (with ignoring/removing log/other files)
Jan 10th
Many times we need to create a new rails project and import it to SVN repository. Each time we have to repeat same commands for creating new rails project, Initial import to SVN, Ignoring *.log files, move database.yml to database.example, ignoring tmp/sessions etc.. etc..
So I have written a bash script that do all this stuff, all you need to do is copy this Bash script (for creating new rails project and initial SVN import with ignoring/removing log/other files) to any of your directory with name “create_rails_with_subversion” and execute this script by issuing ./create_rails_with_subversion & follow screen instructions.
This will:
- create a new rails project
- initial import to SVN
- remove and ignore all log files from svn
- remove and ignore sessions, cache sockets files from tmp dir
- move database.yml to database.example
- ignore database.yml
I also love to have your feedbacks…
UPDATE: I have modified this script, now it doesn’t remove tmp dir, it just ignore content in tmp/sessions, tmp/sockets and tmp/caches
UPDATE2: Script again modified , now it also freeze rails (you have to specify version).
