2012-02-10 26 views
5

Mam repozytorium subversion, które jest lustrem innego zdalnego repozytorium. Używam svnsync, aby co tydzień odtwarzać zawartość repozytorium. Repozytorium lustrzane (kopia lokalna) służy tylko do tworzenia kopii zapasowych.Subversion - Czy można wyłączyć wszystkie zatwierdzenia i tylko odczytać repozytorium?

Chciałbym zachować repozytorium lustrzane jako READ-ONLY, tj. Nikt nie powinien być w stanie zatwierdzić żadnych zmian w tym repozytorium, ale może go użyć do odczytu plików źródłowych, ponieważ jest szybszy niż zdalne repozytorium.

Rozejrzałem się po Google i wygląda na to, że hak to chyba najlepsza opcja. Jedynym problemem jest to, że wszystkie przykłady, które widzę w Google, są oparte na Uniksie i nie mogę znaleźć odpowiedniego przykładu dla Windows, ponieważ repozytorium lustrzane działa na Windows Server.

Wszelkie pomysły?

Odpowiedz

5

Dlaczego nie wystarczy skonfigurować anon-access = read i auth-access = read in svnserve.conf?

+0

Po prostu próbowałem, ale nadal pozwala na zatwierdzenie - Odkomentowałem obie właściwości w pliku /myrepository/conf/svnserve.conf – ziggy

+0

Należy pamiętać, że domyślny dla anon-access jest odczytywany, więc komentarz jest OK, ale domyślne dla auth-access jest napisać, więc musisz ustawić go explictly, aby przeczytać. – mac

+0

Tak, próbowałem zmienić autoryzację, aby przeczytać, ale nadal mogę zatwierdzić. Używam krawędzi Subversion Collabnet. Ma opcję ograniczenia dostępu za pośrednictwem GUI, ale zgaduję, że zmiana svnserve ręcznie powinna również działać. – ziggy

6

Przede wszystkim używasz http:// lub svn:// w swoich adresach URL zamówienia?

Jeśli używasz svn://, możesz skonfigurować plik svnserve.conf w swoim repozytorium, aby usunąć autoryzowany dostęp, po prostu mając pusty plik. Dostęp anonimowy jest domyślnie "tylko do odczytu", o ile nie zmieniłeś tego ustawienia w pliku svnserve.conf, powinieneś być w porządku. Możesz też wyłączyć anonimowy dostęp i zmienić autoryzowany dostęp do read-only.

Jeśli jednak używasz http://, musisz skonfigurować swoją konfigurację httpd Apache na serwerze Subversion, aby nie zezwalać na dostęp do zapisu.

To staje się trudniejsze, ponieważ istnieje wiele sposobów konfigurowania uwierzytelniania httpd Apache iw zależności od systemu httpd Apache może być przechowywany w wielu lokalizacjach.

Inną możliwością jest użycie pre-commit hook, aby wyłączyć wszystkie prawa do odczytu i zapisu w repozytorium.

Nawiasem mówiąc, stara komenda svnsync używa nie tylko polecenia svn do odczytu i zapisu, aby zatwierdzić zmiany, które zsynchronizowała, ale także musiała mieć zestaw haczyków przed zmianą, tak aby polecenie svnsync mogło również modyfikować właściwości w celu dopasowania do oryginalnego repozytorium. Oznacza to, że jeśli uda Ci się zrobić swoje repozytorium tylko do odczytu, możesz złamać svnsync. Musisz przeczytać, jak działa svnsync i czy tak jest nadal. Mój hak pre-commit też może rozwiązać ten problem.