2009-08-20 6 views
1

Meine Mitarbeiter und ich finden oft, dass wir verschiedene Eigenschaften von svn: ignore und svn: externals für unsere eigenen Arbeitskopien eines Projekts festlegen möchten. Es scheint nicht so, als ob die svn-Funktionalität in Bezug auf die Eigenschaften erfordert, dass diese Eigenschaften versioniert werden, aber wir haben noch keinen Weg gefunden, diese Eigenschaften zu widerrufen.Ist es möglich, benutzerspezifische svn: x-Eigenschaften (z. B. svn: ignore und svn: externals) in Subversion zu haben?

Antwort

2

Nein, Eigenschaften sind spezifisch für die Datei/das Verzeichnis, auf das sie eingestellt sind. Benutzerspezifische Eigenschaften existieren nicht.

Warum brauchen Sie verschiedene svn: externals? Eine Möglichkeit, dies zu tun, besteht darin, ein eigenes Verzeichnis im Repository zu haben, das nur externe Elemente enthält. Auf diese Weise können Sie Ihre eigenen Äußerlichkeiten kontrollieren.

Über die Konventionen und das Layout des Repositorys müssen Sie sich einigen. Subversion erlaubt Benutzern nicht wirklich, ihre Sicht auf das Repository anzupassen.

0

Um diese Eigenschaften zu widerrufen, löschen Sie sie aus dem Ordner oder der Datei, an die sie angehängt sind (dann commit). Wenn Sie die Befehlszeile verwenden, können Sie "svn propdel" verwenden, um sie zu entfernen.

Properties in SVN sind auf dem Server gespeichert, sie sind nicht Arbeitskopie Konstrukte, so dass Sie nicht die gleiche Eigenschaft für verschiedene Benutzer festgelegt haben können.

Um verschiedene 'Ansichten' des gleichen Codes zu erhalten, können Sie stattdessen in branching suchen, jeder von Ihnen arbeiten an Ihren eigenen Filialen und regelmäßig Ihre Änderungen in den Kofferraum zusammenführen. Das klingt nach dem Workflow, den Sie mit unterschiedlichen Eigenschaften pro Benutzer erreichen möchten.

Für eine andere Betrachtungsweise von svn: ignore können Sie auf Ihren Clients verschiedene 'global-ignores' einstellen.

+0

Danke! Dies ist eine gute Antwort auf meine Frage. Es sieht wirklich so aus, als wäre Verzweigung der beste Weg, um zu erreichen, was ich versuche, obwohl es nicht besonders praktisch ist. Dies ist eine Art Nischenanwendung, da CADENCE zusammen mit svn verwendet wird, aber das führt zu guten Gründen für diese Fähigkeit. Obwohl es sich um eine Nischenanwendung handelt, scheint die Implementierung dieser Fähigkeit nicht zu schwierig zu sein (es gibt bereits benutzerdefinierte Eigenschaften, die versioniert werden können oder nicht). Vielleicht auf eine zukünftige Version ... –

+0

das Problem ist: Wo würdest du diese Eigenschaften setzen, wie sie auf dem Server leben. Das Hinzufügen von benutzerspezifischen Requisiten zu jeder Datei würde schnell unübersichtlich werden. Verzweigen ist was du willst, es ist viel bequemer, als du denkst, wenn du es zweimal getan hast, und deutlich leistungsfähiger, als du herausfinden wirst, wenn du beginnst zu erkennen, was du sonst noch tun kannst. – gbjbaanb

0

Muhahahahaha!

A völlig unpraktische Lösung zu bekommen benutzerspezifischen (na ja, eigentlich arbeitsplatzspezifische) svn: externals:

Erstens haben jeden Entwickler eine Subversion-Repository auf ihrer eigenen Maschine erstellen, und ein wenig svnserve laufen Instanz, um es zugänglich zu machen.

Lassen Sie jeden Entwickler die gewünschte Eigenschaft svn: externals im Stammverzeichnis des Repository festlegen

svn co svn://localhost/local-externals 
svn pe svn:externals local-externals 
... 
svn commit local-externals 

In Ihrem zentralen Repository, gehören svn: externals Verweis auf svn: // localhost/local-externals

svn co svn://example.com/repo/project/trunk 
svn pe svn:externals 
    ... define an reference to svn://localhost/local-externals 
svn commit trunk 

nun jeder Entwickler den Stamm Check-out aus ihren Äußerlichkeiten Verzeichnis erhalten ihre lokales externes Repository eingezogen, das wiederum die Teile des Hauptrepositoriums einziehen kann, die sie in ihren Checkout miteinbeziehen wollen.

Sie könnte dies tun, aber ich denke, ich würde mich selbst für nachweislich verrückt für diese in Betracht ziehen.

+0

Danke! Wie Sie vorschlagen, werde ich wahrscheinlich nicht so weit gehen, aber ich mag das kreative Denken und das böse Lachen. –

2

Denken Sie an SVN als ein Dateisystem. Wenn Sie Ihre Ziele erreichen wollten, was würden Sie in einem Dateisystem tun? Jeder von Ihnen würde irgendwo eine Kopie der Originaldateien erstellen.

Sie können das gleiche mit Subversion (svn copy) tun. Eigenschaften, die in den neuen Unterverzeichnissen festgelegt sind, gelten nur für diese Unterverzeichnisse und nicht für die Originaldateien.

Aber es gibt einen Preis: Sie müssen Ihre Änderungen jetzt manuell synchronisieren (zusammenführen) (genau wie Sie tun müssten, wenn Sie dies im lokalen Dateisystem ohne Subversion tun).

Ich bin mir nicht bewusst, dass VCS erlaubt, was Sie wollen, kostenlos.

Verwandte Themen