2008-12-18 7 views
135

Je veux savoir comment publier simplement sur http = un peu comme Mercurial 's hg serve! Sur Windows/boîte de travail faire:Git serve: Je voudrais que ce simple

git serve 

puis sur la boîte Linux SIMPLEMENT aller:

git clone http://project project 

terminé.

+0

Savez-vous que le clonage d'un clone git-svn d'un repo svn est difficile? http://subtlegradient.com/articles/2008/04/22/cloning-a-git-svn-clone – bendin

+0

Pourquoi ne pas simplement installer svn sur votre annonce pour ordinateur portable linux, utilisez l'extraction directe depuis le référentiel du projet? Git est peut-être la nouvelle hotness, mais il semble vraiment que vous compliquiez inutilement votre vie dans ce cas particulier. – bendin

+0

bendin non je ne savais pas que c'était difficile, comme je suis en train de mettre en place l'environnement maintenant je suis content que vous ayez parlé ... – Setori

Répondre

193

Naviguer dans votre projet et le démarrage démon git avec les commutateurs suivants:

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

Cela indique-démon git pour servir tous les projets à l'intérieur du répertoire courant (qui je suppose est le répertoire du projet contenant le. git/dossier). Il lui dit également de réutiliser la même adresse si vous l'éteignez et le redémarrez trop vite.

Vous pouvez placer ceci dans un script batch avec un nom facile à mémoriser comme "gitserve", vous n'avez donc pas besoin de tout taper à nouveau. Comme suggéré dans certains des commentaires, dans les versions récentes de Git vous pouvez add an alias to the Git config:

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

Une fois que cela est fait sur le serveur (votre boîte de Windows), vous pouvez le faire:

git serve 

-démon git utilise le protocole git: // pour le transport, donc sur le client (votre boîte Linux), vous devez faire:

git clone git://123.456.789.111/ project 
+4

oh oui vous incroyable personne merci – Setori

+3

Vous pouvez ajouter la commande comme un alias à votre fichier .gitconfig comme décrit ici: http://git.or.cz/gitwiki/Aliases#Serverepoonthespot – RFelix

+1

qui devrait être http: // git.wiki.kernel.org/index.php/Aliases#Serve_repo_on_the_spot – Aeon

14

plutôt que d'écrire votre propre script batch, utilisez gitjour. Il sait comment démarrer git daemon correctement et va diffuser l'URL clone via mDNS afin que vous puissiez faire gitjour show sur la boîte Linux et copier et coller.

Aussi un bon article avec un aperçu de gitjour et un certain nombre d'autres outils similaires de Dr. Nic, What is *jour and why they are killer apps for RailsCamp08.

+0

+1 pour avoir porté gitjour à mon attention. – Abizern

+0

semble très utile. Merci. – Paul

+0

Certainement gitjour. – dylanfm

11

Si vous voulez juste exposer le référentiel avec un navigateur web

git-instaweb

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

il dit 'lighttpd non trouvé. Installez lighttpd ou utilisez --httpd pour spécifier un autre démon httpd. » –

+4

@syedrakib Vous devez avoir installé lighttpd, ou apache2, ou autre chose. Personnellement, j'utilise 'git instaweb -d webrick' sur OS X, car webrick est livré avec Ruby, qui est préinstallé sur OS X. –

+0

@MartijnHeemels -' git instaweb -d webrick' a fonctionné PARFAIT ...... merci. –

8

Voici une autre façon. Vous aurez besoin de python installé.

  • run git update-server-info
  • aller dans le répertoire .git
  • run python -mSimpleHTTPServer

(il suffit de créer un alias dans votre gitconfig)

Maintenant vous pouvez tirer le repo avec git pull http://HOST_NAME:8000/

PS: lors de l'utilisation Il git démon solution que vous pouvez définir --base-path=.git de sorte que l'url est git://HOST/

+0

En Python 3, la commande équivalente est python -m http.server –

12

Actuellement en utilisant deux alias - servir et hub.Serve pour lecture seule part et plaque tournante pour partage en lecture/écriture:

[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 

En outre, il y a tutoriel plus de détails sur le partage via le démon git: http://l.rw.rw/git-daemon.

0

git-webui est une extension git qui fournit une interface utilisateur basée sur le Web et la possibilité de cloner/tirer d'autres ordinateurs

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

$ cd my_git_repo 
$ git webui 

D'autres personnes peuvent

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

ou

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

J'ai juste essayé avec aveuglement. Je suis capable de cloner mais je n'arrive pas à accéder au webgui. Il semble que le navigateur attend une réponse de votre serveur. – sree

0

Additionnez les lignes suivantes dans .git/config

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

puis exécutez

git instaweb 
Questions connexes