2012-06-17 9 views
29

Kiedy sklonować repozytorium, jest jakaś różnica między tymi dwoma adresami URL?Dlaczego niektóre adresy URL repozytoriów kończą się na .git, a inne nie?

  1. Bez .git rozszerzenia:

    git clone http://foo/repo 
    
  2. Z .git rozszerzenia:

    git clone http://foo/repo.git 
    
+0

jeśli odnosimy się do adresów URL GitHub .git jest opcjonalny – gorelative

+5

Możesz być zainteresowany [to] (http://stackoverflow.com/a/1734421/164966) odpowiedź. Konkretnie * Konwencja nazewnictwa reponame.git jest zazwyczaj zarezerwowane dla gołych repositores ... * – R0MANARMY

Odpowiedz

30

Konwencja jest to, że .git przedłużenie powinny być wykorzystywane do naga repozytoria i pozostawione w katalogach z działającym drzewem. Git tak naprawdę nie obchodzi, ale ma kilka metod wygody, które sprawiają, że jest to dość przejrzyste.

Na przykład, jeśli masz repozytorium o nazwie /tmp/foo.git i zadzwonić git clone file:///tmp/foo, Git najpierw spróbować znaleźć /tmp/foo. Jeśli nie istnieje, to spróbuj /tmp/foo.git zamiast.

To robi nie działa na odwrót. Jeśli katalog o nazwie /tmp/foo i próby sklonowania z /tmp/foo.git zostaniesz poinformowany:

śmiertelne: „/tmp/foo.git” nie wydaje się być repozytorium git

Większość funkcji HTTP/HTTPS pochodzi z serwera WWW, a nie z Git. Nawet jeśli używasz Smart HTTP transport, podejrzewam, że większość magii dzieje się w dyrektywie LocationMatch po stronie serwera. Teoria na bok, niektóre szybkie testy przeciwko GitHub pokazują, że działa to w taki sam sposób, jak SSH i Git procotols w tym zakresie, ale twój przebieg może się różnić na innych serwerach internetowych.

+1

myślałem, że zdolność inteligentnego http było owinięcie na boku git, tak, że po prostu po stronie serwera jest dostarczenie odpowiedzi HTTP. https://github.com/blog/642-smart-http-support ale http://www.kernel.org/pub/software/scm/git/docs/v1.7.3/git-http-backend.html sugerować Myliłem się i to jest trochę funkcjonalności serwera. –

Powiązane problemy