From 3.0 to 3.1
Make sure you view this upgrade guide from the master
branch for the most up to date instructions.
IMPORTANT!
In this release we moved Resque jobs under own gitlab namespace
Despite a lot of advantages it requires from our users to replace gitolite post-receive hook with new one.
Most of projects has post-receive file as symlink to gitolite /home/git/.gitolite/hooks/post-receive
. But some of them may have a real file. In this case you should rewrite it with symlink to gitolite hook.
I wrote a bash script which will do it automatically for you. Just make sure all path inside is valid for you
1. Stop server & resque
sudo service gitlab stop
2. Update GitLab
# Get latest code
sudo -u gitlab -H git fetch
sudo -u gitlab -H git checkout v3.1.0
# Install new charlock_holmes
sudo gem install charlock_holmes --version '0.6.9'
# The Modernizr gem was yanked from RubyGems. It is required for GitLab >= 2.8.0
# Edit `Gemfile` and change `gem "modernizr", "2.5.3"` to
# `gem "modernizr-rails", "2.7.1"``
sudo -u gitlab -H vim Gemfile
# Install gems for MySQL
sudo -u gitlab -H bundle install --without development test postgres sqlite
# Migrate db
sudo -u gitlab -H bundle exec rake db:migrate RAILS_ENV=production
3. Update post-receive hooks
Gitolite 3
Step 1: Rewrite post-receive hook
# Rewrite hook for gitolite 3
sudo cp ./lib/hooks/post-receive /home/git/.gitolite/hooks/common/post-receive
sudo chown git:git /home/git/.gitolite/hooks/common/post-receive
Step 2: Rewrite hooks in all projects to symlink gitolite hook
# 1. Check for valid path
sudo -u gitlab -H vim lib/support/rewrite-hooks.sh
# 2. Run script
sudo -u git -H lib/support/rewrite-hooks.sh
Gitolite v2
Step 1: rewrite post-receive hook for gitolite 2
sudo cp ./lib/hooks/post-receive /home/git/share/gitolite/hooks/common/post-receive
sudo chown git:git /home/git/share/gitolite/hooks/common/post-receive
Step 2: Replace symlinks in project to valid place
#!/bin/bash
src="/home/git/repositories"
for dir in `ls "$src/"`
do
if [ -d "$src/$dir" ]; then
if [ "$dir" = "gitolite-admin.git" ]
then
continue
fi
project_hook="$src/$dir/hooks/post-receive"
gitolite_hook="/home/git/share/gitolite/hooks/common/post-receive"
ln -s -f $gitolite_hook $project_hook
fi
done
4. Check app status
# Check APP Status
sudo -u gitlab -H bundle exec rake gitlab:app:status RAILS_ENV=production
5. Start all
sudo service gitlab start