2013-01-15 13 views
43

Używam serwera repozytorium git dostępnego przez SSH na niestandardowym porcie (powiedzmy 12345). Przekonałem się, że w tym przypadku repozytorium adresy URL muszą być określone za pomocą SSH składnię:URL repozytorium Git - składnia SSH bez ścieżki bezwzględnej

git clone ssh://[email protected]:12345/absolute/path/to/repository 

chciałbym, aby ustawić go w taki sposób, że byłoby to możliwe dla użytkowników, aby sklonować repozytoriów bez podania absolutna ścieżka.

git clone ssh://[email protected]:12345/repository.git 

ja zbadali temat i znaleźć następujące opcje:

  1. usuń port niestandardową z adresu URL i sprawiają, że użytkownicy go dodać do swojego pliku ~/.ssh/config (w ostatniej ośrodek obejście zamiast rozwiązanie).
  2. Kropla SSH i użyć git-daemon i określić jego --base-path parametr (nadal obejście ...)
  3. użyć narzędzia jak gitosis lub gitolite - ale czy nie byłoby overkill go używać wyłącznie do tego celu? Gitosis zostanie przerwana, gitolite jest dość duży kawałek oprogramowania ...

Wszystko czego chcę jest „ładniejszy” SSH URL z niestandardowego portu (więc mogę rozłożyć całą komendę git clone i wymagać niczego więcej od zdalnego użytkownik). Które z powyższych rozwiązań byłoby najbardziej opłacalne w moim przypadku?

+0

Gitolite nie jest tak naprawdę duży, ale jest naprawdę dobrze utrzymany i łatwy do skonfigurowania. Pierwsze wątpliwości miałem też po raz pierwszy, ale cieszę się, że je mam. – jszakmeister

Odpowiedz

56

Jeśli używasz alternatywnej formy adresów URL , nie potrzebujesz bezwzględnej ścieżki. Na przykład ...

git clone [email protected]:repos/myrepo.git 

... będzie sklonować repozytorium repos/myrepo.git stosunku do mojego katalogu domowego, choć ten nie pozwala na użycie alternatywnego portu. Jednak można także używać ~ w obu postaci, aby wskazać katalog domowy użytkownika, np .:

git clone ssh://[email protected]:12345/~/repository.git 

Nawiasem mówiąc, pomimo przerwania gitosis funkcjonuje całkiem dobrze, a kod jest zarówno małe i łatwe do zrozumienia. Oferuje użyteczny zestaw kontroli dostępu i samoobsługowego zarządzania repozytoriami. Nie zdyskontowałbym go całkowicie.

+4

Nadal można ustawić niestandardowy port dla pierwszego przykładu w konfiguracji SSH. Tak właśnie wolę to robić. Odwołuję się do zdalnego serwera poprzez alias w repozytoriach git i ustawiam wszystkie niezbędne parametry w konfiguracji SSH. Więc jeśli postanowię zmienić moją konfigurację serwera, po prostu zmieniam konfigurację SSH. – morgoth84

+0

Próbowałem tego z git w wersji 2.7.4 i wygląda na to, że działa tylko drugi przykład. – untill

+0

Pierwszy przykład nadal działa z wersją 'git' do wersji 2.9.3. To tylko część standardowej składni. Jeśli masz problemy, możesz otworzyć nowe pytanie. – larsks

5

to zrobić, nie do końca, o co prosiłeś, ale blisko i z ładniejsze linki:

utworzyć ścieżkę jak

/srv/git 

gdzie umieścić masz git projektów

obok zrobić symboliczny link do strony domowej:

ln -s /srv/git $HOME 

dalej możesz mieć krótsze linki

git clone [email protected]:git/myproject.git 

jeśli masz jeden projekt można pozbyć się części w git/url

następnego

git clone [email protected]:myproject.git 

zadziała. Oczywiście .git na końcu adresu URL pochodzi tylko z tworzenia go z .git w nazwie. Należy również zauważyć, że ssh: // nie jest potrzebna: @ oznacza, że ​​jest to URL ssh dla git.

Zaktualizowany: pozwól mi dodać pozycję: śledzenie najnowszego Filesystem Hierarchy Standard Używam teraz /srv/git jako lokalizacji repozytorium.

Powiązane problemy