2008-10-28 7 views
17

svn: externe können groß sein, um in zentralen Bibliotheken oder IP in ein Projekt zu saugen, so dass sie in einem für alle zugänglichen Ort gehalten werden können.Wie bekomme ich die Funktionalität von svn: externals schreibgeschützt?

Aber wenn ich Leute zu externen Tags der allgemeinen IP frage (so ändert es sich nicht auf ihnen), öffnet sie die Möglichkeit, dass sie unbeabsichtigt Änderungen am Tag vornehmen.

Wie kann ich svn: externals schreibgeschützt machen? Es ist akzeptabel, wenn es ein zusätzliches Argument oder eine Art gibt, das Äußere so zu machen, dass wir es dem Verfahren hinzufügen können, damit jeder es befolgen kann.

+2

Ich verstehe, was Leute darüber sagen, wie dies nicht benötigt werden sollte. Sie brauchen auch keine Parkbremse, aber es ist eine gute Idee, eine zu benutzen. Es wäre schön, wenn dies möglich wäre, ohne Apache zu modifizieren, was für die meisten Benutzer nicht verfügbar ist, ohne dass der Administrator beteiligt ist. – rdb78

+0

Beachten Sie, dass die Befehlszeilenschnittstelle nicht in externe Dateien zurückkehrt, wenn sie standardmäßig festgeschrieben wird. Änderungen an externen Elementen werden in der grafischen Benutzeroberfläche von Tortoise ausgegraut, wenn das Commit vom übergeordneten Arbeitsverzeichnis aufgerufen wird. Dies macht versehentliche Commits für das externe Projekt weniger wahrscheinlich. – raek

Antwort

3

Machen Sie die externen Repositorys für alle Benutzer außer ihren Betreuern schreibgeschützt.

+2

Und was ist, wenn Sie nicht wollen, dass die Betreuer über das externe Committee committed, aber müssen Sie den Code pflegen? – Andy

+1

kann es sein, dass die meisten Entwickler sind Betreuer an beiden Standorten – n611x007

1

Tatsächlich erkennt TortoiseSVN, dass Sie versuchen, über den Commit-Hook einen Tag zu committen, und warnt den Benutzer davor, was im Grunde meine Anforderung für eine Geschwindigkeitsschwelle erfüllt. Also sind wir schon gut.

5

Verwenden von Svn-Repository-Hooks, um zu verhindern, dass Sie in spezielle Verzeichnisse wechseln, z. Tags

Wenn Sie die Namenskonvention ttb (trunk, tags, branches) und den Code für schreibgeschütztes svn verwenden: externer Zugriff befindet sich in tags-Verzeichnissen, können Sie den Pre-Commit-Hook verwenden, um das Commit zu vermeiden diese Verzeichnisse.

Here're sind die Details: SVN pre-commit hook for avoiding changes to tags subdirectories

+0

Scheint wie der beste Weg, um zu erreichen, was das OP will. – Andy

1

Nehmen Sie die externen Repositories schreibgeschützt zu jedem außer ihrem Betreuer.

Ich stimme der J. John Antwort oben vollständig zu. Das Erstellen eines Vorab-Hooks ist übertrieben. svn: externals (ist einfach ein Verweis auf ein externes Repository, daher der Name) und befindet sich also immer noch in einem separaten Repository (Sie können dies überprüfen, indem Sie auf die ausgecheckte externe und tun 'svn info | grep URL') so einfach Legen Sie in diesem externen Repo die erforderliche Berechtigung an. Etwas wie:

[external_repo] 
@maintainer = rw 
@others = r 

Und aus Repo (lassen Sie uns dies REPOA nennen), wo diese als „extern“ definiert ist (wir den externen Repo als repoB nennen), brauchen Sie nichts weiter zu tun. Wenn jemand (außer der Person, die Teil von @maintainers ist) versucht, sich mit dem Code, den er/sie aus RepoA ausgecheckt hat, an das externe Repo zu binden, wird commit an das externe RepoB weitergeleitet und damit die Berechtigung, die Sie festgelegt haben oben auf diesem Repo wird das Commit einleiten und blockieren.

Hoffe, dass diese Hilfe Dinge klären.

Ismael Casimpan :)

+1

Was ist, wenn die meisten Entwickler an beiden Standorten Betreuer sind? – n611x007

Verwandte Themen