Git serve: je voudrais que ce soit aussi simple que cela

139

Je veux savoir comment publier simplement sur http = un peu comme le service hg de Mercurial ! Sur la boîte de travail Windows /, procédez comme suit:

git serve 

puis sur la box Linux SIMPLY allez:

git clone http://project project 

fini.

Setori
la source
Êtes-vous conscient que le clonage d'un clone git-svn d'un dépôt svn est délicat? subtlegradient.com/articles/2008/04/22/cloning-a-git-svn-clone
bendin
Pourquoi ne pas simplement installer svn sur votre ordinateur portable Linux et utiliser directement le dépôt du projet? Git est peut-être la nouvelle tendance, mais il semble vraiment que vous vous compliquez la vie inutilement dans ce cas particulier.
bendin
bendin non, je ne savais pas que c'était difficile, car je mets en place l'environnement maintenant je suis heureux que vous ayez parlé ...
Setori
1
Premièrement: mon notebook n'est pas autorisé sur ce vpn, donc je ne peux pas accéder directement au svn. deuxièmement: je veux m'engager dans mon propre référentiel, tout l'intérêt d'utiliser git est que je puisse faire des commits locaux, créer des branches et fusionner sans douleur. Je trouve que l'utilisation de svn est plutôt crampe.
Setori
Si vous avez installé python, un simple git instaweb -d pythonpourrait être difficile (avec Git 2.21, février 2019): voir ma réponse ci
VonC

Réponses:

197

Accédez à votre projet et démarrez git-daemon avec les commutateurs suivants:

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

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

Vous pouvez mettre cela dans un script batch avec un nom facile à retenir comme "gitserve", donc vous n'avez pas besoin de tout taper à nouveau. Comme suggéré dans certains commentaires, dans les versions récentes de Git, vous pouvez ajouter un alias à la configuration Git :

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

Une fois que c'est fait sur le serveur (votre box Windows), vous pouvez faire:

git serve

git-daemon utilise le protocole git: // pour le transport, donc sur le client (votre machine Linux), vous devrez faire:

git clone git://123.456.789.111/ project
seanhodges
la source
3
Vous pouvez ajouter la commande comme alias à votre fichier .gitconfig comme décrit ici: git.or.cz/gitwiki/Aliases#Serverepoonthespot
RFelix
8
Je pense qu'il est important de noter que bien qu'il git daemonpermette l'accès à distance par d'autres clients git, il manque l'interface Web qui hg servefournit.
Rob Kennedy
4
faites servir un alias dans votre .gitrc comme:serve = !git daemon --reuseaddr --verbose --base-path=. --export-all ./.git
dlamblin
1
@Aeon, il semble que les URL ont changé et c'est maintenant git.wiki.kernel.org/articles/a/l/i/Aliases.html
Christophe Muller
14

Plutôt que d'écrire votre propre script batch, utilisez gitjour . Il sait comment démarrer correctement le démon git et diffusera l'URL du clone via mDNS afin que vous puissiez le faire gitjour showsur 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 du Dr Nic, Qu'est-ce que * jour et pourquoi ce sont des applications tueuses pour RailsCamp08 .

Otto
la source
13

Utilisant actuellement deux alias - serve et hub. Servir pour le partage en lecture seule et le concentrateur pour le 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

Il existe également un didacticiel plus détaillé sur le partage via le démon git: http://l.rw.rw/git-daemon .

Criskiev
la source
12

Si vous souhaitez simplement exposer le référentiel avec un navigateur Web

git-instaweb

$ git instaweb -d apache2 --start
$ lynx localhost:1234
John Mee
la source
il ditlighttpd not found. Install lighttpd or use --httpd to specify another httpd daemon.
Rakib
4
@syedrakib Vous aurez besoin d'installer lighttpd, ou apache2, ou autre chose. Personnellement, j'utilise git instaweb -d webricksur OS X, car webrick est livré avec Ruby, qui est préinstallé sur OS X.
Martijn Heemels
6
Cet outil ne semble pas compatible avec Windows. Comme l'affiche demandait un outil Windows, c'est un facteur important pour cette réponse.
Robert MacLean
9

Voici une alternative. Vous aurez besoin de python installé.

  • courir git update-server-info
  • aller au .gitrépertoire
  • courir python -mSimpleHTTPServer

(créez simplement un alias dans votre gitconfig)

Vous pouvez maintenant retirer le repo avec git pull http://HOST_NAME:8000/

PS: lorsque vous utilisez la solution du démon git, vous pouvez définir --base-path=.gitl'URLgit://HOST/

bara
la source
0

git-webui est une extension git qui fournit une interface utilisateur Web et la possibilité de cloner / extraire 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/
Alberthier
la source
J'ai juste essayé aveuglément. Je suis capable de cloner git mais je ne peux pas accéder à l'interface Web. Il semble que le navigateur attend une réponse de votre serveur.
sree
0

Ajouter les lignes suivantes dans .git / config

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

puis exécutez

git instaweb
Nayagam
la source
0

Git 2.21 (février 2019) vous permet de combiner python et git instaweb:

Voir commit 2eb14bb (28 janvier 2019) par Arti Zirk ( artizirk) .
(Fusionné par Junio ​​C Hamano - gitster- in commit abf39e3 , 05 févr.2019 )

git-instaweb: ajouter le http.serversupport intégré de Python

Avec ce correctif, il est possible de lancer git-instaweben utilisant le http.servergestionnaire Python CGI via l' -d pythonoption.

git-instawebgénère un petit wrapper autour du http.server(in GIT_DIR/gitweb/) qui adresse une limitation du gestionnaire CGI où les scripts CGI doivent être dans un cgi-binsous-répertoire et l'index du répertoire ne peut pas être facilement modifié. Pour garder l'implémentation petite, gitwebs'exécute sur l'url /cgi-bin/gitweb.cgiet une redirection automatique est effectuée lors de l'ouverture /.

Le wrapper généré est compatible avec Python 2 et 3.

Python est installé par défaut sur la plupart des distributions Linux modernes, ce qui permet de s'exécuter git instaweb -d pythonsans rien d'autre.

VonC
la source