none
C#-Projekte mit Subversion (SVN) verwalten RRS feed

  • Frage

  • Hallo Forum,

    gehört vielleicht nicht 100%ig hierher, aber viele von euch arbeiten doch bestimmt auch mit C# und SVN.

    Es geht einfach um die Projektorganisation von C#-Projekten mit SVN. Habe nun schon einige Projekte gemacht, bin

    mir aber nicht sicher ob es so richtig ist.

    Voraussetzungen:

    1. Es gibt projektspezifische Exe-Projekte (Hauptprojekt, meistens WinForms-Anwendungen, VS 2013).

    2. Es gibt projektspezifische DLL-Assemblies, die von dem Hauptprojekt referenziert werden

    (WinForms-Custom/Usercontrols, VS 2013).

    3. Es gibt allgemeine, projektunabhängige DLL-Assemblies, die von dem Hauptprojekt referenziert

    werden (IO-Dateizugriffe, REgistryzugriffe, etc., VS 2013).

    So hab ich es bisher gemacht:

    1. Für ein neues Projekt lege ich einen neuen Ordner für das Exe-Hauptprojekt und verwalte es mit SVN.

    2. Für projektspezifischen DLL-Assemblies lege ich einen neuen Ordner als SVN-Branch an und das wird

    vom Hauptprojekt referenziert. Im Endeffekt bleibt jeder Projekt-Branch ewig vorhanden und wird dann

    meistens auch nicht mehr mit dem Trunk-Hauptpfad gemergt. Ist für mich irgendwie schon komisch.

    3. Die allgemeinen, projektunabhängige DLL-Assemblies, liegen immer im selben Ordner und werden vom

    Hauptprojekt referenziert.

    Nun meine Fragen:

    1. Arbeitet ihr bei Branches mit richtigen physischen Workingfiles (praktisch als Kopie) oder arbeitet ihr mit der

    SVN-Switch-Funktion, bei der die Working-Files immer mit geswicht werden?

    Wenn ja, wie kann man dann die Referenzen auf die Assemblies immer mit umschalten. Irgendwie will das nicht in meinen

    Kopf.

    2. Ist es bei mehreren Entwicklern besser mit den Switch-Branch Funktionen zu arbeiten als mit Branch-Kopien?

    3. Ich habe schon viel gegoogelt, aber für mich nichts vernünftiges in Sachen SVN-Projektorganisation gefunden.

    Kennt jemand evtl. ein gutes Tutorial?

    Ich benutze folgendes SVN:

    TortoiseSVN 1.8.7, Build 25475 - 64 Bit , 2014/05/05 20:52:12
    Subversion 1.8.9, -release

    Vielen Dank im Voraus für Eure Hinweise und Tipps.

    Gruß, Amadeus.

    Montag, 1. August 2016 12:02

Antworten

  • Hallo Amadeus,

    ich arbeite zwar aktuell nicht mehr mit SVN aber in früheren Projektren hatte sich folgendes als gut herausgestellt:

    Hauptprojekt\Branch => Aktuelle Hauptversion
    Hauptprojekt\Trunk => Aktuelle Entwicklerversion
    Hauptprojekt\Tags => Hier für jedes Release einen Tag/Branch

    Die Assemblies selber dann in Ordnern unter den Branches. Hauptprojekt ist aber alles was zusammen gehört und direkt voneinander abhängig ist. Daher passt der Tag dann auch immer so, dass wenn man diesen hohl hat man alle Abhängigkeiten auch mit.

    Wenn es noch globalere Assemblies gab, haben wir diese immer im Lib ordner mit eingecheckt um immer auf die richtigen im jeweilgen Branch zu verlinken.

    • Als Antwort markiert myamadeus Mittwoch, 3. August 2016 14:53
    Mittwoch, 3. August 2016 14:34

Alle Antworten

  • Hallo Amadeus,

    Verwendest Du neben TortoiseSVN auch Team Foundation Version Control? Team Foundation Server und TortoiseSVN sind ab 2008 integrierbar:
    CodePlex launches support for TortoiseSVN

    Vielleicht helfen Dir diese Blogeinträge weiter:
    TFS Guide for Subversion Users
    Which version control system should I use in Team Foundation Server 2013: TFVC and GIT Comparison

    Gruß,
    Dimitar


    Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „IT-Pros helfen IT-Pros“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.

    Dienstag, 2. August 2016 11:58
    Administrator
  • Hallo Dimitar,

    danke für die Antwort.

    Nein, wir verwenden ausschließlich SVN.

    Naja, Blogeinträge werden vermutlich nicht viel helfen.

    Ich wollte halt einen Tipp oder Erklärungen von Euch wie ihr es mit der Projektverwaltung

    macht, sprich Aufteilung Hauptprojekt/Assemblies/Versionen der Assemblies, Builds, usw.

    Das wäre hilfreich für mich.

    GRuß, Amadeus.

    Dienstag, 2. August 2016 13:02
  • Hallo Amadeus,

    ich arbeite zwar aktuell nicht mehr mit SVN aber in früheren Projektren hatte sich folgendes als gut herausgestellt:

    Hauptprojekt\Branch => Aktuelle Hauptversion
    Hauptprojekt\Trunk => Aktuelle Entwicklerversion
    Hauptprojekt\Tags => Hier für jedes Release einen Tag/Branch

    Die Assemblies selber dann in Ordnern unter den Branches. Hauptprojekt ist aber alles was zusammen gehört und direkt voneinander abhängig ist. Daher passt der Tag dann auch immer so, dass wenn man diesen hohl hat man alle Abhängigkeiten auch mit.

    Wenn es noch globalere Assemblies gab, haben wir diese immer im Lib ordner mit eingecheckt um immer auf die richtigen im jeweilgen Branch zu verlinken.

    • Als Antwort markiert myamadeus Mittwoch, 3. August 2016 14:53
    Mittwoch, 3. August 2016 14:34
  • Hallo Daniel,

    danke für die Antwort.

    Ok, klingt für mich erst mal ziemlich vernünftig. So könnte ich das auch für unsere Projektverwaltung

    einsetzen. Habe auch mittlerweile gelesen, dass viele die globalen Dll's in einem "SVN-Externals"

    verwalten. Das werde ich mir auch mal ansehen.

    Danke und Gruß, Amadeus.

    Mittwoch, 3. August 2016 14:53