2010-09-07 3 views
2

Je suis en train de mettre en place mon serveur freelance qui utilisera Mercurial pour tout le contrôle de version. Chaque projet aura son propre dossier, avec son propre dépôt. Ce que je peux ensuite cloner à partir de mon ordinateur personnel, ordinateur de travail ou tout autre ordinateur en allant dans ce dossier particulier. Je veux servir ces référentiels dans un navigateur Web pour que je puisse naviguer visuellement quand j'en ai besoin. J'ai regardé autour de moi et j'ai vu ceci: https://www.mercurial-scm.org/wiki/HgServeNginxComment servir correctement les dépôts Mercurial dans le navigateur?

On dirait que c'est sur la bonne voie, car j'utiliserai Nginx sur ce serveur de toute façon. Mais je suis curieux de savoir comment je pourrais le faire correctement. Que dois-je faire en particulier pour diffuser efficacement plusieurs référentiels sur mon serveur via le navigateur Web?

Toute aide ou expérience sur ce sujet serait très utile pour m'assurer que je fais cela correctement.

Merci beaucoup.

Répondre

1

En utilisant ce lien, vous pouvez configurer autant d'emplacements que vous aurez de repos. Dans tous les répertoires des prises en pension, vous devez exécuter hg servir:

cd repos/repo1;   
nohup hg serve -p 8000 & 
cd repos/repo2; 
nohup hg serve -p 8001 & 

Ensuite, vous pouvez tout simplement demander proxy via nginx pour que les serveurs hg en cours d'exécution. Ce n'est pas très bon moyen. Cette méthode nécessite d'éditer nginx config manuellement, d'exécuter hg serve etc. Mais cette méthode vous permet de créer des paramètres d'authentification séparés pour chaque repo. Donc, si vous envisagez de partager le repo avec le client, vous pouvez facilement gérer cela. A la place, vous pouvez utiliser un script spécial, fourni avec mercurial - hgwebdir. informations détaillées, vous pouvez bien sur cette page: https://www.mercurial-scm.org/wiki/PublishingRepositories#Publishing_Multiple_Repositories

MISE À JOUR: J'ai la version Mercurial 1.6 sur le serveur, et pour l'interface utilisateur Web de prise en pension runnung nous utilisons ce script hgwebdir.py:

#!/usr/bin/env python 
import sys 
import os 
os.environ["HGENCODING"] = "UTF-8" 
from mercurial.hgweb.hgwebdir_mod import hgwebdir 
from mercurial.hgweb.request import wsgiapplication 
from flup.server.fcgi import WSGIServer 

def make_web_app(): 
    return hgwebdir('/home/hg/hgwebdir.conf') 

WSGIServer(wsgiapplication(make_web_app), 
     umask=0000, 
     bindAddress='/home/hg/hg.sock').run() 

hgwebdir.conf est ressemble à ceci:

[web] 
allow_push = some_useronly 
baseurl = 
push_ssl = false 
[collections] 
/home/hg/repos = /home/hg/repos 

Pour exécuter: nohup hgwebdir.py &, vous avez besoin flup PYT Module voix, donc: easy_install flup partie nginx.conf connexes

est:

server { 
    listen 80; 
    server_name hg.example.com; 
    gzip off; 
    include fastcgi_params; 
    location/{ 
     client_max_body_size 30m; 
     auth_basic "Restricted Area"; 
     auth_basic_user_file /home/hg/hg.password; 
     fastcgi_pass unix:/home/hg/hg.sock; 
    } 
} 
+0

@ Zada-Zorg Cela ressemble beaucoup plus compliqué. Voyant que j'utiliserai Nginx (et non Apache) aurais-je besoin d'utiliser quelque chose comme FastCGI à la place pour exécuter le script .cgi? Je ne suis pas sûr de savoir comment configurer cela avec Nginx. – littlejim84

+0

Il est également indiqué en haut de cette page liée: "Notez qu'à partir de la version 1.6 de Mercurial, le script hgwebdir.cgi n'existe plus et sa fonctionnalité a été fusionnée dans le script hgweb.cgi. référentiels, suivez les instructions appropriées, en remplaçant hgweb.cgi par hgwebdir.cgi. " – littlejim84

Questions connexes