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
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
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)
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).
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.
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.
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!
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.
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.
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.
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.
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/