![]() |
SVN richtig verwenden?
Guten Tag!
Ich habe bisher eher wenig Wert auf Versionsverwaltung gelegt, da in Schule sowie in Firma nix damit gemacht wurde (schon bissl erbärmlich für ne Firma). Nunja ich schaue mir jetzt SVN für private Projekte genauer an und hab mir VisualSVN auf meinem Homeserver installiert. Wie gehe ich jetzt richtig damit um? Sachen über Versionsverwaltungen die ich gehört hab sind: - Im trunk-Ordner liegen die aktuellen Entwicklungen - Niemals nur im trunk arbeiten - Im branch-Ordner liegen Ausgliederungen, wenn man zB ne andere Vorgehensweise testen will - Nie unausführbaren Code commiten - Es gibt mindestens zwei Arten sein Repository zu strukturieren
Code:
Alles was ich bisher über Versionsverwaltungen gelernt hab basiert auf der Idee, dass verschiedene Entwickler an einem Projekt arbeiten und jeder Entwickler hat einen konstanten Rechner.
A:
svn/project1/trunk svn/project2/trunk B: svn/trunk/project1 svn/trunk/project2 Ich arbeite allerdings momentan allein an meinem Projekt und hab mehrere Rechner. Einmal mein Notebook unterwegs und einmal mein Rechner zuhause. Beim Notebook kann ich nie garantieren wie weit ich mit coden komm weshalb da schonmal unfertiger Code rumliegt(hängt vom ÖPNV ab). Wenn ich heimkomm möcht ich dann aber an meinem Rechner weitercoden, muss also unfertigen Code commiten was man aber ja nicht soll. Meine Idee wär jetzt, ich leg einen working Ordner im Repo an in dem ständig der aktuelle Code kommt. Wenn ich ne fertige Verison hab kommt die in den trunk Ordner. Oder was meint ihr? Wie macht ihr das so? Habt ihr sonst noch Tipps zu Versionsverwaltung/SVN? |
AW: SVN richtig verwenden?
Vielleicht ist ja Subversion gar nichts für Dich sondern eher Git oder Mercurial.
Das sind verteilte Versionierungssysteme. Hier committest Du sehr häufig (auch nicht kopilierbares Zeug) in lokale Branches. Sobald der Branch (oder ein Teil davon) fertig ist, pushst Du ihn in das Repo auf Deinem Rechner daheim (oder pullst von da aus vom Notebook). Bis dahin bleibt der aber lokal, 'verschmutzt' so nicht Dein Master-Repo und Du hast hinterher vor allem sogar die einzelnen Entwicklunsschritte in der Versionierung, die Dir bei SVN sonst fehlen würden. Ansonsten: Ja nach Organisation - insbesondere wenn Du alleine bist - kannst Du schon auf dem Trunk arbeiten wenn Du parallel dazu einen früheren Branch als 'Release' vorhanden hast der in sich feature-Complete ist. Das stört nicht wirklich. Bei SVN ist das branchen und mergen nicht ganz so angenehm wie bei distributed Systemen wie Git oder Mercurial (HG). |
AW: SVN richtig verwenden?
Also würdest du empfehlen bei für jedes Release ein Branch zu erzeugen und sonst immer im Trunk zu arbeiten?
Was wenn irgendwann ein zweiter oder dritter Entwickler dazukommt? Werden Branches überhaupt getrennt vom Rest behandelt? Also haben die wieder eigene Revision Nummern? :gruebel: Dann könnte ich nämlich ein eigenen Branch anlegen und immer in den committen und erst wenn meine Version nichtmehr schmutzig ist in den Trunk damit. SVN gefällt mir eigentlich schon soweit aber ich kann mir die andern auch mal anschauen. Da ich momentan hauptsächlich mit Java/NetBeans arbeite bietet sich Mercurial evtl auch an, das ist genauso wie SVN direkt dort mit drin. |
AW: SVN richtig verwenden?
Zitat:
Zitat:
Zitat:
|
AW: SVN richtig verwenden?
Der "traditionelle" Ansatz sind die hier schon erwähnten Feature Branches. Aber das hat seine Nachteile. Insbesondere das Mergen kann sehr unangenehm werden. Mit Git/mercurial/etc. wird das auch nur ein bisschen besser. Substantiell ändert sich an der Problematik dadurch nichts.
Wenn man alleine arbeitet, ist das alles nicht so tragisch, aber schon mit zwei Entwicklern wirds irgendwann unlustig. Deshalb vertreten manche (insbesondere Leute aus der "agilen" Ecke) eine andere Auffassung: Contiuous Integration. Dabei committed jeder auf den master/trunk/whatever und zwar häufig (mindestens einmal am Tag, eher häufiger). Damit der Code funktionstüchtig bleibt, obwohl man nicht fertig mit der Implementierung ist, benutzt man Feature Toggles. Also Schalter, die neues Features an- und ausschalten. Ich hab den Ansatz bisher noch nicht ausprobiert, aber er klingt vernünftig. Dass das Mergen fehleranfällig ist und nicht gerade Spaß macht, hab ich nämlich schon erfahren. Bei Gelegenheit will ich das also mal versuchen. Informationen darüber: ![]() ![]() mfg Christian |
AW: SVN richtig verwenden?
![]() |
AW: SVN richtig verwenden?
Oh man wenn man SVN jetz ne Weile benutzt und das Konzept dahinter halbwegs verstanden hat fängt man bei Mercurial irgendwie trotzdem wieder bei 0 an :(
Bei SVN mach ich vom Repository(gibt nur eins) ein Checkout und arbeite dann wie gewohnt an meinem Code. Bei Mercurial gibts ja nicht nur ein Repository quasi auf dem Server sondern auf jedem Client nochmal eins. Und wenn ich das recht verstehe arbeitet man immer direkt im Repository aufm Client, was bei svn ja nicht geht :gruebel: man man man Und wenn man mit seinen Änderungen durch ist, committet man in die lokale Kopie und synchronisiert danach die Repositories. Besonders schön find ich auf jedenfall die grafische Darstellung :) Und bei Mercurial hat man immer die aktuellen Codedateien da was bei Subversion nicht der Fall ist da das rein auf ner Art Datenbank basiert, seh ich das richtig? Wobei die Änderungen bei Mercurial denk ich auch in ner Datenbank gespeichert werden, alles andere macht eig kein Sinn. Naja ich danke euch auf jedenfall für die Tipps und Links, werd mich da mal noch tiefer einarbeiten.:thumb: |
AW: SVN richtig verwenden?
Im Prinzip ja. Bei SVN hast Du nur ein Repo, und auf ggf. mehreren Clients lokale Working-Copies, bei Mercurial kannst Du belibig viele Repositories klonen (und zwar immer mit kompletter historie).
Du trägst also immer eine Kopie des Repos (und ja, da liegt irgendeine DB hintendran) mit Dir rum und kannst sie beliebig oft mit den anderen Repos in beliebige Richtungen synchronisieren. |
AW: SVN richtig verwenden?
Noch was zu SVN vs. Mercurial:
Ich nutze SVN - insbesondere deshalb recht gerne weil ich hier den Vorteil habe, dass mein Repro auf einem Server liegt - d.h. mit der Versionsverwaltung habe ich gleichzeitig ein Backup meines Codes. Bei Mercurial wären, wenn ich die selbe Systematik möchte schon 2 Checkins (oder puts) notwendig: einen ins lokale Repro und einen ins zentrale. Und auch noch das: Sollte ich mal wieder mit mehreren an einem Projekt arbeiten müssen würde ich Mercurial auf jeden Fall den Vorzug geben - denn SVN und Mergen ist eine Geschichte für sich... Grüße |
AW: SVN richtig verwenden?
Wie macht man das eigentlich wenn man externe Bibliotheken hat? kommen die mit in die Versionsverwaltung oder wird das irgendwie ausserhalb davon verwaltet? Also seien es jetzt DLLs die mit ausgeliefert weden oder in Java jars die ins Projekt eingebunden werden?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:16 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz