2008-12-18 16 views
135

Quiero saber cómo publicar simplemente sobre http = ¡muy parecido al servicio de hg de Mercurial! En el cuadro de Windows/trabajo hacer esto:Servicio de Git: me gustaría que sea tan simple

git serve 

y luego en el cuadro de Linux sólo tiene que ir:

git clone http://project project 

terminado.

+0

¿Sabe usted que la clonación de un clon de git-svn de un repositorio SVN es complicado? http://subtlegradient.com/articles/2008/04/22/cloning-a-git-svn-clone – bendin

+0

¿Por qué no simplemente instalar svn en el uso del anuncio de su computadora portátil de Linux directamente desde el repositorio del proyecto? Git puede ser el nuevo calor, pero realmente parece que estás haciendo tu vida innecesariamente complicada en este caso particular. – bendin

+0

bendin no No sabía que era complicado, como estoy configurando el entorno ahora estoy contento de que hables ... – Setori

Respuesta

193

Navegar en su proyecto y empezar a git-daemon con los siguientes parámetros:

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

Esto le dice a git-daemon para servir a todos los proyectos dentro del directorio actual (que supongo es el directorio de proyecto que contiene el. git/carpeta). También le dice que reutilice la misma dirección si la apaga y la inicia de nuevo 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 volver a escribirlo todo. Como se sugiere en algunos de los comentarios, en versiones recientes de Git se puede add an alias to the Git config:

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

Una vez hecho esto en el servidor (la caja de Windows), que puede hacer:

git serve 

git-daemon utiliza el git: // protocolo para el transporte, por lo que en el cliente (su máquina Linux), que tendría que hacer:

git clone git://123.456.789.111/ project 
+4

oh sí usted persona increíble gracias – Setori

+3

Puede agregar el comando como un alias a su archivo .gitconfig como se describe aquí: http://git.or.cz/gitwiki/Aliases#Serverepoonthespot – RFelix

+1

que debería ser http: // git.wiki.kernel.org/index.php/Aliases#Serve_repo_on_the_spot – Aeon

14

en lugar de escribir su propia escritura de la hornada, utilice gitjour. Sabe cómo iniciar git daemon correctamente y transmitirá el clon URL a través de mDNS para que pueda hacer gitjour show en el cuadro de Linux y copiar y pegar.

También un buen artículo con una visión general de gitjour y una serie de otras herramientas similares de Dr. Nic, What is *jour and why they are killer apps for RailsCamp08.

+0

+1 por traer a Gitjour a mi atención. – Abizern

+0

Parece muy útil. Gracias. – Paul

+0

Definitivamente gitjour. – dylanfm

11

Si lo que desea es exponer el repositorio con un navegador web

git-instaweb

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

dice 'lighttpd no encontrado. Instale lighttpd o use --httpd para especificar otro daemon httpd. –

+4

@syedrakib Necesitará tener instalado lighttpd, o apache2, o alguna otra cosa. Personalmente uso 'git instaweb -d webrick' en OS X, porque webrick viene con Ruby, que está preinstalado en OS X. –

+0

@MartijnHeemels -' git instaweb -d webrick' funcionó PERFECT ...... gracias. –

8

Aquí es una forma alternativa. Necesitarás Python instalado.

  • plazo git update-server-info
  • ir al directorio .git
  • plazo python -mSimpleHTTPServer

(acaba de crear un alias en su gitconfig)

Ahora se puede tirar de la cesión temporal con git pull http://HOST_NAME:8000/

PD: cuando se usa La solución git daemon puede establecer --base-path=.git por lo que la url es git://HOST/

+0

En Python 3, el comando equivalente es python -m http.server –

12

Actualmente utiliza dos alias: servir y concentrador.De servir de recurso de sólo lectura y el cubo por la cuota de 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 tutorial más detallada acerca de compartir a través de git daemon: http://l.rw.rw/git-daemon.

0

git-webui es una extensión git que proporciona una interfaz de usuario basada en web y la capacidad de clonar/pull desde otros equipos

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/ 
+0

Acabo de intentarlo a ciegas. Puedo clonar git pero no puedo acceder al webgui. Parece que el navegador está esperando una respuesta de su servidor. – sree

0

Agregar siguientes líneas en .git/config

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

luego ejecutar

git instaweb 
Cuestiones relacionadas