Gruppen und Untergruppen mehrerer Git-Repositories?

872
Michael

Derzeit habe ich ein paar SVN-Repositories, und es sieht so aus:

Customer1 (this is a proper "SVN Repository") project1 foo82 trunk tags branches bar01 trunk tags branches project2 ... project3 ... ... Customer2 (this is a proper "SVN Repository") tool1 windows-version trunk tags branches mac-version trunk tags branches server-component trunk tags branches ios-app trunk tags branches tool2 (same subfolders as tool1) tool3 (same subfolders as tool1 with slight modifications) Customer3 (similarily complicated folder structure) ... (about 5 more customers) ... 

Ich möchte das alles irgendwie auf git umstellen. Also werde ich wahrscheinlich ein paar Repositories haben:

foo82 bar01 tool1-windows-version tool1-mac-version tool1-server-component tool1-ios-app tool2-windows-version tool2-mac-version tool2-server-component tool2-ios-app ... (150 more projects) ... 

Das Problem besteht nun darin, dass sich alle auf derselben Hierarchieebene befinden. Ich möchte die Git-Repositories in eine Hierarchie einordnen, wie

Customer1 (this is not a repository, just a folder!) project1 (this is not a repository, just a folder!) foo82.git (this is a git repository) bar01.git project2 (this is not a repository, just a folder!) ... (here lie a bunch of git repositories) Customer2 (this is also not a git repository, just a folder!) 

Gibt es ein Tool, mit dem ich hunderte Git-Repositorys verwalten kann und die Repositorys in verschachtelte Gruppen kategorisieren kann? Ich kann nicht sehen, wie ich das zB mit GitHub erreichen kann. Ich möchte gerne Zugriffsrichtlinien für Gruppen definieren (und nicht nur für einzelne Repositorys). ZB möchte ich sagen, dass User1, User2 und User3 Customer1 lesen / schreiben können, und User4-User6 kann Customer2 lesen und schreiben, und User1-User6 kann alle Repos lesen, und User7-8 kann alle Repos lesen / schreiben. User9 ist Admin für alles unter Customer2 und User10 ist Superuser.

Es ist mir egal, wie die Repositorys tatsächlich im Dateisystem des Servers gespeichert werden. Ich bin glücklich, wenn ich nur eine Schnittstelle habe, die vorgibt, dass sie übersichtlich in Gruppen organisiert ist und ich Zugriffsrichtlinien für ganze "Ordner" festlegen kann. Wenn die tatsächlichen git-Repository-URLs auch die sichtbare Projektstruktur widerspiegeln, wäre es schön.

Es wäre sehr dankbar, wenn Sie Tipps zum Verwalten von mehr als 100 Git-Repositories geben, ohne in den Wahnsinn zu geraten.

0

1 Antwort auf die Frage

0
wrksprfct

Sie fragen nach der Organisation von Git-Repos nach (verschachtelten) Ordnern zum Gruppieren / Durchsuchen und für Berechtigungszwecke. Lassen Sie uns zuerst über Berechtigungen sprechen.

Die Tools, die GitHub und Bitbucket zum Verwalten von Benutzern und Gruppen bereitstellen, sind recht flexibel und können sicherlich Ihre Anforderungen erfüllen. In der Tat können Sie mit etwas relativ einfachem fertig werden.

Beispiel: Erstellen Sie zunächst eine Organisation oder ein Team für Ihr Unternehmen. Erstellen Sie anschließend Gruppen, die die Kunden (und / oder die Projekte) widerspiegeln, fügen Sie der Gruppe die gewünschten Benutzer hinzu und erteilen Sie der Repo die Gruppenberechtigung. (IIRC, BB ermöglicht jedem Benutzer in einer Gruppe unterschiedliche Zugriffsebenen, während GH der gesamten Gruppe dieselbe Zugriffsebene zuweist.)

Oder Sie organisieren Gruppen nach funktionalen Teams (iOS-Entwickler, Server-Entwickler usw.) oder auf andere Weise, die für Ihr Unternehmen sinnvoll ist. (Theoretisch könnten Sie für jeden Kunden auch eine einzige Organisation / ein Team mit jeweils eigenen Gruppen zusammenstellen, falls Sie es brauchen.

Der Schlüssel zum Erhalt von Flexibilität und Vernunft besteht darin, Teams in überschaubaren Gruppen zu organisieren und den erforderlichen Teams den Zugriff auf die Repos zu gewähren. Viele Teams können Zugriff auf ein einziges Repo erhalten. Da es jedoch keine Hierarchie gibt, besteht keine Möglichkeit zur Vererbung von Berechtigungen.

Der Superuser-Anwendungsfall ist auch leicht adressierbar: Erstellen Sie ein Superuser-Team, das ihm Zugriff auf alle Repos gewährt. BB hat sogar Standardwerte, die beim Erstellen neuer Repos angewendet werden.

Nun zur Organisation ...

Ich bin noch nicht auf ein Git-Webinterface gestoßen, das die ordnerbasierte Organisation von Git-Repos ermöglicht. Das Modell GH & BB folgt: Team (Organisation) → Repos. Vielleicht fügen sie eines Tages Tags oder andere Metadaten zu Repos hinzu, die für die Organisation verwendet werden können.

Der übliche Navigationsansatz von GH & BB ist die List-Filterung / Suche, die, wie Sie sich vorstellen können, auf einer strengen Repo-Namensstrategie beruht, um effektiv zu sein.

Eine andere Sache, die Ihr Organisationsschema beeinflussen kann, ist die Nutzung von Tickets und Wikis. Tickets und Wikis gelten pro Projekt (Repo) auf GH & BB und können deaktiviert werden. Wenn Sie über externe Tools verfügen (JIRA & Confluence), besteht kein Grund zur Besorgnis.

Das Git-Tool zum Importieren von SVN-Repos ist ziemlich flexibel, so dass Sie es in der Lage sein sollten, es für Ihre Situation ohne großen Aufwand zu nutzen.

Viel Glück!