Running Koha from git checkout

From time to time you might want to modify your Koha install from Debian package to point into git checkout.
This page is result of hand-on git tutorial on Koha hackfest in Edinburgh, 2012. Other useful pages on this topic are Git bz configuration and Tips and tricks
== Checkout Koha source from git ==
In this example, we are using hackfest instance to point to our newly created git checkout. In this example, we are using koha_hackfest directory to checkout Koha inside my home directory which is /home/dpavlin and Koha site named hackfest.
 dpavlin@koha-dev:~$ pwd
 /home/dpavlin
 dpavlin@koha-dev:~$ git clone git://git.koha-community.org/Koha-community/Koha.git koha_hackfest
 # git output follows...
== Make local copy of apache config ==
We need to copy apache configuration over since we need to modify paths in it:
 koha-dev:/etc/koha/sites/hackfest# cp /etc/koha/apache-shared-{opac,intranet}.conf .
== Modify paths in koha-conf.xml and apache configuration ===
Here is example of script which will help you modify configuration: 
 koha-dev:/home/dpavlin/koha_hackfest# to=/home/dpavlin/koha_hackfest/ /srv/koha-git-paths.sh /etc/koha/sites/hackfest/koha-conf.xml \
 /etc/koha/sites/hackfest/apache-shared-*.conf /etc/apache2/sites-enabled/hackfest 
Here is a script which does all replacements of paths in configurations:
koha-dev:/home/dpavlin/koha_hackfest# cat /srv/koha-git-paths.sh 
#!/bin/sh -x
conf="/etc/koha/koha-conf.xml /etc/apache2/sites-available/koha /etc/koha/sites/*/koha-conf.xml"
test -z "$to" && to=/srv/koha
if [ ! -z "$*" ] ; then
 conf=$*
else
 echo "Usage: to=/srv/koha $0 /path/to/config/file(s)"
 exit 1
fi
echo "# working on $conf -> $to"
perl -p -i -n -e "s:/usr/share/koha/opac/cgi-bin/opac:$to/opac/cgi-bin/opac:g" $conf
perl -p -i -n -e "s:/usr/share/koha/opac/htdocs/opac-tmpl:$to/koha-tmpl/opac-tmpl:g" $conf
perl -p -i -n -e "s:/usr/share/koha/intranet/htdocs/:$to/koha-tmpl/:g" $conf
perl -p -i -n -e "s:/usr/share/koha/intranet/cgi-bin:$to:g" $conf
perl -p -i -n -e "s:/usr/share/koha/intranet/htdocs/intranet-tmpl:$to/koha-tmpl/intranet-tmpl:g" $conf
perl -p -i -n -e "s:/usr/share/koha/lib:$to:g" $conf
perl -p -i -n -e "s:/usr/share/koha/opac/htdocs:$to/opac:g" $conf
perl -p -i -n -e "s:/usr/share/koha:$to:g" $conf
# fix opac cgi-bin links
perl -p -i -n -e "s:/opac/cgi-bin/opac/:/opac/:g" $conf
/etc/init.d/apache2 reload
== Fix Apache virtual host file ==
As a last step you will have to modify /etc/apache2/sites-enabled/hackfest to include newly modified versions of apache-shared-{opac,intranet}.conf like this:
diff --git a/koha-dev/etc/apache2/sites-enabled/hackfest b/koha-dev/etc/apache2/sites-enabled/hackfest
index 03271b6..38705fe 100644
--- a/koha-dev/etc/apache2/sites-enabled/hackfest
+++ b/koha-dev/etc/apache2/sites-enabled/hackfest
@@ -3,8 +3,9 @@
 # OPAC
 <VirtualHost *:80>
 Include /etc/koha/apache-shared.conf
+ SetEnv PERL5LIB "/home/dpavlin/koha_hackfest/" 
 # Include /etc/koha/apache-shared-disable.conf
- Include /etc/koha/apache-shared-opac.conf
+ Include /etc/koha/sites/hackfest/apache-shared-opac.conf
 
 ServerName hackfest.koha-dev.rot13.org
 SetEnv KOHA_CONF "/etc/koha/sites/hackfest/koha-conf.xml"
@@ -18,8 +19,9 @@
 # Intranet
 <VirtualHost *:8080>
 Include /etc/koha/apache-shared.conf
+ SetEnv PERL5LIB "/home/dpavlin/koha_hackfest/" 
 # Include /etc/koha/apache-shared-disable.conf
- Include /etc/koha/apache-shared-intranet.conf
+ Include /etc/koha/sites/hackfest/apache-shared-intranet.conf
 
 ServerName hackfest.koha-dev.rot13.org
 SetEnv KOHA_CONF "/etc/koha/sites/hackfest/koha-conf.xml"
PERL5LIB is very important because if you don't add it, you will still be using old koha source from Debian package.
== Tweak intranet dir ==
Script included above isn't perfect. so if you get error like:
 Warning: DocumentRoot [/home/dpavlin/koha_hackfest/intranet/htdocs] does not exist
You will have to manually modify DocumentRoot in apache-shared-{opac,intranet}.conf to be like:
 DocumentRoot /home/dpavlin/koha_hackfest/koha-tmpl
in both files.
== Test that everything is setup right ==
Open http://hackfest.koha-dev.rot13.org:8080/cgi-bin/koha/about.pl (or similar URL on your installation) and verify that Perl @INC has /home/dpavlin/koha_hackfest/ in it and *not* /usr/share/koha/lib (which is patch to Debian koha-common installation)
Category:Git