Gitolite, das jedem Benutzer des Git-Servers eine einfache Zugriffsverwaltung ermöglicht. Es gibt einen Artikel über das Setzen von Beispielen auf der Straße, aber fast alle Operationen von Capitolit sind eine Sammlung von Operationen, die für vertraute Personen üblich sind, wie "Erstellen eines Schlüsselpaars" und "Festschreiben", anstatt eines bestimmten Verfahrens Ist es nicht schneller, die notwendigen Anforderungen zu schreiben?
Dies ist also ein Artikel anstelle eines Memos. Ich habe es in der Erinnerung an die erste Installation geschrieben, daher kann es zu Fehlern kommen. Wenn ich es erneut einrichten muss, kann ich es vielleicht reparieren?
Die Installationszielserverumgebung ist CentOS 7, aber wenn Sie yum verwenden können, gibt es keinen großen Unterschied.
Ist es nicht möglich, dass Git nicht enthalten ist?
Erstellen Sie mit ssh-keygen usw. ein Schlüsselpaar für den Administrator. Der öffentliche Schlüssel wird auf der Serverseite benötigt. Der private Schlüssel wird vom Administrator für den Remotezugriff verwendet (auf dem Server nicht erforderlich).
"Yum install gitolite 3" mit aktiviertem EPEL. Durch diesen Vorgang wird automatisch der Benutzer "gitolite3" für den gitolite-Betrieb erstellt. Legen Sie außerdem einen Committer fest, damit dieser Benutzer bei der Initialisierung automatisch festgeschrieben wird (wahrscheinlich erforderlich). So was
# yum install gitolite3
# su - gitolite3
$ git config --global user.Name Benutzername
$ git config --global user.E-Mail-Adresse
Ich habe auch einen Artikel gesehen, der Einstellungen für die Verwendung von Japanisch im festzuschreibenden Dateinamen enthielt, bin mir aber nicht sicher, wie wichtig dies ist.
Da der Benutzer gitolite3 durch die obige Arbeit erstellt wurde, initialisieren Sie gitolite3 mit dem zuvor erstellten öffentlichen Schlüssel.
$ gitolite setup -pk Öffentliche Verwaltungsschlüsseldatei
Dies ist das Ende der Arbeit auf der Serverseite. Da in gitlite ein Repository mit dem Namen "gitolite-admin" erstellt wurde, wird es von der Remote-Seite hauptsächlich durch Festschreiben an das Repository verwaltet.
Voraussetzung für den Zugriff von einem Administratorkonto ist der Zugriff "mit einem privaten Administratorschlüssel" und "als Benutzer gitolite3". Fügen Sie beispielsweise den folgenden Eintrag zu .ssh / config hinzu
Host gitoliteadmin (bitte wählen Sie Ihren Lieblingsnamen)
Hostname Hostname, IP-Adresse usw.
User gitolite3
IdentityFile ~/.ssh/Dateiname des privaten Schlüssels
Versuchen wir "ssh gitolite admin". Natürlich ist es in Ordnung, die obigen Informationen als Option des Befehls ssh festzulegen (es ist in Ordnung, aber schließlich ist das Hinzufügen eines Eintrags zur Konfiguration durch Git-Operation fast unerlässlich). Wenn Sie eine Anmeldemeldung erhalten und die Verbindung getrennt wird, sind Sie erfolgreich.
hello gitadmin, this is gitolite3@*** running gitolite3 3.6.12-1.el7 on git ***
R W gitolite-admin
R W testing
Sie können das Management-Repository "gitolite-admin" mit den oben genannten Zugriffsinformationen klonen. Aus dem Befehl git
git clone gitoliteadmin:/gitolite-admin
Sie können es mit Ihrem Lieblings-Git-Client tun.
Um einen Benutzer hinzuzufügen, fügen Sie einfach den öffentlichen Schlüssel des Schlüsselpaars des Benutzers hinzu (festschreiben), den Sie dem gitolite-admin-Repository hinzufügen möchten.
Wenn Sie beispielsweise "privater Schlüssel: git-user1.pem, öffentlicher Schlüssel: git-user1.pub" haben, geben Sie git-user1.pub in (geklont) gitlite-admin / keydir und git commit & push ein. Ich werde es dir geben. Der private Schlüssel wird vom Benutzer gehalten und für den Zugriff verwendet.
Wichtig ist, dass "dieser Dateiname mit öffentlichem Schlüssel zur Benutzerkennung für die Zugriffskontrolle wird". Achten Sie daher beim Registrieren des öffentlichen Schlüssels auf den Dateinamen. Wenn der Dateiname "git-user1.pub" lautet, lautet die Benutzerkennung "git-user1".
Im Ausgangszustand sollte gitlite-admin / conf / gitolite.conf den folgenden Inhalt haben.
repo gitolite-admin
RW+ = gitadmin
repo testing
RW+ = @all
Fügen Sie dieser Datei eine Zeile mit dem Namen "Repo New Repository Name" und eine Zeile mit der Zugriffsberechtigung "RW + =" hinzu, und git commit & push sowie das Hinzufügen eines Benutzers. das ist alles. Vielleicht einfacher als Git Init auf dem Server?
repo gitolite-admin
RW+ = gitadmin
repo testing
RW+ = @all
repo new-repository
RW+ = @all
Legen Sie für die Berechtigungseinstellung die Benutzerkennung oder Gruppe fest, auf die Sie nach "RW + =" zugreifen möchten. Wenn Sie mehrere Benutzer oder Gruppen festlegen möchten, ordnen Sie diese durch Leerzeichen getrennt an. Gruppen werden in derselben Datei wie "@ group1 = git-user1 git-user2" definiert. Eine Gruppe namens "@all" wird in den Ausgangszustand versetzt. Es gibt drei Arten von Berechtigungen: "R (schreibgeschützt)", "RW (schreibgeschützt / schreibgeschützt)" und "RW + (alle möglich)".
@group1 = git-user1 git-user2
repo gitolite-admin
RW+ = gitadmin
repo testing
RW+ = @all
repo new-repository
RW+ = gitadmin
RW = @group1
R = git-user3 git-user4
Der Zugriff von Benutzern ist grundsätzlich der gleiche wie der Administrator. Voraussetzung ist der Zugriff auf "mit dem privaten Schlüssel des Benutzers" und "mit dem Benutzer gitolite3". Als Beispiel für .ssh / config dachte ich, dass es so ist ... aber es ist völlig anders als das für die Verwaltung (weil der private Schlüssel anders ist).
Host Gitolite (bitte wählen Sie Ihren Lieblingsnamen)
Hostname Hostname, IP-Adresse usw.
User gitolite3
IdentityFile ~/.ssh/Dateiname des privaten Schlüssels
Dies ist auch dasselbe wie beim Administrator. Wenn Sie ssh gitolite ausführen, wird eine Liste der verwendbaren Repositorys angezeigt. Versuchen wir, "Testen" zu klonen.
git clone gitolite:/testing
Ich erhalte die Warnung "Warnung: Sie scheinen ein leeres Repository geklont zu haben." (Wenn niemand etwas festgeschrieben hat), aber es ist mir egal.
In den meisten Fällen möchten Sie bei Verwendung von Capitolit ein Repository migrieren, auf dem Raw Git ausgeführt wurde. Diese Arbeit wird hauptsächlich auf der entfernten Seite ausgeführt. Dies ist eines der Verwaltungsmaterialien, aber es ist besser, es nach dem Hinzufügen von Benutzern zu tun, daher werde ich es hier schreiben.
Führen Sie zunächst das oben erwähnte "Repository hinzufügen" mit dem Verwaltungskonto aus. Der Vorgang ändert sich auch bei Migration nicht. Wenn ein neues Repository erstellt wird, ist es einfach, "einen Git-Server hinzuzufügen" und "Git-Push" auf der Remote-Seite (es gibt ein vorhandenes Repository).
Als Voraussetzung wird davon ausgegangen, dass Sie sich in dem Repository befinden, das Sie mit dem Benutzerkonto auf der Remote-Seite migrieren möchten. Wenn der Repository-Name "repo1" ist
git remote add gitolite ssh://gitolite/repo1 #Git-Server hinzufügen
git push gitolite master #Grundinformation+Master Push
git push gitolite --all #Andere Zweige als Master Push
git push gitolite --tags #Etikett
Wird sein. Dadurch wird der Inhalt des vorhandenen Repositorys als Repository in Gitolite registriert. Wenn Sie viele Migrationsrepositorys haben, erstellen Sie ein Shell-Skript oder was auch immer.
Durch diesen Vorgang sollte "gitolite" zusätzlich zu "origin" zu Ihrer .git / config hinzugefügt werden. Sie können es so lassen, wie es ist, aber wenn Sie nicht auf das ursprüngliche Repository zugreifen müssen oder origin anstelle von gitolite verwenden möchten, können Sie erneut von gitolite klonen oder .ssh / config bearbeiten. Okay (ich habe Letzteres getan)
Sobald Sie es kennen, dauert die Einrichtung weniger als eine Minute (mit Ausnahme der Repository-Migration).
In der Erklärung verwende ich hauptsächlich den Befehl git, aber verschiedene Commit & Push-Aktionen können bequem mithilfe des Quellbaums ausgeführt werden.
Recommended Posts