2013-06-08 9 views
6

Gibt es ein verteiltes Versionskontrollsystem, das Benutzern mit Unterordner-Granularitätsebene Lese-/Schreibzugriff gewähren kann?Verteilte Versionskontrolle und Zugriffskontrolle

, d. H., Wenn ich Zugriff auf /foo Baum für BenutzerA und nur auf /foo/bar für UserB geben möchte?

UPD so weit ich verstehe, ist dies unmöglich für Git (es behandelt Repository als Ganzes nur). Was ist mit Bazaar und Mercurial?

UPD immer noch auf der Suche nach einer besseren Antwort.

+0

Ich bin nicht vertraut mit verteilten VCS, aber ich vermute, Sie werden bessere Antworten erhalten, wenn Sie definieren, ob Sie "Lesezugriff" oder "Schreibzugriff" bedeuten. – maxim1000

+0

@ maximum1000, ich meine sowohl Lese- als auch Schreibzugriffskontrolle. – fithu

+1

Nicht wirklich eine Antwort, aber wenn Sie keine Lösung mit DVCS finden, können Sie versuchen, SVN-Repository mit bestimmten Lese-/Schreibzugriffsrechte und verwenden Sie verschiedene Brücken zu DVCSs. – maxim1000

Antwort

-1

BEARBEITEN: Gerade überprüft die Kommentare, OP ist für beide Lese-/Schreibzugriff suchen, daher zurückziehen diese Antwort.

Nein, es ist nicht unmöglich für Git. Das Projekt Gitolite ist sehr ausgereift und bietet seit vielen Jahren fein abgestufte Zugriffsberechtigungen (Repo-/Zweig-/Verzeichnis-/Dateiberechtigungen).

Ein spezifisches Beispiel auf Änderungen in einer einzigen Datei zu beschränken finden Sie hier: http://gitolite.com/gitolite/vref.html#NAME

Ein paar einfache Beispiele sind here und ausführlichere Dokumentation über die Definition von Regeln ist auch available here.

Edit: Hinzugefügt einen anderen Link

+0

Es ist eher unmöglich, jemandem Lesezugriff auf nur einen Teilbaum eines Git-Repositorys zu geben. Das war Teil der Frage. – Novelocrat

+0

@Novelocrat, gitolite * kann * tun! [Aktivieren Sie dieses Kontrollkästchen] (http://gitolite.com/gitolite/vref.html#NAME). Es gibt ein Beispiel, um Änderungen an einer einzelnen Datei ausdrücklich zu deaktivieren. – Subhas

+0

Das ist eine Beschränkung auf Push (Schreiben), nicht auf Lesen. Lesen Sie den Kommentar des OP. – Novelocrat

0

Ein Schreibschutz Mercurial, Subversion oder git hinzugefügt werden können, durch SCM-Manager und die Path Writeprotect Plugin verwenden. Sie können einen Pfad und Benutzer oder Gruppen mit Schreibzugriff darauf definieren.

+0

Die Frage war auch Leseschutz. – fithu

+0

Leseschutz funktioniert nicht für git und mercurial, da immer das gesamte Repository geklont werden muss.Ist es möglich, dass Sie mit einem Subrepository anstelle eines Ordners arbeiten? – DaSilva2010

+0

Ansonsten kann Subversion in Kombination mit Apache tun, was Sie wollen, indem Sie Zugriffsberechtigungen für die Apache-Konfiguration festlegen. [http://svnbook.red-bean.com/nightly/en/svn.serverconfig.httpd.html#svn.serverconfig.httpd.authz.perdir.ex-3] – DaSilva2010

0

Wie in einem Kommentar @max1000 angemerkt wurde, kann der beste Weg, dies zu erreichen, darin bestehen, einen Subversion-Server auszuführen, der eine differenzierte Zugriffssteuerung sowohl für Lese- als auch für Schreibvorgänge pro Pfad und Zweig durchführt . Wenn Benutzer die Leistungsfähigkeit eines DVCS-Clients wünschen, können sie dann git svn oder hg svn verwenden, um die Teile des Repositorys zu importieren, auf die sie Zugriff haben, und entsprechend interagieren. Es sollte sogar für jemanden mit höherem Zugriff möglich sein, Änderungen an einer Unterstruktur von jemandem mit niedrigerem Zugriff zusammenzuführen, ohne die ausgezeichneten Merge-Tools zu verlieren, die die DVCS-Implementierungen bereitstellen.