Mercurialda repoları web üzerinden paylaşıma açmak

Merhabalar,

Bu yazımda Linux üzerindeki bir Apache sunucusu üzerinden mercurial repolarının paylaşımını açıklamaya çalışacağım. Basit bir sırası var, aşağıdaki maddeleri takip edin lütfen.

  • İlk olarak gerekli klasörleri oluşturun, bunlar sırayla : /var/hg/repositories ve /var/hg.
  • Daha sonra /var/hg altında hgweb.config isimli bir dosya oluşturun. Dosyanın içine şunları yazın:

[web]
style = gitweb

[collections]
/var/hg/repositories = /var/hg/repositories

  • Ayar dosyasını oluşturduktan sonra Apache sunucusunun hgweb i çalıştırabilmesi için hgwebdir.cgi dosyasını oluşturun. Bu dosyanın içeriğine aşağıdakileri yazdırın.

#!/usr/bin/env python
from mercurial import demandimport; demandimport.enable()

import cgitb
cgitb.enable()

import os
os.environ["HGENCODING"] = "UTF-8"

from mercurial.hgweb.hgwebdir_mod import hgwebdir
import mercurial.hgweb.wsgicgi as wsgicgi

application = hgwebdir('hgweb.config')
wsgicgi.launch(application)

  • CGI betiğini hazırladıktan sonra apachenin kendi klasörüne dönüyoruz. Ubuntu da bu klasör /etc/apache2 şeklinde oluyor. Burada bir mercurial klasörü oluşturuyoruz. mkdir mercurial
  • Bu klasörün içine girip, mercurial.conf dosyasını oluşturuyoruz. Bu dosyanın içine şunları yazıyoruz:

ScriptAliasMatch ^/mercurial(.*) /var/hg/hgwebdir.cgi$1
<Directory "/var/hg/">
Options Indexes FollowSymlinks MultiViews ExecCGI
AllowOverride All
Order allow,deny
Allow from all
AuthType Basic
AuthName "Mercurial Repositories"
AuthUserFile /var/hg/hgusers
Require valid-user
</Directory>

Bu sayede demin oluşturduğumuz klasörün apache üzerinden servis edilmesini sağlıyoruz.

  • Mercurial’ın dışarı açılması için gerekli bir adım daha: apachenin içindeki sites-available klasöründe, az önce oluşturduğumuz ayar dosyasının sunulmasını sağlamak. Bunun için sites-available klasörüne girip, örneğin default dosyasına şu satır eklenmelidir: Include /etc/apache2/mercurial/mercurial.conf
  • Herşeyin normal olduğunu kontrol etmek için su komutu çalıştırın: sudo apache2ctl configtest
  • Daha sonra apacheyi tekrar başlatalım; eğer bir sorun olmazsa siteniz/mercurial adresine girdiğinizde güzei bir görüntü olmalı 🙂 :
$ sudo apache2ctl stop
$ sudo apache2ctl start