Git serve: lo vorrei così semplice


139

Voglio sapere come pubblicare semplicemente su http = molto come Mercurial il servizio hg di ! Nella finestra di lavoro / Windows, procedere come segue:

git serve 

e quindi sulla scatola Linux SEMPLICEMENTE andare:

git clone http://project project 

finito.


Sai che clonare un clone git-svn di un repository svn è complicato? subtlegradient.com/articles/2008/04/22/cloning-a-git-svn-clone
bendin

Perché non installare semplicemente svn sul tuo annuncio del notebook linux usare check out direttamente dal repository del progetto? Git potrebbe essere il nuovo entusiasmo, ma sembra davvero che ti stia rendendo la tua vita inutilmente complicata in questo caso particolare.
Bendin,

bendin no, non sapevo che fosse difficile, dato che ho creato l'ambiente ora sono contento che tu abbia parlato ...
Setori,

1
In primo luogo: il mio notebook non è consentito su questo VPN, quindi non posso accedere direttamente a svn. secondo: voglio impegnarmi nel mio repository, il punto centrale dell'uso di git è che posso fare commit locali, diramare e unire indolore. Trovo che usare svn ora sia piuttosto angusto.
Setori,

Se hai installato Python, un semplice git instaweb -d pythonpotrebbe essere inutile (con Git 2.21, febbraio 2019): vedi la mia risposta di seguito
VonC

Risposte:


197

Naviga nel tuo progetto e avvia git-daemon con le seguenti opzioni:

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

Questo dice a git-daemon di servire tutti i progetti all'interno della directory corrente (che presumo sia la directory del progetto contenente la cartella .git /). Gli dice anche di riutilizzare lo stesso indirizzo se lo si spegne e lo si riavvia troppo velocemente.

Puoi inserirlo in uno script batch con un nome facile da ricordare come "gitserve", quindi non è necessario digitare nuovamente tutto. Come suggerito in alcuni dei commenti, nelle recenti versioni di Git è possibile aggiungere un alias alla configurazione di Git :

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

Una volta fatto sul server (la tua finestra di Windows), puoi fare:

git serve

git-daemon usa il protocollo git: // per il trasporto, quindi sul client (il tuo box Linux), dovresti fare:

git clone git://123.456.789.111/ project

3
È possibile aggiungere il comando come alias al file .gitconfig come descritto qui: git.or.cz/gitwiki/Aliases#Serverepoonthespot
RFelix


8
Penso che sia importante notare che, sebbene git daemonconsenta l'accesso remoto da parte di altri client git, manca l'interfaccia Web che hg servefornisce.
Rob Kennedy,

4
fai servire un alias nel tuo .gitrc come:serve = !git daemon --reuseaddr --verbose --base-path=. --export-all ./.git
dlamblin

1
@Aeon, sembra che gli URL siano cambiati ed è ora git.wiki.kernel.org/articles/a/l/i/Aliases.html
Christophe Muller,

14

Invece di scrivere il tuo script batch, usa gitjour . Sa come avviare correttamente il demone git e trasmetterà l'URL del clone tramite mDNS in modo da poterlo fare gitjour showsulla scatola di Linux e copiare e incollare.

Anche un buon articolo con una panoramica di gitjour e una serie di altri strumenti simili del Dr. Nic, What is * jour e perché sono app killer per RailsCamp08 .


13

Attualmente si utilizzano due alias: serve e hub. Servire per condivisione di sola lettura e hub per condivisione di lettura / scrittura:

[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

Inoltre, c'è un tutorial più dettagliato sulla condivisione tramite demone git: http://l.rw.rw/git-daemon .


12

Se vuoi solo esporre il repository con un browser web

git-instaweb

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

dicelighttpd not found. Install lighttpd or use --httpd to specify another httpd daemon.
Rakib,

4
@syedrakib Dovrai aver installato lighttpd, o apache2 o qualcos'altro. Personalmente lo uso git instaweb -d webricksu OS X, perché webrick viene fornito con Ruby, che è preinstallato su OS X.
Martijn Heemels

6
Questo strumento non sembra essere compatibile con Windows. Dato che il poster chiedeva uno strumento di Windows, questo è un fattore importante per questa risposta.
Robert MacLean,

9

Ecco un modo alternativo. Sarà necessario installare Python.

  • correre git update-server-info
  • vai alla .gitdirectory
  • correre python -mSimpleHTTPServer

(basta creare un alias in gitconfig)

Ora puoi tirare il repository con git pull http://HOST_NAME:8000/

PS: quando usi la soluzione demone git puoi impostare --base-path=.gitcosì l'URLgit://HOST/


0

git-webui è un'estensione git che fornisce un'interfaccia utente basata sul web e la possibilità di clonare / estrarre da altri computer

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

$ cd my_git_repo
$ git webui

Altre persone possono

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

o

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

Ci ho appena provato alla cieca. Sono in grado di eseguire il clone ma non riesco ad accedere al webgui. Sembra che il browser sia in attesa di una risposta dal tuo server.
sree,

0

Aggiungi le seguenti righe in .git / config

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

quindi eseguire

git instaweb

0

Git 2.21 (febbraio 2019) ti consente di combinare Python e git instaweb :

Vedi commit 2eb14bb (28 gennaio 2019) di Arti Zirk ( artizirk) .
(Unito da Junio ​​C Hamano - gitster- in commit abf39e3 , 05 feb 2019)

git-instaweb: aggiungi Python incorporato http.server supporto integrato in

Con questa patch è possibile avviare git-instawebutilizzando il http.servergestore CGI Python tramite-d python opzione.

git-instawebgenera un piccolo wrapper attorno a http.server(in GIT_DIR/gitweb/) che risolve una limitazione del gestore CGI in cui gli script CGI devono trovarsi in una cgi-binsottodirectory e l'indice di directory non può essere facilmente modificato. Per mantenere piccola l'implementazione, gitwebè in esecuzione su url /cgi-bin/gitweb.cgie viene eseguito un reindirizzamento automatico all'apertura/ .

Il wrapper generato è compatibile con Python 2 e 3.

Python è installato di default sulla maggior parte delle moderne distribuzioni Linux che consente l'esecuzione git instaweb -d pythonsenza la necessità di nient'altro.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.