Git dienen: Ich würde es so einfach mögen

139

Ich möchte wissen, wie man einfach über http = veröffentlicht, ähnlich wie Mercurials hg-Aufschlag! Führen Sie auf der Windows / Work-Box Folgendes aus:

git serve 

und dann auf der Linux-Box EINFACH gehen:

git clone http://project project 

fertig.

Setori
quelle
Ist dir bewusst, dass das Klonen eines Git-SVN-Klons eines SVN-Repos schwierig ist? subtlegradient.com/articles/2008/04/22/cloning-a-git-svn-clone
Bendin
Warum nicht einfach svn auf Ihrem Linux-Notebook installieren und direkt aus dem Projekt-Repository auschecken? Git mag die neue Schärfe sein, aber es scheint wirklich so, als würden Sie Ihr Leben in diesem speziellen Fall unnötig kompliziert machen.
Bendin
Bendin Nein, ich wusste nicht, dass es schwierig ist, da ich jetzt die Umgebung einrichte. Ich bin froh, dass Sie gesprochen haben ...
Setori
1
Erstens: Mein Notebook darf nicht auf diesen VPN zugreifen, daher kann ich nicht direkt auf den SVN zugreifen. Zweitens: Ich möchte ein Commit für mein eigenes Repository durchführen. Bei der Verwendung von git geht es darum, lokale Commits durchzuführen, zu verzweigen und schmerzlos zusammenzuführen. Ich finde die Verwendung von SVN jetzt ziemlich eng.
Setori
Wenn Sie Python installiert haben, könnte ein einfaches git instaweb -d pythonnicht ausreichen (mit Git 2.21, Februar 2019): siehe meine Antwort unten
VonC

Antworten:

197

Navigieren Sie in Ihr Projekt und starten Sie git-daemon mit den folgenden Schaltern:

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

Dies weist git-daemon an, alle Projekte im aktuellen Verzeichnis bereitzustellen (von denen ich annehme, dass es sich um das Projektverzeichnis handelt, das den Ordner .git / enthält). Außerdem wird angegeben, dass dieselbe Adresse erneut verwendet werden soll, wenn Sie sie herunterfahren und zu schnell wieder starten.

Sie können dies in ein Batch-Skript mit einem leicht zu merkenden Namen wie "gitserve" einfügen, sodass Sie nicht alles erneut eingeben müssen. Wie in einigen Kommentaren vorgeschlagen, können Sie in neueren Git-Versionen der Git-Konfiguration einen Alias ​​hinzufügen :

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

Sobald dies auf dem Server (Ihrer Windows-Box) erledigt ist, können Sie Folgendes tun:

git serve

git-daemon verwendet das git: // -Protokoll für den Transport. Auf dem Client (Ihrer Linux-Box) müssten Sie also Folgendes tun:

git clone git://123.456.789.111/ project
Seanhodges
quelle
3
Sie können den Befehl als Alias ​​zu Ihrer .gitconfig-Datei hinzufügen, wie hier beschrieben: git.or.cz/gitwiki/Aliases#Serverepoonthespot
RFelix
8
Ich denke, es ist wichtig zu beachten, dass es zwar git daemonden Remotezugriff durch andere Git-Clients ermöglicht, jedoch nicht über die bereitgestellte Weboberfläche verfügt hg serve.
Rob Kennedy
4
Machen Sie einen Alias ​​in Ihrem .gitrc wie:serve = !git daemon --reuseaddr --verbose --base-path=. --export-all ./.git
Dlamblin
1
@Aeon, es scheint, URLs haben sich geändert und es ist jetzt git.wiki.kernel.org/articles/a/l/i/Aliases.html
Christophe Muller
14

Verwenden Sie gitjour , anstatt Ihr eigenes Batch-Skript zu schreiben . Es weiß, wie man den Git-Daemon richtig startet und sendet die Klon-URL über mDNS, damit Sie sie gitjour showauf der Linux-Box kopieren und einfügen können.

Auch ein guter Artikel mit einem Überblick über gitjour und eine Reihe anderer ähnlicher Tools von Dr. Nic, What is * jour und warum sie Killer-Apps für RailsCamp08 sind .

Otto
quelle
13

Derzeit werden zwei Aliase verwendet - Serve und Hub. Als schreibgeschützte Freigabe und Hub für Lese- / Schreibfreigabe dienen:

[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

Außerdem gibt es ein ausführlicheres Tutorial zum Teilen über den Git-Daemon: http://l.rw.rw/git-daemon .

Criskiev
quelle
12

Wenn Sie das Repository nur mit einem Webbrowser verfügbar machen möchten

git-instaweb

$ git instaweb -d apache2 --start
$ lynx localhost:1234
John Mee
quelle
es heißtlighttpd not found. Install lighttpd or use --httpd to specify another httpd daemon.
Rakib
4
@syedrakib Sie müssen lighttpd oder apache2 oder etwas anderes installiert haben. Persönlich verwende ich git instaweb -d webrickunter OS X, weil Webrick mit Ruby geliefert wird, das unter OS X vorinstalliert ist.
Martijn Heemels
6
Dieses Tool scheint nicht Windows-kompatibel zu sein. Da das Poster nach einem Windows-Tool fragte, ist dies ein wichtiger Faktor für diese Antwort.
Robert MacLean
9

Hier ist ein alternativer Weg. Sie müssen Python installiert haben.

  • Lauf git update-server-info
  • Gehe in das .gitVerzeichnis
  • Lauf python -mSimpleHTTPServer

(erstelle einfach einen Alias ​​in deiner gitconfig)

Jetzt können Sie das Repo mit ziehen git pull http://HOST_NAME:8000/

PS: Wenn Sie die Git-Daemon-Lösung verwenden, können Sie --base-path=.gitdie URL so einstellengit://HOST/

bara
quelle
0

git-webui ist eine Git-Erweiterung, die eine webbasierte Benutzeroberfläche und die Möglichkeit bietet, von anderen Computern zu klonen / zu ziehen

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

$ cd my_git_repo
$ git webui

Andere Leute können

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

oder

$ git pull http://<ip-of-your-computer>:8000/
alberthier
quelle
Ich habe es nur blind versucht. Ich kann einen Klon erstellen, aber nicht auf das Webgui zugreifen. Es sieht so aus, als würde der Browser auf eine Antwort von Ihrem Server warten.
Sree
0

Fügen Sie die folgenden Zeilen in .git / config hinzu

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

dann ausführen

git instaweb
Nayagam
quelle
0

Mit Git 2.21 (Februar 2019) können Sie Python kombinieren und git instaweb:

Siehe Commit 2eb14bb (28. Januar 2019) von Arti Zirk ( artizirk) .
(Zusammengeführt von Junio ​​C Hamano - gitster- in Commit abf39e3 , 05. Februar 2019)

git-instaweb: Python- http.serverUnterstützung hinzufügen

Mit diesem Patch ist es möglich, git-instawebmithilfe des Python http.serverCGI-Handlers über die -d pythonOption zu starten .

git-instawebgeneriert einen kleinen Wrapper um das http.server(in GIT_DIR/gitweb/), der eine Einschränkung des CGI-Handlers behebt, bei dem sich CGI-Skripte in einem cgi-binUnterverzeichnis befinden müssen und der Verzeichnisindex nicht einfach geändert werden kann. Um die Implementierung klein zu halten, gitwebwird auf URL ausgeführt /cgi-bin/gitweb.cgiund beim Öffnen wird eine automatische Umleitung durchgeführt /.

Der generierte Wrapper ist sowohl mit Python 2 als auch mit Python 3 kompatibel.

Python ist standardmäßig auf den meisten modernen Linux-Distributionen installiert, git instaweb -d pythonsodass es ausgeführt werden kann, ohne dass etwas anderes erforderlich ist.

VonC
quelle