Forum: PC Hard- und Software Versionsverwaltung - Was nutzt ihr so?


von Thomas (Gast)


Lesenswert?

Hallo,
ich wollte mal allgemein fragen, was (oder ob überhaupt) hier jemand 
Software zur Versionsverwaltung verwendet?

Selbst bei meinen Hobby-Projekten kommt es mal vor, dass man hier und da 
mal was ändert, und dann nachher irgendwas anderes nicht mehr 
funktioniert, man aber nicht nachvollziehen kann was geändert wurde.

Populär sind da ja Subversion und CVS. Vor Jahren habe ich mal CVS (auf 
Windows) kurz angetestet, hab aber noch in Erinnerung dass das recht 
kryptisch war.

Wäre schön, wenn man das Ganze auch noch in Programmers-Notepad 
einbinden könnte. Also im Menu wo jetzt Make etc. steht, z.B. "Check in" 
oder "out".

Was auch ganz nett wär, wenn man diese Verwaltung z.B. auf einen Server 
im Netzwerk legen könnte, und dann vom Laptop und PC aus immer am 
gleichen Code zu arbeiten.

Hat jemand ein paar Infos?

Gruß
Thomas

von Jürgen S. (jsachs)


Lesenswert?

Ich nutze hier Subversison.

Unter Windows gibt es da ein sehr gute Implementierung für den Explorer 
(ToroiseSVN). So nutzen wir das auch in unserer Firma.
Ob das unter "Programmers-Notepad" sich einbinden lässt kann ich nicht 
sagen. Ich entwickle unter Linux mit KDevelop und das hat ein Plugin für 
Subversion bzw das Tool kdeSVN (Quasi TortoiseSVN unter Linux).

Zudem handhabt Subversion Binärdateien effizienter als CVS. So kann ich 
bedenkenlos auch hexfiles usw. mit aufnehmen.

Ohne Versionsverwaltung kann ich mir Projekte nicht mehr vorstellen.

Gruß
Juergen

von antworter (Gast)


Lesenswert?

CVS habe ich mal angetestet, aber nachdem ca. 30min Konfigurationsarbeit 
nicht fruchteten, setze ich weiterhin auf folgende simple Methode:

Das zu bearbeitende Projekt liegt in einem Verzeichnis.
Sobald eine neue Funktion realisiert wurde, erstelle ich ein 
Unterverzeichnis, in das ich alles reinkopiere.

Bsp: "03) SDCard-IO"

Tut man dies häufig genug, sind eingeschlichene Fehler schnell zu 
finden.

(natürlich ist die Methode nicht für jeden das richtige)

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Es gibt eigentlich keinen Grund mehr CVS zu verwenden, SVN ist in jeder 
Hinsicht eine Verbesserung. Man kann auch einen Server betreiben.

Wo sowohl CVS als auch SVN an ihre Grenzen stoßen, ist bei der 
gleichzeitigen Pflege mehrerer Entwicklungszweige (Branches). Beispiel: 
du hast ein Open-Source-Projekt das du veröffentlichts, möchtest aber 
einen Zweig für dich selbst anpassen und nur manche Änderungen in den 
öffentlichen Zweig übernehmen. Bei SVN gibt es keine Branches als 
eigenes Konzept, ein Branch ist einfach ein Unterverzeichnis im 
Repository, und es gibt keine Werkzeuge um Änderungen zwischen den 
Branches zu verwalten; man muss also jede Änderung von Hand in beiden 
Zweigen vornehmen, was bei größeren Projekten sehr schnell dazu führt 
dass man den Überblick verliert. Das Problem hatte ich zum Beispiel bei 
der Software dieses Forums. Inzwischen verwende ich deshalb fast nur 
noch darcs, das löst dieses Problem sehr elegant, und ist auch allgemein 
von der Handhabung her bequemer (wenn man auf der Kommandozeile 
arbeitet, GUI gibt es m.W. nicht).

von Gast (Gast)


Lesenswert?

Ich würde SVN empfehlen. Das sollte sich auch in den Editor einbinden 
lassen. Komandozeilentools gibt es für nahezu alle Betriebssyteme. Und 
grafische Oberflächen auch.

>Bei SVN gibt es keine Branches als
>eigenes Konzept, ein Branch ist einfach ein Unterverzeichnis im
>Repository, und es gibt keine Werkzeuge um Änderungen zwischen den
>Branches zu verwalten; man muss also jede Änderung von Hand in beiden
>Zweigen vornehmen, was bei größeren Projekten sehr schnell dazu führt
>dass man den Überblick verliert.

Das macht es ja gerade so flexibel.
Zum Zusammenführen gibts in Subversion den merge Befehl. Damit lassen 
sich auch Änderungen in unterschiedlichen Zweigen (Ordnern) 
zusammenführen. Oder auch den Befehl switch. 
http://svnbook.red-bean.com/nightly/en/svn-book.html#svn.branchmerge.switchwc

Allgemein ist das SVNBook 
http://svnbook.red-bean.com/nightly/en/svn-book.html ne gute Anleitung.

von Thomas (Gast)


Lesenswert?

Ist Subversion denn etwas einfacher einzurichten als CVS? Der 
„antworter” hatte wohl änhliche Probleme wie ich damals.

Wie steht es eigentlich mit der Datensicherung bei Subversion?
Laut Wikipedia-Artikel werden die Daten in einer Art Datenbank 
(Berkley-DB) abgespeichert. Das hieße ja, wenn mir mein svn abstürzt 
oder sonst was, kann ich ohne eine Neuinstallation von svn die Daten 
nicht verwenden.

von Sebastian F. (tacx)


Lesenswert?

Nur so eine Frage,
wie soll Dir Subversion (SVN) denn abstürzen? Die Berk-DB kann von jedem 
Client ausgelesen werden. OK, wenn Du Dir die DB abschiesst, dann hast 
Du verloren...
Eigentlich war die Einrichtung leicht... Ein Leben ohne SVN ... nicht 
mehr denkbar!

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Übrigens sollte man das BDB-Backend nicht mehr verwenden, das hat die 
Eigenschaft das Repository ab und zu mal zu zerlegen. FSFS ist sicherer.

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Gast wrote:
>>Bei SVN gibt es keine Branches als
>>eigenes Konzept, ein Branch ist einfach ein Unterverzeichnis im
>>Repository, und es gibt keine Werkzeuge um Änderungen zwischen den
>>Branches zu verwalten; man muss also jede Änderung von Hand in beiden
>>Zweigen vornehmen, was bei größeren Projekten sehr schnell dazu führt
>>dass man den Überblick verliert.
>
> Das macht es ja gerade so flexibel.
> Zum Zusammenführen gibts in Subversion den merge Befehl. Damit lassen
> sich auch Änderungen in unterschiedlichen Zweigen (Ordnern)
> zusammenführen. Oder auch den Befehl switch.

Der merge-Befehl macht nicht mehr als einen Diff zwischen den 
angegebenen Versionen als Patch auf ein anderes Verzeichnis anzuwenden. 
Wenn man in einem Zweig ein paar größere Änderungen vorgenommen hat und 
diese in einen anderen Zweig übernehmen will, muss man entweder jedes 
Changeset einzeln mergen und jedes Mal eine neue Commitmessage eingeben, 
oder alles auf einmal committen, wobei man die Information über die 
einzelnen Changesets verliert. Die einzelnen Changesets stehen zwischen 
den Zweigen in keinem direkten Zusammenhang mehr.

In darcs heißt ein Changeset "Patch", und ein Zweig enthält diesen 
Patch, oder er enthält ihn nicht. Wenn ich nun in einem Zweig ein paar 
Patches committed habe, dann kann ich die Patches einfach in den anderen 
Zweig übertragen. Der Patch ist der selbe, egal in welchem Zweig er ist, 
und man kann zum Beispiel einfach feststellen "welcher Zweig enthält den 
Patch xyz", ohne Dateien oder Changelogs vergleichen zu müssen.

Das Ganze läuft darauf hinaus dass man in Subversion in der Praxis 
einfach viel mehr Handarbeit hat.

von Winfried (Gast)


Lesenswert?

Die Einfachheit in der Bedienbarkeit hängt in großem Maße vom Frontend 
ab. Sowohl CVS wie auch Subversion kann man auf der Kommandozeile 
benutzen, womit das ein sehr kryptisches und schwieriges Unterfangen 
werden kann, gerade wenn man noch keine Routine hat. Dann schleichen 
sich im Nu auch Fehler ein. Ein gutes Frontend kann einem da viel 
abnehmen und hilft, Fehler zu vermeiden.

Allerdings kann man mit der Kommandozeile sich auch Skripte schreiben, 
die bestimmte Checkin/Checkout-Schritte für ein Projekt automatisieren. 
Das kann dann auch recht komfortabel sein.

Und dann gibt es natürlich immer so die zwei Lager: Die einen, die 
abfällig auf die Mausschubser schauen und die anderen, die alles für 
kompliziert halten, was nicht mit Maus bedienbar und intuitiv 
erforschbar ist.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Winfried wrote:

> Sowohl CVS wie auch Subversion kann man auf der Kommandozeile
> benutzen, womit das ein sehr kryptisches und schwieriges Unterfangen
> werden kann, gerade wenn man noch keine Routine hat. Dann schleichen
> sich im Nu auch Fehler ein. Ein gutes Frontend kann einem da viel
> abnehmen und hilft, Fehler zu vermeiden.

Hab' ich aber bei meinen Kollegen auch schon umgekehrt erlebt.  Gerade
für kompliziertere Dinge taugen die meisten GUIs kaum noch, manche
bekommen schon ein Problem, wenn man z. B. alle Unterschiede eines
Teilbaums sich anzeigen lassen will, die zwischen letztem Montag und
letzten Mittwoch eingebracht worden sind -- eine Anforderung, die man
in der Praxis recht häufig mal hat, wenn plötzlich irgendwas nicht
mehr geht und man einkreisen will, in welchem Zeitraum das Problem
entstand.

von Thomas (Gast)


Lesenswert?

Erstmal Danke für die Tips!

Da Subversion ja vorzuziehen ist habe ich mir das heute mal installiert.
Auf meinem Debian-System habe ich den Subversion-Server eingerichtet, 
zugegriffen wird auf diesen über den Apache-Webserver/WebDAV.

Auf meinem Windows-Rechner habe ich das von Jürgen angesprochene 
TortoiseSVN installiert. Den Checkin/out mache ich zur Zeit noch über 
den Windows Explorer - aber mal sehn ob man das nicht in PNotepad 
reinbekommt.

Zur Auswertung habe ich auf dem Server websvn installiert, der mir dann 
die geänderten Codezeilen markiert. Bei TortoiseSVN gibt es zwar auch 
eine Statistik, aber dort habe ich das so im Detail nicht gefunden.

Für eine genauere Zeitsauswertung wie Jörg sie beschrieben hat wird man 
aber wohl wirklich die Kommandozeile bemühen müssen.

von Unbekannter (Gast)


Lesenswert?

Nun, ich habe schon einige Versionsverwaltungen durch, u.a. CVS und 
Subversion, und bin nun bei Git hängengeblieben. Meiner Meinung nach ist 
das die erste Versionsverwaltung, die es richtig macht.

Subversion war seinerseits natürlich deutlich besser als CVS. Inzwischen 
ist Subversion auch schon wieder alt. CVS, Subversion und viele andere 
Tools benutzten einen Datei-Orientierten-Ansatz. Dieser Ansatz sieht auf 
den ersten Blick logisch aus, aber auf dem zweiten Blick offenbart er 
viele Ecken und Kanten die unlogisch sind.

Git und andere, moderne Versionsverwaltungstools benutzen den Patch- 
bzw. Changeset-orientierten Ansatz. Meiner Meinung nach ein deutlich 
besseres Konzept.

Das lustige an Git finde ich, dass es von absoluten Mini-Projekten ohne 
Repository-Einrichtung (Workdir ist das Repo) bis hin zu Mega-Projekten 
wie den Linux-Kernel völlig problemlos skaliert.

Git gibt es unter:  http://git.or.cz/

von Hans W. (Firma: Wilhelm.Consulting) (hans-)


Lesenswert?

hab mir mal darcs angeschaut... klingt interessant...

zum thema gui findet sich was im darcs-wiki: 
http://www.darcs.net/DarcsWiki/GraphicalInterface ;)

73

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.