Nutzt ihr Versonskontroll-Tools?

  • Allgemein

Es gibt 16 Antworten in diesem Thema. Der letzte Beitrag () ist von GambaJo.

    Nutzt ihr Versonskontroll-Tools?

    Nutzt ihr Versonskontroll-Tools? 6
    1.  
      Ja (2) 33%
    2.  
      Nein (0) 0%
    3.  
      Manchmal (3) 50%
    4.  
      Noch nicht (1) 17%
    Mich interessiert, ob ihr Versionskontroll-Tools nutzt, und wenn ja, welche und warum?
    Ich spiele nämlich mit dem Gedanken meine privaten Projekte z.B. nach SourceForge oder CodePlex auszulagern, da ich keinen eigenen Versionskontroll-Server betreiben möchte.
    Oder kennt jemand zufällig ein Tool, welches keinen Server braucht, mit dem ich aber trotzdem (z.B. per Dateifreigabe) von mehreren Rechnern aus auf das Repository zugreifen kann?

    GambaJo schrieb:

    von mehreren Rechnern aus auf das Repository zugreifen kann?

    Das ist dann ja ein Serverprogramm. ;)

    CodePlex ist mit dem Team Foundation Server sehr komfortabel in VS 2010 zu benutzen, da es komplett integriert ist.

    lg SeriTools
    | Keine Fragen per PN oder Skype.
    TFS oder TFS-Client habe ich privat nicht zur Verfügung.
    Es gibt aber auch ein VS-Plugin, mit dem man SVN integrieren kann.

    Eine Integration wäre schön, aber nicht unbedingt notwendig. Ich möchte nur nach Möglichkeit nicht mit der Konsole rumhampeln müssen.
    In einem anderen Unternehmen haben wir SVN in Verbindung mit TortoiseSVN genutzt. War zwar nicht integriert, aber man konnte im Explorer per Kontextmenü auch alles erledigen. Und SVN wird von den meisten öffentlichen Hostern unterstützt.
    Wenn man etwas professioneller und mit komplexeren/größeren Projekten arbeitet MUSS man einfach eine Versionskontrolle haben. Meiner Meinung nach führt kein Weg daran vorbei.

    Arbeitet man im Termin geht es nur mit einem Versionskontroll-Tool, da nur so die Problematiken beim Bearbeitungen eines Codes durch mehrere Personen sauber in den Griff zu bekommen ist.

    Arbeitet man alleine eignet sich auch selbstgestrickte Dinge, wie z.B. nach jeder Änderung/Implementierung von Code einfach eine komplette Veröffentlichung machen und dann den kompletten Ordner auf ein Backup-Drive legen und ihm dort eine Versionsnummer zu verpassen. Allerdings ist die Variante natürlich völlig ungeeignet wenn man das Repository auf einen Server auslagern will.

    Prinzipiell würde ich mal sagen guck Dir SVN mit TortoiseSVN an, da kann ich mich meinen Vorredner nur anschliessen.

    Gruß

    Rainer
    Also ich hab so als Nebenjob mit Mercurial und Tortoise zu tun.
    Ich hab überlegt, ob ich das auch für mich verwende, aber gefällt mir nicht so.
    Das scheint alles zu überwachen, was innerhalb des Repository-Ordners liegt.
    Aber ich bastel meine Solutions immer mit einem Haupt-Projekt, und weiteren Helpers-Projekten, die in anderen Ordnern liegen.
    Ich könnten nun natürlich alles im Repository-Ordner ablaufen lassen, aber dann wirds ziemlich unübersichtlich, weil dann alle meine Solutions im selben Repository liegen.

    Also von daher fahre ich mittm SolutionExplorer eiglich besser, findich.
    Ich arbeite nicht damit, weil ich es eigentlich nicht brauche.
    Einzig bei 2 Web Projekten wo u.a. ich mitarbeite gibt es SVN was hierbei natürlich auch Sinn macht, wenn mehrere an einem Projekt arbeiten, so dass nicht kürzliche Änderungen wieder von der anderen Person überschrieben werden.
    Für mich ist die Versionierung nicht notwendig sondern eher die erhaltung der Dateien, wesswegen ich auch eine RAID1 NAS für wichtige Daten und Backups habe, wodrauf regelmäßig gesichert wird.
    Meine Projekte bestehen eigentlich auch immer aus mehreren VS-Projekten. Diese Projekte mache ich immer so allgemein, wie möglich, damit ich sie auch in anderen Projekten nutzen kann.
    Gerade dann macht aber so eine Versionskontrolle richtig Sinn, denn so kann man später nachverfolgen, was man wann und warum gemacht hat.

    Aber wie gesagt, ich würde das Ganze gerne an einen Dienst wie CodePlex oder SourceForge ausla-gern. So kann ich von einem beliebigen Rechner drauf zugreifen, habe damit automatisch Backups, Versionskontrolle, vielleicht sogar Bugtracking und eine Wiki.
    So richtig festmachen, welcher Dienst für mich am geeignetsten wäre, kann ich aber nicht.
    CodePlex hat den Vorteil, dass es auch Mercurial kann. Nachteil ist, dass es ein Dienst von MS ist. Und wenn MS keine Lust mehr hat, dann schalten die das ab.
    SourceForge gehört zwar auch einer Firma, aber das gibt es schon lange und ist sehr beliebt und groß. Unwahrscheinlich, dass es so schnell geschlossen wird. Die können aber kein Mercurial, so weit ich weiß.
    Wie es um die Performance steht, kann ich natürlich auch nicht sagen.
    Also Beispiel: Ich habe eine String-Extension-Methode "String.And()" - im Grunde eine komfortablere Schreibweise als String.Concat(). Benutze ich in 150 Projekten.
    Nun änder ich den Namen auf "String.Append()".

    Bei meinem BackZip-Modell habe ich in jedem Projekt ein Komplett-Zip der letzten lauffähigen Version.
    Aber mit einer Versionskontrolle müsste ich auf 150 verschiedene Backup-Levels zurückgehen, um von den jeweiligen Projekten eine lauffähige Variante zu kriegen?
    Ich weiß zwar nicht, wie den BackZip-Modell aufgebaut und was deine Backup-Levels sind, aber dein Beispiel hat nichts mit Versionskontrolle zu tun, sondern wie Du deine Solutions aufbaust.

    Deine String-Extension kann in jedem deiner Projekte implementiert sein. Wenn Du in diesem Falle die Definition der Extension änderst, ändert sie sich nur in diesem Projekt. Soll sie sich auf alle anderen Projekte auswirken, dann musst Du sie auch in allen Projekten einzeln ändern.

    Ist deine String-Extension aber in einem eigenen Projekt, auf welches deine anderen Projekte lediglich einen Verweis haben, dann änderst Du bei einer Änderung dieser Extension gleich alle verwiesenen Projekte mit (nur die Aufrufe deiner Extension), bzw. Du musst sie von Hand ändern.
    Ob Du das nun in einem Repository oder nur auf deinem Filesystem hast, spielt dabei keine Rolle.

    @DoDo:
    Backups sind zwar wichtig, aber nicht der einzige wichtige Punkt. Es ist praktisch, wenn man Ände-rungen per Klick und DATEIWEISE einfach zurücknehmen kann. Es gibt Diff-Tools, die einem pro Datei die Unterschiede zwischen den verschiedenen Änderungen anzeigen usw.
    Bei einem normalen Backup-System hat man meist nur den letzten Stand gesichert, oder komplette Solutions. Dateiweise zurücksetzen ist da nicht so ohne weiteres möglich.

    GambaJo schrieb:

    Ist deine String-Extension aber in einem eigenen Projekt, auf welches deine anderen Projekte lediglich einen Verweis haben, dann änderst Du bei einer Änderung dieser Extension gleich alle verwiesenen Projekte mit (nur die Aufrufe deiner Extension), bzw. Du musst sie von Hand ändern.
    Ob Du das nun in einem Repository oder nur auf deinem Filesystem hast, spielt dabei keine Rolle.


    Genau. Und mein Backzip-Model (Link habe ich ja gegeben) sorgt halt dafür, dass in jedem ProjektOrdner ein lauffähiges Backup rumliegt, wassich jederzeit entpacken kann.
    Schonklar - ich muß so oder so 150 Projekte ändern, nur in meinem Backzip finde ich immer eine Vorlage, die zeigt, wies vorher funktioniert hat.
    Hingegen bei einem Repository müsste ich eine Rekonstruktion vornehmen, um einen solchen Rückblick zu erhalten. Habe ich aber rekonstruiert, kann ich nix ändern, denn die Änderungen mussichja am Projekt auf dem neuesten Stand durchführen.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „ErfinderDesRades“ ()

    Das hat man bei SVN auch, wenn man es richtig macht.
    Sobald etwas funktioniert und erstmal abgeschlossen ist kommt es in den trunk, das sind sozusagen Final Releases.
    Dann gibts die Branches wo etwas probiert wird, sozusagen die Beta Phase, sind dabei wieder alle Fehler ausgebügelt kommts zum Trunk oder wenn die Änderungen keinen Sinn ergeben und unlösbar ist wird dieser Branche einfach verfallen.

    Hiermal ein Schaubild



    Da jede Änderung protokolliert wird, kann man somit zu jedem Zeitpunkt einer Änderung zurück springen ... SVN ist also eine Zeitmaschiene wo man ggf. einen Fehler den man früher mal gemacht hat wieder ändern kann *g*
    Du musst einfach dein Repository angeben, welche Version du haben willst (kann man aus dem Log ja lesen) und dann gibtst du an wohin du das gedownloaded haben willst. Entweder in das bestehende Arbeitsverzeichnis, da die dortige Version fehlerhaft ist und somit zurückgesetzt werden soll oder eben in ein neuen Ordner, dann öffnest du dort das Projekt und aus deinem Hauptordner und kannst dinge übernehmen.
    Oder aber wenn du weiß du willst nur eine Datei ersetzten, dann wählst du die aus der entsprechenden vorigen Version aus und diese wird dann lokal somit zurück gesetzt auf den Stand von damals.
    In der aktuellen dotnetpro ist genau zu dem Thema ein Artikel (hab ich schon gelesen). Anscheinend ist eine verteilte Versionskontrolle einer zentralen Versionskontrolle vorzuziehen. Die Gründe sind auch sehr schlüssig.

    Eine Sache verstehe ich aber bei den Hostern noch nicht ganz.
    Angenommen ich habe im Zuge des aktuellen Projektes, an dem ich gerade arbeite z.B. ein Projekt erstellt und hinzugefügt, welches mir eine Klassenbibliothek für den Datenbankzugriff zur Verfügung stellt. Diese Klassenbibliothek habe ich so abstrakt gemacht, dass ich sie auch gut für andere Projekte nutzen könnte.

    Nun lade ich die komplette Solution inkl. der Klassenbibliothek auf z.B. SourceForge oder CodePlex.

    Dann mache ich eine neue Solution für ein anderes Projekt und binde dort die Klassenbibliothek auch als vorhandenes Projekt ein. Und diese Solution lade ich wiederum zu einem der Hoster.

    So weit ich das verstanden habe, hoten die da pro Applikation, oder? Das würde bedeuten, ich müsste meine Klassenbibliothek bei mir doppelt führen. Ein Mal für die erste Applikation, und dann für die zweite. Bei einem eigenen Versionskontroll-System wäre das kein Problem.
    Oder sehe ich das falsch?