2009-06-05 4 views
0

Wir versuchen, unser SVN-Repository neu zu strukturieren und einen lib-Ordner unter den Stamm aufzunehmen, um Assemblys zu beherbergen, von denen das Projekt abhängt.SVN-Repository-Struktur und freigegebene Assemblies

Ich bin neugierig zu wissen, wie Sie mit geteilten Baugruppen umgehen? Haben Sie mehrere Kopien davon, die sich über verschiedene Stamm-Lib-Ordner erstrecken? Haben Sie einen Build-Prozess, der automatisch die lib-Ordner aktualisiert, wenn diese Assembly erstellt wird?

Wie gehen Sie damit um, wo Sie sind?

Danke!

Antwort

1

Wir versionieren alle unsere Kernbibliotheken.

So zum Beispiel sieht das SVN wie folgt aus:

/repo/lib1/trunk/

/repo/lib1/tags/1.0

/repo/lib1/tags/1.1

/repo/lib1/branches

...

Dies vermeidet die Situation, in der Sie BC, oder etwas brechen, und es erfordert ein Update für die anderen drei Projekte, die die Bibliothek verwenden.

Weiter verwenden wir svn:externals zu Verbindung diese Bibliotheken in Projekten.

/repo/project1/tags/1.0

/repo/project1/trunk/Bibliothek

...

svn propedit svn:externals /repo/project1/trunk/library 

Geben Sie die folgenden Schritte aus:

lib1 svn: //host/repo/lib1/tags/1.1

... und die Änderung bestätigen.

Project1 selbst folgt der Konvention (Tags für Releases, usw.).

Abhängig von der Sprache Ihrer Wahl gibt es natürlich andere Optionen. Lassen Sie es mich wissen, wenn Sie ins Detail gehen können und ich sehe, ob ich meine Antwort erweitern kann. Aber alles in allem ist es so einfach. Keine anderen Build-Tools erforderlich.

Wir tun alle unsere Bereitstellung direkt aus Subversion (über capistrano). Es ist im Grunde nur Auschecken des Tags und fertig. Ermöglicht sogar eine Heißfixierung. Wenn Sie mir erlauben pimpen meine eigene blog - Ich habe ausführlich zu diesem Thema geschrieben ("Bereitstellung von Svn").

HTH!

1

Für verschiedene Repositorys, die die gleichen Bibliotheken verwenden, verwende ich einen externen Verweis auf das Repository, das die Bibliotheken hostet, so dass sie alle denselben Code verwenden. Wenn innerhalb desselben Repositorys mehrere Projekte vorhanden sind, die die zu kompilierenden Bibliotheken benötigen, kopiert der Erstellungsprozess bei Bedarf von einem übergeordneten libs-Ordner in jeden Projektunterordner.