I've been a fan and user of Atlassian's excellent Jira since the company was founded back in 2002, but I needed the ability to set up some quick-hit bug/task/wiki sites for smaller consulting projects and neither the month-to-month hosted model nor the enterprise license made good economic sense. I opted for the an install of Redmine, and while it's no Jira, I've been reasonably happy with it. (The one big headache was getting SMTP over TLS working.)
Redmine supports integration with Git repositories on a per-project
basis and will link commits to issues based on the presence of
keywords and issue identifiers (e.g., "refs #123"). The
way the integration is implemented works well if the Git repository is
hosted on the same machine as the Remine instance, but I host all
customer and internal work on github.
Here's a quick recipe to bridge the gap.
First, add an ssh key for the redmine user to your
github account.
Next, create a home for the following shell script, e.g.,
/opt/redmine_extras/bin and a home for Git repositories
on the server, e.g., /var/redmine/git_repositories and
ensure that the redmine user has write privileges for the
repositories. Here's the pull_git script:
#!/bin/bash
export REPOS=/var/redmine/git_repositories
export REDMINE_HOME=/opt/redmine-0.8.2
export LOGFILE=/var/log/redmine_extras.log
function log_prefix {
echo -n `date '+%Y/%m/%d %H:%M:%S'`" ["$$"] ${2}"
}
for i in `ls -d ${REPOS}/*.git`; do
cd $i;
log_prefix && echo 'Processing git repository from '${i}'...';
/usr/local/bin/git --bare fetch origin :master
done
cd ${REDMINE_HOME}
log_prefix && echo 'Updating Redmine...'
/usr/local/bin/ruby script/runner "Repository.fetch_changesets" -e production
Then (I'm logged in as root) add the command to the
redmine user's crontab:
# echo '*/10 * * * * /opt/redmine_extras/bin/pull_git 2>&1 >> /var/log/redmine_extras.log'\ | crontab -u redmine -
Now, for each repository, say foo and your github user
is bar, you will track from Redmine, do:
# cd /var/redmine/git_repositories # sudo -u redmine -H git clone --bare git@github.com:bar/foo.git # cd foo.git # sudo -u redmine -H git --bare remote add origin git@github:bar/foo.git
Ensure that the Redmine project points to the local copy of the Git repository, and the revisions should start getting syncronized every ten minutes.

Add a comment.









