Git służyć: Chciałbym, żeby to było takie proste


139

Chcę wiedzieć, jak po prostu publikować przez http =, podobnie jak serwis hg firmy Mercurial ! W oknie Windows / roboczym wykonaj następujące czynności:

git serve 

a potem na Linuksie PO PROSTU idź:

git clone http://project project 

skończone.


Czy zdajesz sobie sprawę, że klonowanie klonu git-svn repozytorium svn jest trudne? subtlegradient.com/articles/2008/04/22/cloning-a-git-svn-clone
bendin

Dlaczego po prostu nie zainstalować svn w reklamie notebooka linux, użyj wyewidencjonowania bezpośrednio z repozytorium projektu? Git może być nową atrakcją, ale naprawdę wygląda na to, że niepotrzebnie komplikujesz swoje życie w tym konkretnym przypadku.
bendin

bendin nie, nie wiedziałem, że to trudne, ponieważ konfiguruję środowisko teraz. Cieszę się, że się
odezwałeś

1
Po pierwsze: mój notebook nie ma dostępu do tego VPN, więc nie mogę uzyskać bezpośredniego dostępu do svn. po drugie: chcę zatwierdzić swoje własne repozytorium, cały sens korzystania z git polega na tym, że mogę wykonywać lokalne commity, rozgałęziać i bezboleśnie scalać. Uważam, że używanie svn jest teraz raczej skurczowe.
Setori,

Jeśli masz zainstalowanego Pythona, prosty git instaweb -d pythonmoże być nough (z Git 2.21, luty 2019): zobacz moją odpowiedź poniżej
VonC

Odpowiedzi:


197

Przejdź do swojego projektu i uruchom git-daemon z następującymi przełącznikami:

cd project
git daemon --reuseaddr --base-path=. --export-all --verbose

To mówi git-daemonowi, aby obsługiwał wszystkie projekty w bieżącym katalogu (który, jak zakładam, jest katalogiem projektu zawierającym folder .git /). Nakazuje również ponowne użycie tego samego adresu, jeśli wyłączysz go i uruchomisz z powrotem zbyt szybko.

Możesz umieścić to w skrypcie wsadowym z łatwą do zapamiętania nazwą, taką jak „gitserve”, więc nie musisz wpisywać wszystkiego ponownie. Jak sugerowano w niektórych komentarzach, w ostatnich wersjach Gita można dodać alias do konfiguracji Git :

[alias]
    serve = !git daemon --reuseaddr --verbose --base-path=. --export-all ./.git

Gdy to zrobisz na serwerze (twoim pudełku Windows), możesz wykonać:

git serve

git-daemon używa protokołu git: // do transportu, więc na kliencie (twoim Linuksie) musisz zrobić:

git clone git://123.456.789.111/ project

3
Możesz dodać polecenie jako alias do pliku .gitconfig, jak opisano tutaj: git.or.cz/gitwiki/Aliases#Serverepoonthespot
RFelix


8
Myślę, że ważne jest, aby pamiętać, że chociaż git daemonpozwala na zdalny dostęp przez innych klientów git, brakuje mu interfejsu internetowego, który hg servezapewnia.
Rob Kennedy,

4
dokonać służyć aliasu w .gitrc jak:serve = !git daemon --reuseaddr --verbose --base-path=. --export-all ./.git
dlamblin

1
@ Aeon, wygląda na to, że adresy URL się zmieniły i jest teraz git.wiki.kernel.org/articles/a/l/i/Aliases.html
Christophe Muller


13

Obecnie używamy dwóch aliasów - serv i hub. Służy do udostępniania tylko do odczytu i centrum do udostępniania do odczytu / zapisu:

[alias]
  serve = !git daemon --base-path=. --export-all --reuseaddr --informative-errors --verbose
  hub = !git daemon --base-path=. --export-all --enable=receive-pack --reuseaddr --informative-errors --verbose

Istnieje również bardziej szczegółowy samouczek dotyczący udostępniania przez demona git: http://l.rw.rw/git-daemon .


12

Jeśli chcesz tylko udostępnić repozytorium za pomocą przeglądarki internetowej

git-instaweb

$ git instaweb -d apache2 --start
$ lynx localhost:1234

jest napisanelighttpd not found. Install lighttpd or use --httpd to specify another httpd daemon.
Rakib

4
@syedrakib Musisz mieć zainstalowany lighttpd, apache2 lub coś innego. Osobiście używam git instaweb -d webrickna OS X, ponieważ webrick jest dostarczany z Rubim, który jest preinstalowany na OS X.
Martijn Heemels

6
To narzędzie nie wydaje się być zgodne z systemem Windows. Ponieważ plakat prosił o narzędzie Windows, jest to ważny czynnik dla tej odpowiedzi.
Robert MacLean

9

Oto alternatywny sposób. Będziesz potrzebował zainstalowanego Pythona.

  • biegać git update-server-info
  • przejdź do .gitkatalogu
  • biegać python -mSimpleHTTPServer

(po prostu utwórz alias w swoim gitconfig)

Teraz możesz pobrać repozytorium za pomocą git pull http://HOST_NAME:8000/

PS: podczas korzystania z rozwiązania demona git można ustawić --base-path=.gittak, aby adres URL byłgit://HOST/


0

git-webui to rozszerzenie git, które zapewnia internetowy interfejs użytkownika i możliwość klonowania / ściągania z innych komputerów

https://github.com/alberthier/git-webui

$ cd my_git_repo
$ git webui

Inni mogą

$ git clone http://<ip-of-your-computer>:8000/ repoclone

lub

$ git pull http://<ip-of-your-computer>:8000/

Po prostu próbowałem z tym na ślepo. Mogę klonować git, ale nie mam dostępu do webgui. Wygląda na to, że przeglądarka czeka na odpowiedź z Twojego serwera.
sree

0

Dodaj następujące wiersze w .git / config

[instaweb]
               local = true
               httpd = webrick
               port = 4231

następnie wykonaj

git instaweb

0

Git 2.21 (luty 2019) umożliwia połączenie Pythona z git instaweb:

Zobacz commit 2eb14bb (28 stycznia 2019) autorstwa Arti Zirk ( artizirk) .
(Scalone przez Junio ​​C Hamano - gitster- w zobowiązaniu abf39e3 , 05 lutego 2019 r.)

git-instaweb: dodaj wbudowaną http.serverobsługę Pythona

Dzięki tej poprawce możliwe jest uruchomienie git-instawebza pomocą programu http.serverobsługi Python CGI za pośrednictwem -d pythonopcji.

git-instawebgeneruje małe opakowanie wokół http.server(in GIT_DIR/gitweb/), które odnosi się do ograniczenia obsługi CGI, gdzie skrypty CGI muszą znajdować się w cgi-binpodkatalogu, a indeks katalogu nie może być łatwo zmieniony. Aby implementacja była niewielka, gitwebdziała na adresie URL, /cgi-bin/gitweb.cgia podczas otwierania wykonywane jest automatyczne przekierowanie /.

Wygenerowany wrapper jest kompatybilny zarówno z Pythonem 2, jak i 3.

Python jest domyślnie instalowany w większości nowoczesnych dystrybucji Linuksa, co umożliwia działanie git instaweb -d pythonbez potrzeby niczego innego.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.