Setup Mercurial server with multiple repositories on OpenSUSE

Posted by: senex 12 years, 9 months ago

(Comments)

This tutorial is to configure a Mercurial/hg server for multiple repositories on OpenSUSE.  Be sure to follow these steps on the server you want to host the repositories on.

First make sure Mercurial is installed

zypper install hg

Now create a location for the repositories

mkdir -p /var/hg/repos

Create some project as an example

cd /var/hg/repos
hg init super_proj

Create a config file for hg to know to what to serve (details here).  In /var/hg/hg_repos.conf insert the following

[paths]
/ = /var/hg/repos/*

[web]
push_ssl = false
allow_push = *

Now for a startup script (based on this).  In /etc/init.d/hg_serve put the following

#! /bin/sh
#
# Startup script for mercurial server.
#
### BEGIN INIT INFO
# Provides:       hg server
# Required-Start: $local_fs $remote_fs $syslog $network
# Required-Stop:  $local_fs $remote_fs $syslog $network
# Should-Start:   $time sendmail httpd2 xntpd $named cron ndo2db
# Should-Stop:    sendmail ndo2db
# Default-Start:  3 5
# Default-Stop:   0 1 2 6
# Short-Description: hg server
# Description:    hg server
### END INIT INFO
# Change following ines
APP_BIN=/usr/bin/hg
SRC=/var/hg/repos
# Path to PID file of running mercurial process.
PID_FILE=/var/hg/hg.pid
CONFIG_FILE=/var/hg/hg_repos.conf

state=$1

case "$state" in
'start')
    echo "Mecurial Server service starting."
   ${APP_BIN} serve --webdir-conf=$CONFIG_FILE -d -p 8001 --pid-file ${PID_FILE}
  ;;

'stop')
  if [ -f "${PID_FILE}" ]; then
    PID=`cat "${PID_FILE}"`
    if [ "${PID}" -gt 1 ]; then
      kill -TERM ${PID}
      echo "Stopping the Mercurial service PID=${PID}."
    else
      echo Bad PID for Mercurial -- \"${PID}\"
    fi
  else
    echo No PID file recorded for mercurial
  fi
  ;;

'restart')
  $0 stop
  $0 start
  ;;

*)
  echo "$0 {start|stop|restart}"
  exit 1
  ;;
esac

Now to finalize things

chmod +x /etc/init.d/hg_serve
chkconfig --add hg_serve
service hg_serve start

(If you are using Debian/Ubuntu, to activate the script run "update-rc.d hg_serve defaults")

Now you should be able to access the server via the web.  Just point your web browser to http://<your server ip>:8001

Keep in mind, this setup is for internal servers.  Refer to other resources for securing your data!

More information on Mercurial can be found at http://mercurial.selenic.com/guide/

Currently unrated


Comments

Recent Posts

Archive

2016
2014
2013
2012
2011
2006

Categories

Authors

Feeds

RSS / Atom

Menu