2013-01-15 27 views
43

SSH aracılığıyla erişilebilen bir git deposu sunucusunu özel bir bağlantı noktasında çalıştırıyorum (diyelim ki 12345). Kullanıcıların belirtmeden depoları klonlamak mümkün olacağını şekilde kurulum onu ​​istediğinizGit depo URL - mutlak yol olmadan SSH sözdizimi

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

: Ben bu durumda depo URL'ler SSH sözdizimi kullanılarak belirtilmesi gerekir bulduk mutlak yolu.

  1. URL'den özel portunu çıkarın ve kullanıcıların bir yerine (kendi ~/.ssh/config dosyaya bir son çare geçici çözüm eklemek olun:

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

    Ben aşağıdaki seçenekleri konuyu araştırılmış ve bulduk çözüm).

  2. Damla SSH ve git-daemon kullanmak ve --base-path parametreyi (hala bir çözüm ...)
  3. gitosis veya gitolite gibi bir yardımcı programını kullanma belirtmek - ama bir overkill sadece bu amaçla kullanmak olmaz mı? Gitosis

Tek istediğim özel port (yani bütün git clone komutu dağıtmak ve uzaktan gelen fazla bir şey gerektirebilir sahip bir "güzel" SSH URL ... gitolite yazılım oldukça büyük parçasıdır devam edilmemekte kullanıcı). Yukarıdaki çözümlerden hangisi benim durumumda en uygun olanıdır?

+0

Gitolite aslında o kadar büyük değil, ama gerçekten iyi hazırlanmış ve kurulumu çok kolay. Benim de ilk defa şüphelerim vardı, ama sahip olmaktan mutlu oldum. – jszakmeister

cevap

56

ssh URL'lerinin alternatif biçimini kullanırsanız, mutlak bir yola ihtiyacınız yoktur. Bu alternatif bir limanın kullanımına izin vermez rağmen Örneğin ...

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

..., benim ev dizinine depo repos/myrepo.git göreli klon olacak. Ancak, aynı zamanda gitosis fonksiyonları oldukça iyi, durdurulan rağmen, kullanıcının ev dizinini, ör .: arada

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

göstermek için her iki formda ~ kullanabilir ve kod küçük ve kolay anlaşılır hem de. Yararlı bir dizi erişim kontrolü ve depoların self servis yönetimi sunar. Tamamen indirim yapmazdım.

+4

İlk örnek için SSH yapılandırmasında özel bir bağlantı noktası ayarlayabilirsiniz. Aslında bunu yapmayı tercih ederim. Uzak sunucuyu git reposundaki bir takma adla başvuruyor ve gerekli tüm parametreleri SSH yapılandırmasında ayarlıyorum. Sunucu yapılandırmamı bir şekilde değiştirmeye karar verirsek, SSH yapılandırmasını değiştiririm. – morgoth84

+0

Sadece bunu 2,7.4 sürümüyle denediniz ve bu sadece ikinci örnek çalışma gibi görünüyor. – untill

+0

İlk örnek, 2.9.3 ile 'git' sürümüyle çalışmaya devam ediyor. Bu sadece standart sözdiziminin bir parçası. Zorluklar yaşıyorsanız yeni bir soru açmak isteyebilirsiniz. – larsks

5

Ben tam size ne sordu, ama yakın ve birlikte güzel bağlantılar Bunu yapmak: Eğer

sonraki sembolik bir hale projeleri git'e yerleştirmek nerede

/srv/git 

gibi bir yol oluşturmak evine bağlantı:

ln -s /srv/git $HOME 

bundan sonra daha kısa linklere sahip olabilirsiniz

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

Eğer

git clone [email protected]:myproject.git 

çalışacak

sonraki url git/parçanın kurtulabilirsiniz tek bir proje varsa. Elbette, URL'nin sonundaki .git, yalnızca isimdeki .git ile çıplak oluşturmadan geliyor. Ayrıca, ssh: // kısmına gerek olmadığını unutmayın: @, git için bir ssh URL olduğunu ima eder.

Güncelleme: bir sidenote ekleyeyim: en son Filesystem Hierarchy Standard'u izleyerek şimdi /srv/git depo konumu olarak kullanıyorum.