Bare Bones Browser
git instaweb --httpd=webrick
aus dem git scm buch
kombinieren Sie es mit so etwas wie dem hier beschriebenen Ansatz für die verteilte Entwicklung ( Dank an datagrok für das gut beschriebene Konzept)
Starten Sie einen einmaligen Git-Server von einem beliebigen lokalen Repository aus.
Ich habe dies bereits getwittert, aber ich dachte, es könnte eine Erweiterung gebrauchen:
Aktivieren Sie den dezentralen Git-Workflow: git config alias.serve "daemon --verbose --export-all --base-path = .git --reuseaddr --strict-path .git /"
Angenommen, Sie verwenden einen Git-Workflow, bei dem Sie mit einem "offiziellen" Kern-Repository arbeiten, von dem Sie Ihre Änderungen abrufen und übertragen. Ich bin sicher, dass viele Unternehmen dies tun, ebenso wie viele Benutzer von Git-Hosting-Diensten wie Github.
Angenommen, der Server oder Github fällt für eine Weile aus.
Keine Sorge, einer der Gründe, warum Sie git verwenden, ist, dass Sie eine Kopie des gesamten Projektverlaufs in Ihrem lokalen Klon haben.
Sie können weiterhin codieren und festschreiben, während Sie darauf warten, dass das Betriebsteam den Server wieder zum Leben erweckt. Hinweis für sich selbst: Kaufen Sie Donuts für das Betriebsteam.
Aber was ist, wenn Sie während dieser Ausfallzeit mit einer anderen Person, die möglicherweise kein Git-Experte ist, im selben Repository zusammenarbeiten möchten?
Oder was ist, wenn Sie und Ihr Mitarbeiter vor Ort sind und aus irgendeinem Grund Ihr VPN nicht dazu bringen kann, eine Verbindung zu Ihrem offiziellen Repo herzustellen?
Oder was ist, wenn Sie und Ihr Mitarbeiter eine Reihe experimenteller Änderungen vornehmen und obwohl Sie Zugriff haben, möchten Sie Ihr unvollendetes Durcheinander nicht in das offizielle zentrale Repository verschieben? (Nicht einmal als Feature-Zweige.) Vielleicht sind Sie gerade dabei, eine katastrophale Rebase oder Zusammenführung zu bereinigen, und die Zweige sind überall.
Nun, git ist, wie Sie wahrscheinlich wissen, ein "verteiltes" Versionskontrollsystem .
Auch wenn Sie in Ihrem Workflow möglicherweise ein zentrales "offizielles" Git-Repository verwenden, haben Sie dennoch die Möglichkeit, Git auf Peer-to-Peer-Weise zu verwenden, wobei Sie und Ihr Mitarbeiter einfach Commits erstellen und untereinander und mit dem zentralen Repository teilen Server muss es nie wissen.
Wie bringen Sie Ihre Filialen und Commits zu ihnen oder umgekehrt?
- Sie können die Funktionen von git zum Versenden von Patches per E-Mail verwenden. Aber das ist ein bisschen unelegant und erfordert einige Kenntnisse darüber, wie E-Mail-Patches angewendet werden.
- Sie können auf Ihrem eigenen Computer ein Konto erstellen, in das Ihr Mitarbeiter ssh einbinden kann. Aber vielleicht haben Sie keinen lokalen Root-Zugriff, oder Sie vertrauen ihnen nicht mit SSH-Zugriff auf Ihre Box.
- Sie können Ihr Repo auf einen Thumbdrive klonen und es hin und her weitergeben. Dies ist jedoch ziemlich mühsam, insbesondere wenn Sie sich zufällig im selben lokalen Netzwerk befinden und einen USB-Stick benötigen.
Sie können wahrscheinlich auch an andere Methoden denken. Aber es gibt einen super einfachen Weg: Wenn Sie sich im Netzwerk sehen können, können Sie einen einmaligen Git-Server starten, den sie als Fernbedienung verwenden können, um Ihre Änderungen zu klonen, abzurufen, abzurufen und zu beenden, wenn Sie es sind damit fertig.
Das Tool, das dies ermöglicht git daemon
, verfügt über viele Optionen und Funktionen. Um dieses einfache einmalige "nur das Repo bedienen zu können, in dem ich mich befinde" zu aktivieren, müssen Sie einen Alias erstellen. Ich nenne es gerne git serve
. Lauf:
git config --global alias.serve "daemon --verbose --export-all --base-path=.git --reuseaddr --strict-paths .git/"
Die Verwendung eines Alias ist tatsächlich von entscheidender Bedeutung, da Git-Aliase im Basisverzeichnis Ihres Arbeitsbaums ausgeführt werden. Der Pfad '.git' zeigt also immer auf die richtige Stelle, unabhängig davon, wo Sie sich im Verzeichnisbaum Ihres Repositorys befinden.
Verwenden Sie Ihr neues git serve
wie folgt:
- Ausführen
git serve
. "Bereit zu rumpeln", wird es berichten. Git ist böse.
- Finden Sie Ihre IP-Adresse heraus. Angenommen, es ist 192.168.1.123.
- Sagen Sie "Hey Jane, ich bin nicht bereit / in der Lage, diese Commits auf den Ursprung zu bringen, aber Sie können meine Commits durch Ausführen in Ihren Klon holen.
git fetch git://192.168.1.123/
"
- Drücken Sie Strg + C, wenn Sie dieses Repo nicht mehr bedienen möchten.
Sie können Jane auch sagen, git clone git://192.168.1.123/ local-repo-name
ob sie noch keinen Klon des Repositorys hat. Oder verwenden Sie git pull git://192.168.1.123/ branchname
diese Option, um sofort abzurufen und zusammenzuführen. Dies ist hilfreich, wenn Sie gemeinsam an einem Feature-Zweig arbeiten.
Beachten Sie jedoch, dass Sie dies nicht in feindlichen Netzwerken tun sollten, wenn Sie Geheimnisse in Ihrem Repository aufbewahren, da keine Authentifizierung vorhanden ist. Es macht keine Werbung für seine Existenz, aber jeder mit einem Port-Scanner kann es finden, eine Verbindung herstellen und Ihr Repo klonen.
Aber es ist nicht besonders gefährlich, da es standardmäßig schreibgeschützt ist. Lesen Sie die git daemon
Manpage sorgfältig durch, wenn Sie der Meinung sind, dass Sie den Schreibzugriff aktivieren möchten. In dem Fall, in dem Sie die Commits Ihres Mitarbeiters erhalten möchten, ist es viel sicherer, sie schreibgeschützt zu lassen und Ihren Mitarbeiter zu bitten, diesen Befehl ebenfalls auszuführen, damit Sie sie abrufen können.
Tangential verwandt: Zum Thema einmalige Server, wenn Sie vorübergehend eine Reihe statischer Dateien über HTTP freigeben möchten: python -m SimpleHTTPServer