Berechtigungsprobleme mit dem teilen ein GIT-Remote-Repository

Habe ich ein GIT repository zu verwalten, dass ich für mein Büro. Weil die Firmenpolitik kann man auch keine externen hosting-Anbieter wie GitHub und dergleichen. Also, ich bin Links, um zu tun, was ich kann mit unserem lokalen Netzwerk.

Jeder schafft Ihre eigenen lokalen repositories, aber wir haben auch ein remote-repository, dass unsere Nutzer die push-to - (und zugänglich sind Anwendungen wie Hudson und Fisheye), die ähnlich wie ein zentrales repo wäre in subversion. Jeder Benutzer hat den öffentlichen Schlüssel-setup, so dass Sie ausführen können, ohne Kennwort-Authentifizierung auf die box hosting unser remote repository.

Für unsere remote-repository, ich habe Sie so konfiguriert werden gemeinsam im "group" - Modus:

git config core.sharedRepository group

Alle unsere Benutzer sind auch Mitglieder der git-Gruppe, aber das ist nicht die primäre Gruppe für viele Benutzer. Es scheint, als git erstellt oder aktualisiert keine Objekte auf "push", es verwendet die primäre Gruppe des Benutzers. Stattdessen muss es um die Verwendung des gemeinsamen "git" - Gruppe, die jeder Benutzer Mitglied ist. Ich habe gesehen, Dokumentation im web, die zuvor diskutiert-Einstellung sticky-bit, aber es schien zu unterscheiden, basierend auf der Quelle und hat nicht wirklich was mit der Frage der Schaffung einer gemeinsamen Gruppe (, wenn ich mich einfach nur Dateien beliebig schreiben können, ich könnte genauso gut machen Sie 777).


Update:

Mit Matthew Flaschen ist Antwort unten

chgrp -R git repo.git 
find repo.git -type d -exec chmod g+rws {} +

War ich in der Lage, erstellen Sie ein repository, das konnte jeder push-und pull-gemeinsam aus. Ich werde auch einen Blick in gitolite, aber meine Bedürfnisse sind ziemlich einfach, und unserer Umwelt erlaubt für Benutzer und Schlüssel werden automatisch konfiguriert, so dass es nicht als Schlüssel. Allerdings möchte ich sicherstellen, dass ich den Umgang mit diesem zu korrigieren.

Meine repository-Struktur enthält eine top-level-Verzeichnis (remote-repos) und Unterverzeichnisse für jeden meiner repositories (app-1.git, app-2.git, Bibliothek-1.git, etc). Ich sollte in der Lage sein, gelten die chmod g+rws {} + dem top-level-Verzeichnis (remote-repos) anstelle der einzelnen repo, richtig? Der find-Befehl

find /opt/remote-repos -type d -exec ...

Findet alle Verzeichnisse unter /opt/remote-repos Lage, und führt einen Befehl auf Sie. Der Befehl (chmod g+RW) sorgt dafür, dass die Gruppe kann Lesen und schreiben diese Dateien, sowie legt die klebrigen Wette so dass die angegebene Gruppe ist immer bei der Ausführung verwendet. (Ich habe keine Ahnung, wie die {} + - Teil, ich gehe davon aus, dass die mit der find-exec-option).

Sowieso, möchte nur bestätigen, dass mein Verständnis für diese Lösung richtig ist.

Weitere Referenzen:

  • Es könnte einfacher sein, richten Sie eine HTTP-basierte Lösung, und nur der server-Prozess schreiben an die zentrale repository-Dateien.
  • Sie sollten einen Versuch geben, um gitolite!
  • Während gitolite-sieht gut aus, ich habe bereits viel von der Funktionalität (ssh-Zugang, Schlüssel, etc.) gebacken in meiner enviro. Das einzige Stück, das wirklich fehlte, war die richtige Gruppe Berechtigungen.
InformationsquelleAutor J Jones | 2011-03-15
Schreibe einen Kommentar