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!
Übrigens sollte man das BDB-Backend nicht mehr verwenden, das hat die Eigenschaft das Repository ab und zu mal zu zerlegen. FSFS ist sicherer.
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/
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.