(Traduction du texte original en anglais : hgserve)
Mercurial possède un serveur web léger embarqué qui peut être utilisé pour parcourir un dépôt avec un navigateur web ou pour autoriser une machine distante à rapatrier depuis votre machine. Pour l'utiliser, il suffit de faire :
$ hg serve
Et de faire pointer votre navigateur sur http://localhost:8000/.
Le serveur web embarqué ne contient pas toutes les fonctionnalités des autres serveurs web comme le contrôle d'accès, l'identification, SSL, etc. Ces dernières sont particulièrement utiles si vous voulez envoyer de manière sécuriser vers un dépôt sur le web. Donc, si vous souhaitez mettre en place un serveur permanent, vous devrez probablement utiliser un serveur en CGI.
Ce qui suit détaille les options pour utiliser le serveur HTTP de mercurial :
bash-2.05$ hg --version
Mercurial Distributed SCM (version 1.2.1)
Copyright (C) 2005-2009 Matt Mackall <mpm@selenic.com> and others
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
bash-2.05$ hg help serve
hg serve [OPTION]...
export the repository via HTTP
Start a local HTTP repository browser and pull server.
By default, the server logs accesses to stdout and errors to
stderr. Use the "-A" and "-E" options to log to files.
options:
-A --accesslog name of access log file to write to
-d --daemon run server in background
--daemon-pipefds used internally by daemon mode
-E --errorlog name of error log file to write to
-p --port port to listen on (default: 8000)
-a --address address to listen on (default: all interfaces)
--prefix prefix path to serve from (default: server root)
-n --name name to show in web pages (default: working dir)
--webdir-conf name of the webdir config file (serve more than one repo)
--pid-file name of file to write process ID to
--stdio for remote clients
-t --templates web templates to use
--style template style to use
-6 --ipv6 use IPv6 in addition to IPv4
--certificate SSL certificate file
use "hg -v help serve" to show global options
bash-2.05$Voici un script pour démarrer et arrêter le serveur HTTP embarqué dans Mercurial.
bash-2.05$ cat hg.init
#!/sbin/sh
#
# Script de démarrage pour le serveur Mercurial.
#
# Changez les lignes suivantes selon votre environnement
APP_BIN=/usr/bin/hg
SRC=/export/src
SRCNAME=" package source"
# Chemin vers le fichier PID du processus hg.
PID_FILE=/var/adm/hg.pid
state=$1
case "$state" in
'start')
echo "Démarrage du serveur Mercurial."
(cd ${SRC} ;${APP_BIN} serve --name "${SRCNAME}" -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 "Arrêt du service Mercurial PID=${PID}."
else
echo Mauvais PID pour Mercurial -- \"${PID}\"
fi
else
echo Pas de fichier PID sauvé pour mercurial
fi
;;
*)
echo "$0 {start|stop}"
exit 1
;;
esac
bash-2.05$