Frage

Wie speichert man Dateiberechtigungen in einem Repository?Einige Dateien müssen schreibgeschützt sein, um zu verhindern, dass ein Drittanbieterprogramm sie in den Papierkorb wirft. Nach dem Auschecken aus dem Repository werden sie jedoch auf Lese-/Schreibzugriff gesetzt.

Ich habe bei Google nachgeschaut und ein gefunden Blogbeitrag aus dem Jahr 2005 das besagt, dass Subversion keine Dateiberechtigungen speichert.Es sind Patches und Hook-Skripte aufgelistet (es existiert nur noch eine URL).Drei Jahre später speichert Subversion immer noch keine Dateiberechtigungen und sind Hooks die einzige Möglichkeit, dies zu erreichen?(Ich habe nie Hooks gemacht und verwende lieber etwas, das in Subversion nativ ist.)

War es hilfreich?

Lösung

Eine mögliche Lösung wäre, ein Skript zu schreiben, die Sie mit dem Rest des Codes Check-in und die als ersten Schritt des Build-Prozesses ausgeführt werden.

Dieses Skript läuft durch Ihre Kopie der Code-Basis und Sätze lesen Berechtigungen für bestimmte Dateien.

Im Idealfall würde das Skript die Liste der Dateien aus einer einfachen Eingabedatei gelesen. Dies würde es leicht zu pflegen und einfach für andere Entwickler zu verstehen, welche Dateien markiert bekommen als schreibgeschützt.

Andere Tipps

SVN hat die Möglichkeit, Metadaten zu speichern ( Eigenschaften ) entlang mit einer Datei. Die Eigenschaften sind im Grunde nur Schlüssel / Wert-Paare, jedoch gibt es einige spezielle Tasten wie die ‚svn: executable‘, wenn diese Eigenschaft für eine Datei vorhanden ist, wird Subversion das Dateisystem des Ausführungs-Bit für diese Datei festgelegt, wenn die Datei auszuchecken. Während ich weiß, das ist nicht genau das, was Sie suchen es gerade genug sein könnte (für mich).

Es gibt noch andere Eigenschaften für Zeilenende (svn: eol-style) und Mime-Typen (svn: mime-type)

.

Es gibt keine native Möglichkeit Dateiberechtigungen in SVN zu speichern.

Sowohl ASVN und die Patch aus dieser Blog-Post scheint auf dem (und gehostet wird offizielle SVN-Repository), und das ist eine gute Sache, aber ich glaube nicht, dass sie ein solche Metadaten in der Core-Version jederzeit schnell handhaben.

SVN hat die Fähigkeit hatte zu behandeln symbolische Links und

Da dies nicht vollständig, die in früheren Antworten vor. Ich hasse obwohl zombied Fäden wieder zu beleben.

Da das Hinzufügen Erlaubnis Unterstützung für SVN würde mehrere Betriebssysteme und Berechtigungstypen aufnehmen müssen, NFS, POSIX, Arwed und RACF

Dies würde SVN aufgebläht, möglicherweise mit widersprüchlichen Berechtigungstypen wie NFS und POSIX, oder öffnen mögliche Exploits / Sicherheitslücken kollidieren.

Es gibt ein paar Workarounds. pre-commit, post-commit, Start-begehen die am häufigsten verwendet werden und sind ein Teil des Subversion-System. Aber können Sie die Berechtigungen mit steuern, was auch immer die Sprache der Programmierung Sie möchten.

Das System I umgesetzt ist, was ich als ein Verpacker, dass die engagierten Dateien der Arbeitskopie bestätigt, dann eine Metadatendatei analysiert, die aus listet die Standardberechtigungen gewünschten Dateien / Ordner, und alle Änderungen an sie auch wünschen .

Owner, Group, Folders, Files
default: <user> www-user 750 640
/path/to/file: <user> non-www 770 770
/path/to/file2: <user> <user> 700 700

Sie können auch auf diese erweitern und Dinge wie automatisierte Bewegungs erlauben, sie umbenennen, Tagging Revision von Arten, wie Alpha-, Beta-, Release Candidate Release

Was Kunden zur Kasse Ihrer Repository-Dateien mit Berechtigungen an sie zu unterstützen. Sie sind besser in der Suche ein Installationsprogramm Ihres Pakets zu schaffen und dass als Ressource an.

Stellen Sie sich vor Menschen mit einem ausführbaren ihren Repositories Einstellung in es mit Berechtigungen von root eingestellt: www-user 4777

Diese ist der aktualisierte Link für SVN-Patch, die korrekt Datei Unix Stil Berechtigungen behandelt. Ich habe auf fedora12 getestet und scheint wie erwartet zu funktionieren:

ich gerade gespeichert haben es / usr / bin / ASVN und ASVN statt svn Befehl verwenden, wenn ich Berechtigungen korrekt behandelt müssen.

Viele Antworten haben erklärt, dass svn speichert keine Dateiberechtigungen. Das mag richtig sein, aber ich war in der Lage eine DLL-Datei zu lösen, ohne Berechtigungen ausführen Problem einfach durch diese Schritte:

  1. chmod 755 badpermission.dll
  2. mv badpermission.dll ../
  3. svn update
  4. svn rm badpermission.dll
  5. svn commit badpermission.dll -m "entfernen dll Berechtigungen zu beheben"
  6. mv ../badpermission.dll.
  7. svn add badpermission.dll
  8. svn badpermission.dll commit -m "Fügen Sie die DLL zurück Berechtigungen zu reparieren"
  9. rm badpermission.dll
  10. svn update
  11. badpermission.dll kommt zurück mit Ausführungsberechtigungen

@morechilli:

Die ASVN Wrapper von meiner früheren Post und der Blog in der Post OP scheinen zu tun, was Sie vorschlagen. Obwohl es die Berechtigungen in den entsprechenden Dateien Repository Eigenschaften im Gegensatz zu einer einzelnen externen Datei gespeichert werden.

würde ich empfehlen, Berechtigungen zu generieren Karte unter mtree Dienstprogramm (FreeBSD hat es in der Standardeinstellung), speichern Sie die Karte im Repository, und, wie oben erwähnt wurde, einen Skript ausführen, die richtigen Dateiberechtigungen von der Karte als ersten wieder herstellen würde Schritt des Build-Prozesses.

Locking würde dieses Problem nicht lösen. Locking stoppt andere aus der Bearbeitung der Datei. Dies ist eine Drittanwendung, die als Teil des Build-Prozesses ausgeführt wird, die in eine Datei zu schreiben versucht - Ändern es -, die den Build-Prozess bricht. Deshalb müssen wir aus Ändern der Datei, um das Programm zu stoppen, die einfach ist die Datei schreibgeschützt markiert. Wir möchten, dass Informationen im Repository gehalten werden und führte über checkins, Zweige usw.

Graham, tut svn nicht speichern Berechtigungen. Ihre einzige Option ist Ihren Anruf zu wickeln in einem Skript svn. Das Skript sollte rufen svn mit seinen Argumenten, setzen Sie dann die Berechtigungen danach. Je nach Umgebung, müssen Sie Ihr Skript svn anrufen und optimieren Sie Ihre PATH es, um sicherzustellen, wird aufgerufen.

Ich mag morechilli Idee, die Liste der Dateien und Berechtigungen haben in das Repository eingecheckt selbst.

Wir haben eine Batch-Datei dies für uns zu tun. Wäre obwohl tatsächliche Unterstützung in Subversion bevorzugen ...

Erwägen Sie svn lock andere nicht zulassen aus Schreiben in die Datei.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top