Git serve: me gustaría así de simple

139

¡Quiero saber cómo publicar simplemente sobre http = al igual que hg serve de Mercurial ! En el cuadro Windows / trabajo, haga esto:

git serve 

y luego en la caja de Linux SIMPLEMENTE vaya:

git clone http://project project 

terminado.

Setori
fuente
¿Eres consciente de que clonar un clon git-svn de un repositorio svn es complicado? subtlegradient.com/articles/2008/04/22/cloning-a-git-svn-clone
bendin
¿Por qué no simplemente instalar svn en el uso del anuncio de su computadora portátil linux? Git puede ser el nuevo atractivo, pero realmente parece que estás haciendo tu vida innecesariamente complicada en este caso particular.
bendin
bendin no, no sabía que era complicado, ya que estoy configurando el entorno ahora me alegro de que hablaste ...
Setori
1
Primero: mi cuaderno no está permitido en este VPN, por lo que no puedo acceder al svn directamente. en segundo lugar: quiero comprometerme con mi propio repositorio, el objetivo de usar git es poder hacer commits locales, bifurcar y fusionar sin problemas. Creo que usar svn ahora es bastante calambre.
Setori
Si tiene instalado Python, un simple git instaweb -d pythonpodría ser suficiente (con Git 2.21, febrero de 2019): vea mi respuesta a continuación
VonC

Respuestas:

197

Navegue a su proyecto e inicie git-daemon con los siguientes modificadores:

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

Esto le dice a git-daemon que sirva todos los proyectos dentro del directorio actual (que supongo que es el directorio del proyecto que contiene la carpeta .git /). También le dice que reutilice la misma dirección si la apaga y la vuelve a iniciar demasiado rápido.

Puede poner esto en un script por lotes con un nombre fácil de recordar como "gitserve", por lo que no necesita escribirlo de nuevo. Como se sugiere en algunos de los comentarios, en las versiones recientes de Git puede agregar un alias a la configuración de Git :

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

Una vez hecho esto en el servidor (su cuadro de Windows), puede hacer:

git serve

git-daemon usa el protocolo git: // para el transporte, por lo que en el cliente (su caja de Linux), deberá hacer lo siguiente:

git clone git://123.456.789.111/ project
seanhodges
fuente
3
Puede agregar el comando como un alias a su archivo .gitconfig como se describe aquí: git.or.cz/gitwiki/Aliases#Serverepoonthespot
RFelix
8
Creo que es importante tener en cuenta que, aunque git daemonpermite el acceso remoto de otros clientes de git, carece de la interfaz web que hg serveproporciona.
Rob Kennedy
44
hacer servir un alias en su .gitrc como:serve = !git daemon --reuseaddr --verbose --base-path=. --export-all ./.git
dlamblin
1
@Aeon, parece que las URL han cambiado y ahora es git.wiki.kernel.org/articles/a/l/i/Aliases.html
Christophe Muller
14

En lugar de escribir su propio script por lotes, use gitjour . Sabe cómo iniciar git daemon correctamente y transmitirá la URL de clonación a través de mDNS para que pueda hacerlo gitjour showen el cuadro de Linux y copiar y pegar.

También un buen artículo con una descripción general de gitjour y una serie de otras herramientas similares del Dr. Nic, What is * jour y por qué son aplicaciones asesinas para RailsCamp08 .

Otón
fuente
13

Actualmente utiliza dos alias: serve y hub. Servir para compartir solo lectura y concentrador para compartir lectura / escritura:

[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

Además, hay un tutorial más detallado sobre cómo compartir a través de git daemon: http://l.rw.rw/git-daemon .

criskiev
fuente
12

Si solo desea exponer el repositorio con un navegador web

git-instaweb

$ git instaweb -d apache2 --start
$ lynx localhost:1234
John Mee
fuente
dicelighttpd not found. Install lighttpd or use --httpd to specify another httpd daemon.
Rakib
44
@syedrakib Deberá tener instalado lighttpd, o apache2, o algo más. Personalmente lo uso git instaweb -d webricken OS X, porque webrick viene con Ruby, que está preinstalado en OS X.
Martijn Heemels
66
Esta herramienta no parece ser compatible con Windows. Como el cartel pedía una herramienta de Windows, ese es un factor importante para esta respuesta.
Robert MacLean
9

Aquí hay una forma alternativa. Necesitarás python instalado.

  • correr git update-server-info
  • Ve a la .git directorio
  • correr python -mSimpleHTTPServer

(solo crea un alias en tu gitconfig)

Ahora puedes sacar el repositorio con git pull http://HOST_NAME:8000/

PD: cuando usas la solución git daemon puedes configurar --base-path=.gitpara que la url seagit://HOST/

bara
fuente
0

git-webui es una extensión git que proporciona una interfaz de usuario basada en web y la capacidad de clonar / extraer desde otras computadoras

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

$ cd my_git_repo
$ git webui

Otras personas pueden

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

o

$ git pull http://<ip-of-your-computer>:8000/
alberthier
fuente
Solo lo intenté a ciegas. Soy capaz de clonar git pero no puedo acceder a la webgui. Parece que el navegador está esperando una respuesta de su servidor.
sree
0

Agregue las siguientes líneas en .git / config

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

luego ejecutar

git instaweb
Nayagam
fuente
0

Git 2.21 (febrero de 2019) le permite combinar python y git instaweb :

Ver commit 2eb14bb (28 de enero de 2019) por Arti Zirk ( artizirk) .
(Fusionada por Junio ​​C Hamano - gitster- en commit abf39e3 , 05 feb 2019)

git-instaweb: agregar Python incorporado http.server soporte integrado de

Con este parche es posible iniciar git-instawebusando el http.servercontrolador Python CGI a través de la -d pythonopción.

git-instawebgenera un pequeño contenedor alrededor de http.server(in GIT_DIR/gitweb/) que aborda una limitación del controlador CGI donde los scripts CGI tienen que estar en un cgi-binsubdirectorio y el índice del directorio no se puede cambiar fácilmente. Para mantener la implementación pequeña, gitwebse ejecuta en url/cgi-bin/gitweb.cgi y se realiza una redirección automática al abrir/ .

El contenedor generado es compatible con Python 2 y 3.

Python se instala por defecto en la mayoría de las distribuciones modernas de Linux, lo que permite ejecutarlo git instaweb -d pythonsin necesidad de nada más.

VonC
fuente