2016-07-13 12 views
1

in svn gespeicherte Dateisystem Stellen Sie sich vor:Teile Teile git-Repository Gruppe von Benutzern wie in SVN

- a 
    - a1 
    - a2 
    - a3 
    - **a3file1** 
    - **a3file2** 
- b 
- c 
- d 
- .git 

Unter diesem Dateisystem Git Repository definiert.

Was ich tun möchte, ist die Rechte für unsere zwei Gruppen und drei externe Programmierer so zu setzen.

  • erste Gruppe "Admins" wird Rechte auf alle Repository haben.
  • zweite Gruppe "Designer" wird Rechte auf Ordner a (mit Unterverzeichnissen) und b haben.

Und:

  • erster Programmierer a nur Rechte auf Ordner
  • Sekunden auf Ordner a Ausschließen von Dateien a3file1 und a3file2.
  • und der dritte hat nur Rechte für Ordner d.

Wichtige:

Ich bin damit einverstanden, dass irgendeine Art von Lösung separat Definition von subrepositories oder einzelnen Repositories für jeden Ordner sein könnte.
Aber stellen Sie sich vor, dass mein echtes Dateisystem viel komplizierter ist, Rechte an Ordnern zu teilen.

+1

ich nie git Berechtigungen bis auf Dateiebene in git gesehen habe, und ich denke, es ist wahrscheinlich eine schlechte Idee und hoffe, dass es nicht zu tragisch ist, wenn etwas schief geht, wie es definitiv geht. Das heißt, Sie könnten wahrscheinlich etwas einrichten, indem Sie die Berechtigungen in Git-Hooks prüfen. Alternativ und besser: Erstellen Sie für jeden Benutzer/jede Gruppe eigene Zweige und verwalten Sie Berechtigungen auf Zweigstellenebene. –

+0

Ja, ich war besorgt darüber. Aber wie gesagt, die Hoffnung stirbt zuletzt. Ich hoffe immer noch, dass jemand eine Lösung finden wird, um es wie in SVN zu machen. In SVN ist es möglich innerhalb des Zweiges zu definieren, für welche Datei oder Ordner Rechte Gruppen oder Benutzer haben. Aber danke für die Antwort – pesoklp13

Antwort

0

können Sie einstellen, diese Art von feinkörnigem Schreib Level-Zugriff, wenn Ihr repos (als authorization layer) von gitolite verwaltet werden.

Siehe "access rules": Mit VREF syntax können Sie den Push auf Dateien oder Ordner in einem Git Repo beschränken.

Hier ist ein Beispiel. Angenommen, Sie wollen nicht, Junior-Entwickler drängen Änderungen an der Datei Makefile, weil es sehr komplex ist:

repo foo 
     RW+        = @senior_devs 
     RW        = @junior_devs 

     - VREF/NAME/Makefile   = @junior_devs 
+0

Vielen Dank für die Antwort werde ich diese Lösung überprüfen. – pesoklp13

+0

Hallo ich habe deine Lösung ausprobiert, aber das Problem ist, dass es nur für Pull- und Push-Anfragen funktioniert. Was ich brauche ist. Diese Benutzer können nur Dateien oder Ordner mit bestimmten Rechten klonen und anzeigen. Ist so etwas überhaupt möglich? – pesoklp13

+0

@ pesoklp13 nicht möglich innerhalb des gleichen Repos (wenn Sie auf einen Teil eines Repos zugreifen, greifen Sie auf alles zu). Wenn Sie Submodule verwenden, können Sie den Klon für einige Submodule verweigern. – VonC