2010-03-11 30 views
6

Próbowałem hostować repozytorium Mercurial HG za pomocą Scriptalias.Hosting Mercurial HG za pośrednictwem serwera VisualSVN

ScriptAlias ​​/ Hg/"htdocs/hgwebdir.cgi"

Jeśli pójdę do Chrome wyświetli zawartość pliku CGI. W IE renderuje jednak obrazy i łącza nie są wyświetlane. W obu przypadkach repozytorium, które chcę wyświetlić, nie jest wyświetlane.

Czy udało się komuś pracować z VisualSVN? Czy to też działa, jeśli mam uwierzytelnianie systemu Windows i https?

+0

Ja próbuje dowiedzieć się tego od dwóch dni !! Chciałbym mieć odpowiedź. –

+0

Musisz użyć bezwzględnej ścieżki do ostatniego argumentu ScriptAlias. –

Odpowiedz

7

Oto alternatywna konfiguracja za pomocą mod_wsgi (szybki!), Połączony katalog repozytoriów, a możesz zarządzać dostępem do poziomu Mercurial na poziomie repozytorium z GUI VisualSVN Server.

Pobierz mod_wsgi.so for Apache 2.2 Win32 i umieść w "C: \ Program Files \ VisualSVN Server \ bin".

Skopiuj plik hgwebdir.wsgi z instalacji Mercurial (katalog contrib) do "C: \ Program Files \ VisualSVN Server \". Powinno to wyglądać mniej więcej tak:

import sys 
sys.path.insert(0, "C:\Program Files\Mercurial\library") 
from mercurial.hgweb.hgwebdir_mod import hgwebdir 
application = hgwebdir('hgweb.config') 

Utwórz plik konfiguracyjny "C: \ Program Files \ VisualSVN Server \ hgweb.config".

[paths] 
/= c:/Repositories/* 

Wklej następujące elementy w "C: \ Program Files \ VisualSVN Server \ conf \ httpd-custom.conf". Należy dostosować wartości Auth * na podstawie sekcji httpd.conf.

LoadModule wsgi_module bin/mod_wsgi.so 
WSGIScriptAlias /hg "hgwebdir.wsgi" 

<Location /hg/> 
    AuthName "Mercurial Repositories" 
    AuthType VisualSVN 
    AuthzVisualSVNAccessFile "C:/Repositories/authz-windows" 
    AuthnVisualSVNBasic on 
    AuthnVisualSVNIntegrated off 
    AuthnVisualSVNUPN Off 

    SVNParentPath "C:/Repositories/" 

    require valid-user 
</Location> 

Tworzenie repozytorium Mercurial:

hg init C:\Repositories\hgtest 

Teraz powinno być w stanie uzyskać dostęp/Hg przez przeglądarkę, a także zarządzać zezwolenia poziomu repozytorium przez narzędzie VisualSVN Server.

+0

Myślę, że jestem bardzo blisko, aby to zadziałało, jednak dostaję błąd "Wystąpił wyjątek przetwarzania skryptu WSGI mercurial" i "Plik" mercurial \\ hgweb \\ hgwebdir_mod.pyc ", linia 103, w __call__." najnowsze kompilacje 1.5.1 skompilowane z Pythonem 2.6? – dvkwong

+0

5 sekund po opublikowaniu ostatniego komentarza, w końcu udało mi się to zrobić! Skopiowano szablony do folderu biblioteki zgodnie z poprzednią odpowiedzią Dodatkowe kroki do wykonania: 1. Wyodrębnij biblioteki. zip w Mercurial zainstaluj do folderu o nazwie biblioteki 2. Skopiuj folder Templates do folderu bibliotek 3. Upewnij się, że zainstalowałeś Python 2.6. Dziękujemy! – dvkwong

+1

FYI: moduł mod_wsgi dołączony do dystrybucji VisualSVN Server od wersji 3.3.0 : https: //www.v isualsvn.com/server/changes/#v3.3.0 –

0

Możesz uruchomić hgwebdir za różnymi mechanizmami uwierzytelniania i https w porządku, pod warunkiem, że twój serwer obsługuje je, zanim zmienna REMOTE_USER zostanie przekazana do CGI.

Nie znam visualsvn, ale twoje ScriptAlias ​​wygląda trochę jak Apache. Czy potrzebujesz linii AddHandler dla .cgi?

+0

Czy ta linia AddHandler ma być wszystkim, co jest potrzebne do wykonania CGI na zwykłym serwerze apache? –

+0

W Apache można autoryzować wykonywanie plików przy użyciu "ExecCGI", "AddHandler cgi-script .cgi" i "ScriptAlias". Używam późniejszych dwóch. –

3

Zakładając, że masz zainstalowany i działający Python 2.6, oto kroki, które podjąłem.

Uzyskaj "mod_cgi.so" zbudowany dla Apache 2.2 Win32 i umieść go w "C: \ Program Files \ VisualSVN Server \ bin".

Wklej następujący w "C: \ Program Files \ VisualSVN Server \ conf \ httpd-custom.conf"

LoadModule cgi_module bin/mod_cgi.so 
ScriptAliasMatch ^/hg(.*) "cgi-bin/hgweb.cgi$1" 

Tworzenie katalogu cgi-bin, „C: \ Program Files \ VisualSVN Server \ cgi-bin ". I umieść w nim hgweb.cgi. Upewnij się, że wygląda podobnie do następującego:

#!c:/Python26/python.exe -u 

import sys 
sys.path.insert(0, "C:\Program Files\Mercurial\library") 

import cgitb 
cgitb.enable() 

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

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

Utwórz plik o nazwie hgweb.config w katalogu cgi-bin.

[paths] 
/= c:/HgRepositories/* 

Skopiowano "C: \ Program Files \ Mercurial \ templates" do "C: \ Program Files \ Mercurial \ library \ templates".

Utwórz folder "C: \ HgRepositories" i "hg init c: \ HgRepositories \ test".

Uruchom ponownie serwer VisualSVN, otwórz przeglądarkę, ciesz się swoim repozytorium Mercurial.

1

Począwszy od wersji 1.6 Mercurial, skrypt hgwebdir.wsgi został zostały ujednolicone ze skryptem hgweb.wsgi. Wszędzie, gdzie hgwebdir.wsgi jest , o którym mowa w tych wskazówkach, możesz zamiast tego zastąpić skrypt hgweb.wsgi .

https://www.mercurial-scm.org/wiki/modwsgi