Ich bin ein langjähriger Subversion-Benutzer, der Git ausprobieren wird. Ich habe einige darüber gelesen und verstehe die verteilte Natur - ich kann viele der Vorteile sehen.
Ich mag jedoch die Idee eines zentralen Servers, der die Rolle von Backups, Aufzeichnungssystemen usw. übernehmen kann, während Git weiterhin für meine lokale Verzweigung und Freigabe verwendet wird. Ich mache kein Open-Source-Projekt, daher kann ich Github nicht verwenden (ohne zu bezahlen). Meine Frage lautet also wirklich: Was ist eine bewährte Methode, um einen lokalen Git-Server auszuführen?
Mir ist klar, dass dies möglicherweise gegen das Standard-Git-Verwendungsmuster verstößt, aber es wird für mein Projekt nützlich sein. Alle Bedenken, die ich möglicherweise übersehen habe, sind jedoch immer willkommen.
Vielen Dank!
Antworten:
Sie können einfach einen SSH-Server einrichten und dort ein zentrales Repository ausführen. Alle Entwickler erklären sich dann einfach (aus politischen Gründen) damit einverstanden, auf den Server zu pushen, wenn sie mit dem Festschreiben fertig sind. Dies ist das Nutzungsmuster an meinem Arbeitsplatz. Sehr CVS und SVN-ähnlich.
/var/gitroot
zum Beispiel).mkdir project.git && cd project.git && git init --bare --shared=group
).git clone ssh://yourserver.com/var/gitroot/project.git && cd project
)git add README
)git commit -m "Initial import"
),git push origin master
)Dies sollte die Dinge für Sie einrichten.
quelle
git init --bare project.git
?Gitorious ist eine Open-Source-Weboberfläche für Git, die Sie auf Ihrem eigenen Server ausführen können, ähnlich wie Github:
http://getgitorious.com/
Aktualisieren:
http://gitlab.org/ ist jetzt auch eine andere Alternative.
Update 2:
Gitorious ist jetzt GitLab beigetreten
quelle
Probieren Sie GitLab aus
Das beste Git-GUI-Tool, das ich je benutzt habe. Es ist GitHub sehr ähnlich.
Es ist Open Source (MIT-Lizenz) und mit über 25.000 Installationen die am häufigsten installierte Git-Management-Software. Es hat monatliche Veröffentlichungen und eine aktive Community mit über 375 Mitwirkenden. Sie können unbegrenzt private, interne und öffentliche Repositorys auf Ihrem eigenen Server haben. Es ist eine Ruby on Rails-App, die auf den meisten Unix-Plattformen ausgeführt wird.
quelle
Wenn es Ihnen nichts ausmacht, sich mit der Befehlszeile zu beschmutzen, ist Gitolite ein absoluter Genuss , wenn Sie in einer Unternehmensumgebung arbeiten, in der Sie unterschiedliche Zugriffsrechte für verschiedene Repositorys festlegen müssen. Es ist eine Art neuere Version der von @Chris erwähnten Gitosis.
Hier ist die Zusammenfassung von der Website des Autors:
Es hat einen ziemlich umfassenden Funktionsumfang, aber eine Sache, die mir sehr gefällt, ist, dass die gesamte tägliche Konfigurationsbearbeitung über ein spezielles Git-Repository erfolgt. Das heißt, das Hinzufügen eines Benutzers ist gerecht
Und wenn Sie den Code über einen Browser anzeigen müssen, unterstützt gitolite die "Synchronisierung" der Konfiguration mit gitweb. Oder wenn Sie cgit mögen , ein sehr gutes Web-Frontend für in C geschriebenes git, dann sollten Sie sich diese Anleitung ansehen .
quelle
Sie könnten Gitblit in Betracht ziehen , einen Open-Source-integrierten, reinen Java Git-Server, Viewer und Repository-Manager für kleine Arbeitsgruppen.
quelle
Bare Bones Browser
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:
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 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 gernegit serve
. Lauf: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:git serve
. "Bereit zu rumpeln", wird es berichten. Git ist böse.git fetch git://192.168.1.123/
"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 Siegit 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
quelle
Wenn Sie einen guten, einfachen GIT-Server benötigen, müssen Sie GitBlit ausprobieren. Auch ich benutze Gitolite, aber es ist nur Server, mit GitBlit bekommen Sie alles in einem, Server, Admin, Repos. Manager ... URL: http://gitblit.com/
quelle
https://rhodecode.com ist eine Open-Source-Web-App für Git & Mercurial, die sehr einfach unter jedem Betriebssystem installiert werden kann (ein Installationsprogramm ist enthalten).
RhodeCode (die neue Version heißt RhodeCode Enterprise) fügt fehlende Git-Funktionen wie Codeüberprüfung hinzu und ist im Allgemeinen sehr schnell und zuverlässig.
quelle
Sie können auch Indefero installieren , es ist ein GPL-Klon von GoogleCode, da es sowohl Subversion als auch Git unterstützt und Sie einen reibungslosen Übergang haben können. Ich bin der Autor von Indefero.
quelle
Sie können GitHub sogar auf Ihrem lokalen Server installieren (jedoch nicht kostenlos):
https://enterprise.github.com/
quelle
Es ist vielleicht nicht das am häufigsten verwendete Git-Server-Setup, aber nachdem ich mit verschiedenen Layouts, Tools, Spiegeln und Berechtigungsschemata gespielt habe, würde ich sagen, dass Gerrit eine ziemlich solide Alternative für Unternehmens-Repositorys ist , was überraschend erscheinen mag, da es eher als bekannt ist Codeüberprüfungstool. Wir haben damit begonnen, es als Codeüberprüfung zu verwenden, und es wurde langsam zu unserem Haupt-Repository, das g3 / gitolite ablehnte
Darüber hinaus wird es von großen Projekten (z. B. Android, Chrome) verwendet, sodass es skaliert und jetzt ziemlich solide ist. Geben Sie Ihren Benutzern einfach die PUSH-Berechtigung, wenn Sie die Umgehung des Codeüberprüfungsteils zulassen möchten.
quelle
Für ein Remote-Hosting Wie andere gesagt haben, bietet bitbucket.org kostenlose private Repositories an. Ich habe es ohne Probleme verwendet.
Für ein lokales Netzwerk oder ein LAN-Netzwerk werde ich dieses scm-manager.org hinzufügen (Eine einzelne ausführbare Datei ist sehr einfach zu installieren, sie wurde unter Java erstellt und kann unter Linux oder Windows ausgeführt werden). Nur für den Fall, dass Sie es installieren, sind dies Standardkennwörter.
quelle
In der Zwischenzeit bietet die Mercurial- Hosting-Site Bitbucket auch Git-Repositories an.
Wenn Sie also keinen lokalen Server benötigen, sondern nur einen zentralen Ort, an dem Sie private Git-Repositorys kostenlos hosten können, ist IMO Bitbucket die beste Wahl.
Kostenlos erhalten Sie unbegrenzt private und öffentliche Git- und Mercurial-Repositories.
Die einzige Einschränkung besteht darin, dass im kostenlosen Plan nicht mehr als fünf Benutzer auf Ihre privaten Repositorys zugreifen können (für mehr müssen Sie bezahlen).
Siehe https://bitbucket.org/plans für weitere Informationen!
quelle
Wenn Sie Pull-Anfragen wünschen, gibt es die Open-Source-Projekte von RhodeCode und GitLab sowie den kostenpflichtigen Stash
quelle
Wenn Sie Ihr Repository nur an einem zentralen Ort haben möchten, ist dies mit einer verteilten Versionskontrolle wie Git ganz einfach:
Sie können Ihr zentrales Repository einfach in einem freigegebenen Ordner auf einem zentralen Computer ablegen und jeder kann es von dort aus klonen.
Wenn Sie eine "echte" Website auf Ihrem lokalen Server möchten, kenne ich die Git-Hosting-Website http://repo.or.cz .
Es scheint weniger Funktionen als GitHub zu haben, aber im Gegensatz zu GitHub können Sie den Quellcode abrufen und auf Ihrem eigenen lokalen Server hosten.
Haftungsausschluss: Ich habe nur über repo.or.cz gelesen, ich habe es nie selbst versucht!
quelle
Für einfache Setups können Sie ssh-Zugriff auf einen zentralen Server gewähren und das Arbeitsverzeichnis jedes Benutzers so einrichten, dass es von diesem 'Ursprung' aus pusht / zieht. Das wäre das einfachste und gebräuchlichste Setup für kleine Teams.
Sie könnten sich auch mit Gitosis befassen, die Ihnen einen http-Server und die Möglichkeit bietet, ihn remote zu verwalten. Auf diese Weise müssen Sie nicht jedem Committer SSH-Zugriff und alles, was dazu gehört, gewähren.
quelle
Um das zu ergänzen, was Chris gesagt hat, können Sie Gitosis (http://eagain.net/gitweb/?p=gitosis.git) verwenden, um zu steuern, wer tatsächlich auf das Repo zugreifen kann.
Abhängig von Ihrer Verwendung können Sie auch Hooks (im Ordner .git / hooks) verwenden, damit Ihr Code automatisch in das Dateisystem des Servers gezogen wird, wenn Sie von Ihrem lokalen Computer aus pushen. Hier ist ein beliebtes Skript dafür: http://utsl.gen.nz/git/post-update . Dies ist jedoch nicht in allen Fällen erforderlich.
quelle
http://repo.or.cz , während ziemlich gut dazu neigt, einige Probleme mit einigen Benutzern zu haben.
Wenn Sie einer von ihnen sind, empfehle ich Ihnen, http://unfuddle.com auszuprobieren, da Sie aus einem Subversion-Hintergrund stammen.
Schauen Sie sich " The 30 Second Tour " an: http://unfuddle.com/about/tour/plans
quelle
http://code.google.com/p/luna-tool/ ist eine Scala-Anwendung, die die meisten für mich benötigten Teile von Github implementiert
quelle