Come configurare Mercurial e hgwebdir su IIS?

Ho cercato dappertutto istruzioni decenti su come ottenere hgwebdir lavorando su IIS ma non ne ho trovato molto di valore.

C’è questo “passo dopo passo” nella wiki di Mercurial, ma non è molto buono. C’è anche questo e questo , ma, ancora una volta, non riesco a trovare buoni passi per arrivare a dove iniziare.

Ho appena dovuto installare una nuova istanza Mercurial ieri, ecco le istruzioni aggiornate per 1.7:

  1. Installa Mercurial (queste istruzioni sono state testate con 1.7)
  2. Installa Python (per Mercurial 1.7, devi usare la versione x86 di Python 2.6.6)
  3. Dovrai scaricare il file hgweb.cgi dalla sorgente Mercurial. Puoi scaricare il sorgente eseguendo: hg clone https://www.mercurial-scm.org/repo/hg/
  4. Creare una cartella che sarà la cartella dell’applicazione Web. Dovrai copiare tre cose in questa cartella:

    • Il file hgweb.cgi
    • Il contenuto di Library.zip dalla cartella “C: \ Programmi \ Mercurial”
    • La cartella Modelli dal tuo “C: \ Programmi \ Mercurial”
  5. Dovrai assicurarti di avere Python configurato in IIS.

    • Abilita CGI tramite quanto segue: Pannello di controllo -> Attiva o distriggers funzionalità Windows -> Ruoli -> Server Web (IIS) -> Aggiungi servizi ruolo -> Controlla CGI
    • Creare un nuovo sito Web in IIS e assicurarsi che il percorso fisico sia la cartella creata in precedenza
    • In Mapping gestori per il nuovo sito Web, selezionare “Aggiungi mappa script”. Immettere * .cgi per il percorso della richiesta, c: \ Python26 \ python.exe -u “% s” per l’eseguibile e Python per il nome.
  6. Sarà inoltre necessario creare un file denominato “hgweb.config” con contenuti simili a quelli riportati di seguito. Il percorso all’interno del file deve essere la posizione sul disco in cui si desidera memorizzare i repository Mercurial:

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

  7. Modifica il file hgweb.cgi e cambia la linea in cui imposta il percorso del tuo hgweb.config con qualcosa di simile al seguente (dovunque sia il file hgweb.config):

    config = “C: \ Mercurial \ hgweb.config”

  8. Ora apri un browser e vai a http: //localhost/mercurial/hgweb.cgi (o qualunque sia il percorso URL appropriato che hai configurato in IIS) e dovresti vedere la pagina Mercurial Repositories.

Inoltre, controlla il post sul blog di Jeremy Skinners . È un po ‘obsoleto, ma ha alcuni passaggi extra come impostare la riscrittura degli URL per gli URL più puliti.

Sembra che da quando Mercurial 1.5.2 è stato rilasciato, questi tutorial non funzionano perfettamente. Per prima cosa, hgwebdir.cgi è stato rimosso ed è ora sostituito da hgweb.cgi.

Le istruzioni che hanno funzionato meglio per me sono su eworldui.net :

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

Queste istruzioni sono pensate per IIS 7 o versioni successive. Se stai impostando questo su IIS 6, ho scritto istruzioni simili orientate verso Win2k3 e IIS 6.0:

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

AGGIORNAMENTO: Poco dopo averlo applicato, ho appreso che BitBucket ha cambiato il loro sistema di prezzi per offrire hosting privato gratuito e illimitato: https://bitbucket.org/ . Avrei optato per questo in un batter d’occhio quando stavo originariamente lavorando a questo progetto.

Ho scoperto che il post sul blog di Vampire Basic era un buon inizio, ma non è andato abbastanza in dettaglio per quello che cercavo.

Ho fatto un post di blog in 4 parti su questo che ti permette di iniziare da zero con IIS, inclusa l’integrazione di Active Directory, l’impostazione dei privilegi di sicurezza per push / pull, la personalizzazione del modello, l’avrei riprodotta qui, ma è abbastanza essendo prolisso che Mercurial è stato davvero progettato per essere ospitato su Linux / Apache:

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

C’è un tutorial abbastanza buono e completo qui: http://vampirebasic.blogspot.com/2009/06/running-mercurial-on-windows.html

Di seguito sono riportate le operazioni eseguite dopo aver effettuato una discreta ricerca per ottenere l’installazione hgwebdir.cgi su IIS6. Si basa sui seguenti siti:

Dovrai installare quanto segue sul server:

  • Mercurial (ho usato la versione 1.5)
  • Python 2.6. La versione di Python dipende dalla versione di Mercurial installata. Mercurial 1.5 utilizza Python 2.6. Installa x86 anche se stai eseguendo x64.

I passaggi per me erano:

  • Creare una directory per il sito Web. Ho usato c: \ inetpub \ wwwroot \ hg.
  • In IIS, fare clic con il tasto destro del mouse sulla cartella per hg, selezionare Proprietà, selezionare la scheda Home directory.
  • Fare clic sul pulsante Crea applicazione. Imposta le autorizzazioni di esecuzione su “script”.
  • Sempre nella scheda Home Directory, fare clic sul pulsante Configurazione. Nel popup “Configurazione dell’applicazione”, fare clic sul pulsante Aggiungi per aggiungere un’estensione dell’applicazione. L’eseguibile è c: \ Python26 \ python.exe -u “% s” “% s”. L’estensione è .cgi. Impostare i “verbi” su “limit a: GET, HEAD, POST”. Controllare entrambi i motori di script e verificare che il file esista.
  • Nella scheda Protezione directory, fare clic sul pulsante Modifica nella sezione Controllo autenticazione e accesso. Deseleziona tutti i metodi di autenticazione e verifica il metodo “Authenicazione di base”. Imposta il dominio predefinito se desideri il tuo dominio Active Directory.
  • In IIS, fare clic sulla cartella Estensioni servizio Web nel pannello di sinistra. Fai clic sul link “Aggiungi un nuovo servizio Web estensione”. Il nome dell’estensione dovrebbe essere Python, il file richiesto è c: \ Python26 \ python.exe -u “% s” “% s”. Assicurati che la nuova estensione sia “Consentita”.

Ora è un buon momento per testare che Python funzioni. Crea un file nella tua nuova cartella Hg chiamata test.cgi. Incolla il seguente codice Python:

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

It works!

' print '' print ''

Apri il browser sul tuo sito, ad esempio http: //localhost/hg/test.cgi

Dovresti vedere “Funziona!” nel browser.

Quindi facciamo funzionare hgwebdir.

  • Elimina test.cgi
  • clonare il repository hg in una nuova directory: https://www.mercurial-scm.org/repo/hg/
  • copia hgwebdir.cgi nella tua directory web: c: \ inetpub \ wwwroot \ hg \ dal repository clonato hg
  • Modifica il file e cambia
 application = hgwebdir('hgweb.config') wsgicgi.launch(application) 

a

 application = hgwebdir('c:\inetpub\wwwroot\hg\hgweb.config') wsgicgi.launch(application) 
  • Decomprimi il file Library.zip nella directory Mercurial, c: \ Programmi \ Mercurial \, nella tua directory web, c: \ inetpub \ wwwroot \ hg \
  • Copia la directory dei modelli da c: \ Programmi \ Mercurial \ templates \ a c: \ inetpub \ wwwroot \ hg \ templates \
  • Crea un file chiamato hgweb.config nella tua directory web.

Ora è un buon momento per provarlo. Vai al seguente URL nel browser, http: //localhost/hg/hgwebdir.cgi

  • Modifica hgweb.config e incolla quanto segue:
 [collections] \\server\share$\Hg\ = \\server\share$\Hg\ [web] allow_push = * push_ssl = false 

Queste sono tutte le mie preferenze, ad esempio abbiamo i nostri repository nelle sottodirectory in \\ server \ share $ \ Hg. L’app web verrà eseguita con le autorizzazioni dell’utente connesso tramite il browser, quindi avranno bisogno di autorizzazioni di lettura / scrittura per la condivisione.

L’ultimo passaggio consiste nel consentire connessioni lunghe che possono verificarsi quando si clona un repository. Eseguire il seguente comando per aumentare il timeout a 50 minuti:

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

Usare mercurial per clonare il repository mercurial:

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

troverai hgwebdir.cgi al livello più alto. Dovrebbe essere installato come qualsiasi altro script cgi.

Ho combattuto con questa configurazione per 1.7.7 mercurial per la settimana scorsa o giù di lì, ho dovuto fare le cose in modo leggermente diverso rispetto agli articoli sopra fare per farlo funzionare.

Pubblicazione qui perché Google continuava a riportarmi qui ….

Istruzioni complete pubblicate qui

Ho seguito una combinazione di queste istruzioni e queste (nella fonte)

Le principali differenze sono che dovevo fare l’ installazione “pura python” di mercurial altrimenti mi lamentavo delle DLL mancanti, e ho scoperto che era importante usare i “programmi di installazione python” per pywin e isapi-wsgi. (forse questo è ovvio per gli sviluppatori Python esperti, ma io sono un principiante di Python quindi era una novità per me)

Spero che questo aiuti qualcuno e non sto solo inventando cose (potrei essere, come ho detto, newbie pitone)

Il libro hg red contiene alcune istruzioni generali molto migliori di quelle che ho visto in altri posti. Non sono specifici di IIS, ma sono abbastanza buoni:

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

Stavo correndo in un errore di tipo “… non posso caricare il modulo …” e dopo un po ‘di lettura, la chiave per me era ignorare il file Library.zip nella cartella Mercurial, e invece usare quello da C: \ Cartella Programmi (x86) \ TortoiseHg.

Quel suggerimento che ho trovato come # 6 in questa guida:

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

Spero che questo aiuti qualcuno …

Puoi provare HgLab . Questo non è esattamente hgwebdir; piuttosto è un’implementazione Mercurial gestita esclusivamente con il browser push and pull e il browser di repository.