Wenn Sie das Attribut svn:needs-lock
für alle Dateien im Tag festlegen, werden alle Dateien als schreibgeschützt ausgecheckt, es sei denn, der Benutzer erwirbt explizit eine Sperre. Dies wird (in den meisten Fällen) verhindern, dass Dateien geändert werden. Es hindert niemanden daran, das Nur-Lesen-Flag zu ändern oder eine Sperre zu erhalten, aber es verringert die Wahrscheinlichkeit versehentlicher Änderungen.
Subversion selbst kann das Attribut svn:needs-lock
nicht auf einen Ordner anwenden, aber im TortoiseSVN-Client (Windows) zum Beispiel, wenn Sie dies versuchen, wendet es stattdessen die Eigenschaft auf alle Dateien im Ordner und den Unterordnern an. Sie können dies nicht vom Replay-Browser TortioseSVN aus ausführen. Sie müssen also eine Arbeitskopie des Tags auschecken, die Eigenschaften ändern und dann die Eigenschaftenänderungen einchecken. Andere Kunden können variieren; Wenn Sie den nativen Subversion-Befehlszeilen-Client verwenden, ist möglicherweise ein geeignetes Shell-Skript oder ähnliches erforderlich, um Dateien und Unterordner zu durchlaufen, um das Attribut in großen Mengen anzuwenden. TortoiseSVN warnt Sie zumindest, wenn Sie versuchen, etwas in einem Ordner Tags
zu ändern - aber das ist nur eine Konvention, keine Durchsetzung.
Die svn:needs-lock
Lösung ist etwas schwach und leicht zu umgehen und verhindert nicht, dass neue Dateien zu einem Tag-Ordner hinzugefügt werden; Eine stärkere Alternative besteht darin, einen Dummy-Benutzer zu erstellen und eine Sperre für das gesamte Tag unter diesem Benutzernamen zu erhalten. Dies verhindert, dass "echte" Benutzer einchecken können, und für Work-Copy-Checkouts wird ihr schreibgeschütztes Attribut wie bei svn:needs-lock
gesetzt - der Unterschied besteht darin, dass sie keine Sperre erhalten und die Option ändern können Lesezugriffsattribut für Arbeitskopie lässt das Einchecken ebenfalls nicht zu.
Pre-Commit-Hooks sind Skripte, die komplexere Dinge tun können, wie z. B. nur Änderungen in den Tag-Verzeichnissen durch bestimmte Benutzer zulassen. –
Wenn ein Pre-Commit-Hook der offizielle Weg ist, werde ich stattdessen das SVN-Attribut "svn: needs-lock" für alle Dateien setzen. – Alexander
Setzen Sie die Eigenschaft nicht auf alle Dateien ... Dies ist gegen die Idee von SVN. Die Antwort zur pfadbasierten Autorisierung ist der richtige Weg. – khmarbaise