AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

SVN richtig verwenden?

Ein Thema von Angel4585 · begonnen am 2. Aug 2011 · letzter Beitrag vom 10. Aug 2011
Antwort Antwort
Seite 1 von 2  1 2      
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#1

SVN richtig verwenden?

  Alt 2. Aug 2011, 12:18
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:
  A:
    svn/project1/trunk
    svn/project2/trunk
  B:
    svn/trunk/project1
    svn/trunk/project2
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.
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?
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.639 Beiträge
 
#2

AW: SVN richtig verwenden?

  Alt 2. Aug 2011, 13:21
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).
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#3

AW: SVN richtig verwenden?

  Alt 2. Aug 2011, 13:42
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?
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.
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.639 Beiträge
 
#4

AW: SVN richtig verwenden?

  Alt 2. Aug 2011, 13:53
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.
Jain. Nicht unbedingt. Du kannst natürlich auch für jedes neue Feature einen eigenen Branch anlegen und den dann wenn er abgeschlossen wieder zurück mergen. Das sollte man auch mit mehreren Entwicklern machen (wobei wir hier auch schon zu fünft auf dem Trunk gearbeitet haben, das geht ohne Probleme). Das Branchen und Mergen ist wie gesagt mit SVN nicht ganz so angenehm wie mit Git.

Werden Branches überhaupt getrennt vom Rest behandelt? Also haben die wieder eigene Revision Nummern?
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.
Nein. Ein Repository in SVN hat immer eine eineindeutige Revisionsnummer. Und die wird immer erhöht, egal in welchen Pfad commited wird. Trunk, branches und tags sind kein SVN-Feature, sondern lediglich eine Ordnerstruktur innerhalb der Versionierung, die sich mal irgendjemand ausgedacht hat und die deshalb ungeuer viele (aber nicht alle) Leute auch so nachbilden.

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.
Wie gesagt: War nur ne Idee bzw. ein Alternativvorschlag. Mir selber erschien das am Anfang ungeheuer komplex, aber letzlich habe ich alle meine privaten Projekte umgezogen. Ein riesen Vorteil ist halt, dass man lokal immer das komplette Repo inkl. aller Versionen hat. Das braucht freilich mehr platz, aber ich bin nicht auf eine Internetverbindung angewiesen wenn ich mal die Historie eines bestimmten Files angucken will etc. Und meine lokalen Commits inkl. Historie werden auch immer mit auf den Server (bzw. das, was ich als mein Master-Repo pflege) gesynced. So ganz uncool ist das nicht
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
r2c2

Registriert seit: 9. Mai 2005
Ort: Nordbaden
925 Beiträge
 
#5

AW: SVN richtig verwenden?

  Alt 2. Aug 2011, 14:54
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:
http://www.thoughtworks.com/perspect...nuous-delivery (interessantes Video)
http://martinfowler.com/articles/con...tegration.html (unfangreicher Atikel)

mfg

Christian
Kaum macht man's richtig, schon klappts!
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#6

AW: SVN richtig verwenden?

  Alt 2. Aug 2011, 22:08
Hier gibts auch noch einen interessanten Artikel, der zwar auf Mercurial genauer eingeht -- Git und Mercurial liegen, wie im Artikel angemerkt, aber scheinbar sehr nah beieinander.
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#7

AW: SVN richtig verwenden?

  Alt 4. Aug 2011, 09:10
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 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.
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.639 Beiträge
 
#8

AW: SVN richtig verwenden?

  Alt 4. Aug 2011, 09:17
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.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.380 Beiträge
 
Delphi 10.3 Rio
 
#9

AW: SVN richtig verwenden?

  Alt 4. Aug 2011, 09:22
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
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#10

AW: SVN richtig verwenden?

  Alt 4. Aug 2011, 11:52
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?
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:27 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz