Hallo zusammen,
ich bin auf der Suche nach einer Softwareversionierung. Ich benutze das
AVRstudio 5 und meine folgendes:
Wenn ich meinen Code beispielsweise in Version 1.0 fertiggestellt habe,
möchte ich diesen im aktuellen Zustand speichern.
Wird der Code erweitert, soll dieser Zustand z.B. als Version 1.1
abgespeichert werden.
Ich möchte aber später vielleicht mal nachschauen, oder muss aus einer
älteren Version heraus neu programmieren, sodass ich dann beispielsweise
Version 1.0 abrufen muss/möchte, wie auch immer.
Ist sowas möglich?
Meine bisherige Vorgehensweise ist immer:
- das Projekt als Version 1.0 abspeichern
- Projekt kopieren
- Projekt in Version 1.1 umbenennen
Gibt es da nicht einfacheres?
Sodass man im AVRProjekt eine Softwarechronologie erstellen kann?
Ich habe bis jetzt noch nichts entdeckt.
Das Zauberwort zu deinem Problem lautet: Versionskontrollsystem. Oder
kurz: VCS.
Ich weiß ja nicht, was AVRStudio so kann, aber CVS, der Urvater, sollte
doch gehen. Oder lieber gleich zu SVN (Subversion) greifen. Wenn das im
AVRStudio nicht integriert ist, rate ich zu externen Tools wie
Kommandozeile per Cygwin (unter Windows) oder TortoiseSVN. Dazu mußt du
aber mindestens einen (lokalen) Server aufsetzen. Ob das unter Windows
geht, weiß ich leider nicht. In Ubuntu z.B. kann sowas leicht integriert
werden.
Du solltest aber unbedingt vorher mindestens eine Kurzanleitung zu SVN
lesen, um zu wissen um was es sich dabei dreht. Falls du über Git als
Versionierungssystem stolperst, rate ich in deinem Fall -> Finger weg!
Zu kompliziert für deine Belange.
Im Kontrollsystem geht das z.B. so:
> Meine bisherige Vorgehensweise ist immer:> - das Projekt als Version 1.0 abspeichern
Projekt mit aussagegräftigem Namen und Beschreibung "taggen" (Stichwort:
tag) und in den "trunk" Zweig einpflegen.
> - Projekt kopieren
Einen "branch" mit aussagekräftigem Namen erstellen, um an einem
Teilprojekt/-problem zu arbeiten.
> - Projekt in Version 1.1 umbenennen
Branch in den trunk zurück"mergen" (Stichwort: merge) oder als eigene
branch mit eigenem tag weiterführen.
Das ist genau die Lösung, die du brauchst.
Zur Einarbeitung gibt's 'ne Menge guter, freier Quellen im Netz und auch
hier im Forum.
Die Schildkröte integriert sich hervorragend in den Windows Explorer.
Abends die Arbeit des Tages sichern ist in 10s getan und wird daher auch
nicht vergessen :-)
amateur schrieb:
> Für Clicky-Bunty gibt's hierzu auch noch tortoiseHg.
Ja, das stimmt, hatte ich auch schon im Kopf beim schreiben. Nur finde
ich es auch recht exotisch bzw. nich weit verbreitet. Kann im
Problemfall kein so großer Kreis an Leuten, wie z.B. hier im Forum oder
im Bekanntenkreis, helfen. Außerdem gab es doch eine Änderung der
Lizenzbedingungen, weswegen der Linux-Kernel nun auf der
Eigenentwicklung Git versioniert wird. Ich denke, SVN trifft genau die
Belange des TE.
Tippgeber schrieb:> Dazu mußt du> aber mindestens einen (lokalen) Server aufsetzen.
so ein Quatsch.
SVN braucht keinen server.
Man legt einfach in irgend einem Leeren Verzeichnis ein neus Repo an und
gibt zum Auschecken einfach dessen Pfad an.
Hallo Leute,
klingt gut.
Gibt es ein deutschsprachiges Tutorial, dass Ihr mir empfehlen könnt?
Ich bin quasi Neueinsteiger.
Ich habe mich im Netz ein wenig informiert, aber die Zusammenhänge noch
nicht ganz verstanden.
Soweit wie ich es verstanden habe, ist das Programm mit dem ich dann
arbeite ein Client?
Kann ich mir z.B. SmartSVN herunterladen und installieren und dann
loslegen, oder muss ich mich dann noch irgendwo anmelden?
Geht das alles lokal oder brauche ich Datenbanken?
Am liebesten würde ich so vorgehen wollen:
- Programm herunterladen und lokal installieren,
- Das Projekt (aus einem Netzlaufwerk) "auschecken(?)"
- und dann mit der arbeit loslegen
- und anschließend sichern (commit?)
Wo werden die Revisionierungen dann gespeichert?
Am besten, wenn Sie dann wieder in einem Netzlaufwerk gespeichert
werden, weil die netzlaufwerke einer Datensicherung unterliegen.
Fragen über Fragen (ich blicke da noch nicht so ganz durch)
Fluffi schrieb:> Gibt es ein deutschsprachiges Tutorial, dass Ihr mir empfehlen könnt?
Jupp, gibt es. Die Übersetzung des offiziellen SVN-Buches in deutsch:
http://svnbook.red-bean.com/nightly/de/index.html> Soweit wie ich es verstanden habe, ist das Programm mit dem ich dann> arbeite ein Client?
Ja. Du benötigst zur Verwaltung des Repository das Serverprogramm dazu.
Gibt's aber im Normalfall im selben Paket gleich mit. Sollte problemlos
sein.
> Kann ich mir z.B. SmartSVN herunterladen und installieren und dann> loslegen, oder muss ich mich dann noch irgendwo anmelden?
Nein, das brauchst du nicht. Du kannst auch lokal arbeiten, worauf Vlad
Tepesch im Vorpost schon etwas barsch hingewiesen hat...
Für die ersten Schritte kannst du vielleicht von hier starten:
"Creating Local SVN Repository"
http://www.guyrutenberg.com/2007/10/29/creating-local-svn-repository-home-repository/> Geht das alles lokal oder brauche ich Datenbanken?
Die Datenbank legt SVN oder welches Tool du auch immer nutzen willst,
selbst an und verwaltet diese. Die Dateien und Verzeichnisse solltest du
aber tunlichst nicht anfassen! Das macht SVN alles selbst.
> Am liebesten würde ich so vorgehen wollen:> - Programm herunterladen und lokal installieren,> - Das Projekt (aus einem Netzlaufwerk) "auschecken(?)"> - und dann mit der arbeit loslegen> - und anschließend sichern (commit?)
Ja, genau so läuft das in groben Zügen.
> Wo werden die Revisionierungen dann gespeichert?
Lokal. Dort, wo du dein Repository (Lager) eingerichtet hast bzw. mit
welchen Parametern du deinen Client beim commiten fütterst (welches
Repository er beim Aufruf nutzen soll). Dein Client kann, wenn er
graphisch ist, dir eine schöne Übersicht mit Branches, Tags, Historie
usw. anzeigen. Mußt du ausprobieren, um es sicher verwenden zu können.
> Am besten, wenn Sie dann wieder in einem Netzlaufwerk gespeichert> werden, weil die netzlaufwerke einer Datensicherung unterliegen.
Ja, das ist ein guter Ansatz und das wird funktionieren.
> Fragen über Fragen (ich blicke da noch nicht so ganz durch)
Lies dich erstmal in die Materie ein und suche ein paar kurze Dokuseiten
mit Beispielen bei Onkel Google raus. Am Besten, du probierst erstmal
nur in Trockenübungen lokal auf einem Rechner herum, um ein Gefühl für
die Sache zu bekommen, bevor du ein endgültiges Repositoy einrichtest,
was dann auch in die Datensicherung geht.
Viel Erfolg und Spaß bei der Nutzung!
Kurze Zwischenfrage:
Nach den ersten paar Zeilen, die ich mir angelesen habe könnte ich mir
vorstellen, dass ich damit auch z.B. Eagle-Dateien (Layout/Schaltplan)
bearbeiten bzw. versionieren kann. Es hat ja nichts direkt mit
Programmierung zu tun, oder?
Längere Antwort:
Sollte gehen. Du kannst damit alles versionieren, was text- bzw. ASCII-
ähnliche Daten erzeugt, z.B. Code-, Hex-, HTML-, XML- oder sonst welche
Scriptfiles. Binaries, Zips oder .exe- Programme gehen schlecht und
blähen deine Datenbank stark auf. Nicht unmöglich - versionieren läßt
sich alles ;) - aber eben unschön. Deshalb sind z.B. .docx (Word) oder
.odt (Open Document) nicht direkt geeignet, weil sie gezippte XMLs sind.
Wie das bei Eagle ist, weiß ich leider nicht genau. Das arbeitet auch
mit Scriptdateien, wie ich mich erinnern kann. Aber KiCAD sollte wieder
gehen, da es XMLs und Scripte nutzt.
Das Versionierungstool prüft immer nur auf Unterschiede zwischen
vorheriger und gerade einzucheckender Dateiversion (Stichwort
"diff"-Algorithmus) und speichert nur diese in der Datenbank. In diesem
Zusammenhang kann man sich auch die Patches für Linux-Programme z.B.
vorstellen, die nichts weiter sind als "Unterschiedsdateien" zum
originalen Quellcode (aber das ist wieder eine andere Kiste ;) Deshalb
kannst du dir z.B. die Unterschiede zur Ur- oder einer beliebigen
Version im Code später immer schön anzeigen lassen und Änderungen
nachverfolgen.
Aber fang nicht an, deine gesamten Festplatteninhalte zu versionieren
wenn du einmal den Dreh raus hast - irgendwann sollte man auch aufhören
alles versionieren zu wollen ;)
Viel Spaß bei der Nutzung!
Änderungen an Text-Dateien belegen im Versioning System nur wenig
Speicherplatz, weil die Software nur die geänderten Zeilen speichert.
Andere Dateien (z.B. Word und Bilder) werden als "Binärdatei" behandelt
und bei jeder Änderung komplett gespeichert. Wenn Du also eine 10MB Word
Datei 5 mal änderst, wächst die Datenbank um 50MB.
Wenn mehrere Entwickler an einem Projekt arbeiten, kann das System bei
Textdateien die Änderungen der einzelnen Entwickler zusammen mischen
(merge).
Bei Binärdateien geht das nicht. Wenn zwei Entwickler eine Datei
verändern und dann die Änderungen einchecken (commit), muss einer seine
Änderungen verwerfen.
Ob AVR Studio Subversion unterstützt, oder nicht, ist eigendlich
ziemlich egal. Installiere Dir TortoiseSVN (unter Windows), ich kenne
kein komfortableres Tool. Es handelt sich um eine Erweiterung für den
Dateimanager, versteckt sich hauptsächlich im Kontextmenü (rechte
Maustaste).
Leider gibt es unter Linux nichts vergleichbares. Da würde ich KdeSvn
verwenden oder das primitive Kommandozeilentool "svn". Daran kann man
sich auch gewöhnen.
Ein lokales Repository ohne Server legst Du mit dem Befehl svnadmin an.
Beim Zugriff darauf mit einem SVN Client gibst Du die URL im Format
file:///d:/pfad/repository ein. Achtung: Drei Slashes sind am Anfang
nötig!
Ja für AVR Studio 6 gibt es das definitiv (denke die 5er wird das auch
schon haben, ist alles vom orginal Visual studio)
Habe das momentan mit code.google.com am laufen
schau mal unter Extras Ad-In oder Erweiterungs-Manager. AnkhSVN im
Grunde ganz einfach.
Stefan Frings schrieb:> Leider gibt es unter Linux nichts vergleichbares. Da würde ich KdeSvn> verwenden oder das primitive Kommandozeilentool "svn". Daran kann man> sich auch gewöhnen.
Ich habe da RabbitSVN unter Ubuntu gesehen - läßt sich auch komfortabel
verwenden und zeigt die Symbole der Versionierung auch im
Gnome-Dateimanager ordentlich an. Sonst das Kommandozeilentool, wie ich
schon sagte, unter Cygwin bei Windows verwenden. Ist leider nicht so
komfortabel.
Wenn Du Probleme mit der englischen Sprache hast, würde ich Dir
ebenfalls Mercurial empfehlen. Dazu gibt es im Rahmen der Homepage und
in der Wikipedia einiges an Unterlagen.
Zu Git gibt es auch ein schönes Buch unter http://git-scm.com/bookSVN würde ich heutzutage nicht mehr empfehlen, die dezentralen Systeme
(DVCS) haben einfach zu viele Vorteile. Branches erstellen geht zwar
auch in SVN, aber das Mergen ist ein Graus. Und warum sind Branches und
Tags im SVN im Grunde das gleiche und heißen nur anders?
Seit dem ich mal Git ausprobiert habe fluche ich jedes Mal, wenn ich
wieder SVN beutzen muss. Ob du nun Mercurial (hg), git oder bazaar (bzr)
benutzen möchtest, ist dir überlassen. Mein Rat ist nur: Finger weg von
SVN! Gerade als Einsteiger ohne Ballast von SVN dürfte es nicht so
schwer sein ein modernes System zu erlernen. Mit TortoiseGit gibt es
auch eine grafische Oberfläche.
Ein großer Unterschied zwischen Git und SVN ist auch, dass SVN einzelne
Dateien versioniert, während Git das ganze Projekt betrachtet. Somit
werden auch z.B. Umbennungen von Dateien erkannt, auch wenn sich kleine
Teile ändern. In SVN siehst du nur dass eine Datei gelöscht wurde und
eine neue angelegt.
P.S.: Von git weiß ich, dass man auch mit SVN Servern kommunizieren kann
(git-svn). Wenn also jemand mit dem du zusammen arbeiten möchtest nur
einen SVN Server hat, kannst du trotzdem lokal Git benutzen.