web-dev-qa-db-fra.com

Comment configurer Mercurial et hgwebdir sur IIS?

J'ai cherché partout des instructions décentes sur la façon de faire fonctionner hgwebdir sur IIS mais je n'ai pas trouvé grand-chose.

Il y a ce "étape par étape" sur le wiki Mercurial, mais ce n'est pas très bon. Il y a aussi this et this , mais encore une fois, je ne trouve pas de bonnes étapes pour les mener à bien.

72
Kevin Berridge

J'ai juste dû installer une nouvelle instance Mercurial hier, voici les instructions mises à jour pour la 1.7:

  1. Installer Mercurial (ces instructions ont été testées avec 1.7)
  2. Installer Python (pour Mercurial 1.7, vous devez utiliser la version x86 de Python 2.6.6)
  3. Vous devrez télécharger le fichier hgweb.cgi à partir de la source Mercurial. Vous pouvez télécharger la source en exécutant: hg clone https://www.Mercurial-scm.org/repo/hg/
  4. Créez un dossier qui sera votre dossier d'application Web. Vous devrez copier trois choses dans ce dossier:

    • Le fichier hgweb.cgi
    • Le contenu du Library.Zip de votre dossier "C:\Program Files\Mercurial"
    • Le dossier Templates de votre "C:\Program Files\Mercurial"
  5. Vous devrez vous assurer que vous avez Python configuré dans IIS.

    • Activez CGI via les éléments suivants: Panneau de configuration -> Activer ou désactiver les fonctionnalités Windows -> Rôles -> Serveur Web (IIS) -> Ajouter des services de rôle -> Vérifier CGI
    • Créez un nouveau site Web dans IIS et assurez-vous que le chemin physique est le dossier que vous avez créé ci-dessus
    • Dans les mappages de gestionnaires pour le nouveau site Web, sélectionnez "Ajouter une carte de script". Entrez *. Cgi pour le chemin de la demande, c:\Python26\python.exe -u "% s" pour l'exécutable, et Python pour le nom.
  6. Vous devrez également créer un fichier nommé "hgweb.config" avec un contenu similaire à ci-dessous. Le chemin dans le fichier doit être l'emplacement sur votre lecteur où vous souhaitez stocker les référentiels Mercurial:

    [collections]
    c:\Mercurial\repos = c:\Mercurial\repos

  7. Modifiez le fichier hgweb.cgi et changez la ligne où il définit le chemin d'accès à votre hgweb.config à quelque chose comme ce qui suit (où que se trouve le fichier hgweb.config):

    config = "C:\Mercurial\hgweb.config"

  8. Maintenant, ouvrez un navigateur et accédez à http: //localhost/Mercurial/hgweb.cgi (ou quel que soit le chemin URL approprié que vous avez configuré dans IIS) et vous devriez voir la page Mercurial Repositories.

Consultez également article de blog Jeremy Skinners . C'est un peu obsolète, mais a quelques étapes supplémentaires comme la configuration de la réécriture d'URL pour des URL plus propres.

49
jwanagel

Il semble que depuis la sortie de Mercurial 1.5.2, ces didacticiels ne fonctionnent pas exactement. D'une part, hgwebdir.cgi a été supprimé et est maintenant remplacé par hgweb.cgi.

Les instructions qui ont fonctionné le mieux pour moi sont à eworldui.net :

http://www.eworldui.net/blog/post/2010/04/08/Setting-up-Mercurial-server-in-IIS7-using-a-ISAPI-module.aspx

Ces instructions sont destinées à IIS 7 ou supérieur. Si vous configurez cela sur IIS 6, j'ai rédigé des instructions similaires orientées vers Win2k3 et IIS 6.0:

http://partialclass.blogspot.com/2010/05/setting-up-Mercurial-server-on-win2k3.html

MISE À JOUR: Peu de temps après avoir commencé à travailler, j'ai appris que BitBucket a changé son système de tarification pour offrir un hébergement privé gratuit et illimité: https: // bitbucket.org/ . J'aurais opté pour cela en un clin d'œil lorsque je travaillais à l'origine sur ce projet.

34
Ken Pespisa

J'ai trouvé que le billet de blog sur Vampire Basic était un bon début, mais il n'était pas entré dans assez de détails pour ce que je cherchais.

J'ai fait un article de blog en 4 parties à ce sujet qui vous permet de démarrer à zéro avec IIS, y compris l'intégration d'Active Directory, la configuration des privilèges de sécurité pour Push/Pull, la personnalisation du modèle, je le reproduirais ici, mais c'est assez longue haleine étant que Mercurial a été vraiment conçu pour être hébergé sur Linux/Apache:

http://www.endswithsaurus.com/2010/05/setting-up-and-configuring-Mercurial-in.html

12
BenAlabaster
11
Ben Schwehn

Voici ce que j'ai fait après avoir fait pas mal de recherches pour obtenir la configuration de hgwebdir.cgi sur IIS6. Il est basé sur les sites suivants:

Vous devrez installer les éléments suivants sur le serveur:

  • Mercurial (j'ai utilisé la version 1.5)
  • Python 2.6. La version de Python dépend de la version de Mercurial installée. Mercurial 1.5 utilise Python 2.6. Installez x86 même si vous utilisez x64.

Les étapes pour moi étaient:

  • Créez un répertoire pour le site Web. J'ai utilisé c:\inetpub\wwwroot\hg.
  • Dans IIS, cliquez avec le bouton droit sur le dossier pour hg, sélectionnez les propriétés, sélectionnez l'onglet Répertoire de base.
  • Cliquez sur le bouton Créer une application. Définissez les autorisations d'exécution sur "scripts".
  • Toujours dans l'onglet Répertoire de base, cliquez sur le bouton Configuration. Dans la fenêtre contextuelle "Configuration d'application", cliquez sur le bouton Ajouter pour ajouter une extension d'application. L'exécutable est c:\Python26\python.exe -u "% s" "% s". L'extension est .cgi. Réglez les "verbes" sur "limiter à: GET, HEAD, POST". Vérifiez le moteur de script et vérifiez que le fichier existe.
  • Dans l'onglet Sécurité du répertoire, cliquez sur le bouton Modifier dans la section Authentification et contrôle d'accès. Décochez toutes les méthodes d'authentification et cochez la méthode "Authentification de base". Définissez le domaine par défaut si vous le souhaitez sur votre domaine Active Directory.
  • Dans IIS, cliquez sur le dossier Web Service Extensions dans le panneau de gauche. Cliquez sur le lien "Ajouter une nouvelle extension de service Web". Le nom de l'extension doit être Python, le fichier requis est c:\Python26\python.exe -u "% s" "% s". Assurez-vous que la nouvelle extension est "Autorisée".

Le moment est venu de tester que Python fonctionne. Créez un fichier dans votre nouveau dossier Hg appelé test.cgi. Collez le code suivant python:

print 'Status: 200 OK'
print 'Content-type: text/html'
print

print '<html><head>'
print ''
print '<h1>It works!</h1>'
print ''
print ''

Ouvrez le navigateur sur votre site, par exemple, http: //localhost/hg/test.cgi

Vous devriez voir "Ça marche!" dans le navigateur.

Faisons ensuite fonctionner le hgwebdir.

  • Supprimer test.cgi
  • cloner le référentiel hg dans un nouveau répertoire: https://www.Mercurial-scm.org/repo/hg/
  • copiez hgwebdir.cgi dans votre répertoire web: c:\inetpub\wwwroot\hg\depuis le repo hg cloné
  • Editez le fichier et changez
application = hgwebdir('hgweb.config')
wsgicgi.launch(application)

à

application = hgwebdir('c:\inetpub\wwwroot\hg\hgweb.config')
wsgicgi.launch(application)
  • Décompressez le fichier Library.Zip du répertoire Mercurial, c:\Program Files\Mercurial \, dans votre répertoire Web, c:\inetpub\wwwroot\hg \
  • Copiez le répertoire des modèles de c:\Program Files\Mercurial\templates\vers c:\inetpub\wwwroot\hg\templates \
  • Créez un fichier appelé hgweb.config dans votre répertoire Web.

C'est le bon moment pour le tester. Accédez à l'URL suivante dans le navigateur, http: //localhost/hg/hgwebdir.cgi

  • Modifiez hgweb.config et collez ce qui suit:
[collections]
\\server\share$\Hg\ = \\server\share$\Hg\
[web]
allow_Push = *
Push_ssl = false

Ce sont toutes mes préférences, par exemple, nous avons nos dépôts dans des sous-répertoires sur \\ serveur\partage $\Hg. L'application Web s'exécutera sous les autorisations de l'utilisateur connecté via le navigateur, ils auront donc besoin d'autorisations de lecture/écriture sur le partage.

La dernière étape consiste à autoriser de longues connexions qui peuvent se produire lorsque vous clonez un référentiel pour la première fois. Exécutez la commande suivante pour augmenter le délai d'expiration à 50 minutes:

cd \inetpub\AdminScripts\
cscript adsutil.vbs GET /W3SVC/CGITimeout 
cscript adsutil.vbs SET /W3SVC/CGITimeout 3000
11
Clay Lenhart

Utilisez Mercurial pour cloner le référentiel Mercurial:

hg clone https://www.Mercurial-scm.org/repo/hg/

vous trouverez hgwebdir.cgi au niveau supérieur. Il devrait s'installer comme n'importe quel autre script cgi.

3
Aaron Watters

Je me bats avec cette configuration pour Mercurial 1.7.2 depuis une semaine environ, j'ai dû faire les choses légèrement différemment des articles ci-dessus pour le faire fonctionner.

Publier ici parce que Google ne cessait de me ramener ici ....

Instructions complètes affiché ici

J'ai suivi une combinaison de ces instructions et ces (dans la source)

Les principales différences sont que je devais faire l'installation "pure python" de Mercurial sinon il se plaindrait des dll manquants, et j'ai trouvé qu'il était important d'utiliser les "installateurs python" pour pywin et isapi- wsgi. (peut-être que cela est évident pour les développeurs expérimentés python, mais je suis un débutant python novice, c'était donc une nouvelle pour moi))

J'espère que cela aide quelqu'un et je ne fais pas que des trucs (je pourrais être, comme je l'ai dit, python newbie)

2
Brook

Je rencontrais une erreur de type "... impossible de charger le module ..." et après quelques lectures, la clé pour moi était d'ignorer le fichier Library.Zip dans le dossier Mercurial, et d'utiliser à la place celui de C:\Dossier Program Files (x86)\TortoiseHg.

Cette astuce que j'ai trouvée # 6 dans ce guide:

http://www.endswithsaurus.com/2010/05/setting-up-and-configuring-Mercurial-in.html

J'espère que cela aide quelqu'un ...

1
Tony Yates

Le livre rouge hg contient des instructions générales bien meilleures que celles que j'ai vues ailleurs. Ils ne sont pas IIS spécifiques, mais ils sont assez bons:

http://hgbook.red-bean.com/read/collaborating-with-other-people.html#sec:collab:cgi

1
Kevin Berridge