Forum: Mikrocontroller und Digitale Elektronik Softwareversionierung im AVRstudio 5


von Fluffi (Gast)


Lesenswert?

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.

von Georg G. (df2au)


Lesenswert?

Subversion, kostenlos und gut, gibt es für (fast) alle Betriebssysteme.

von Tippgeber (Gast)


Lesenswert?

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.

von Georg G. (df2au)


Lesenswert?

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 :-)

von amateur (Gast)


Lesenswert?

Eine weitere Möglichkeit, ebenfalls Gratis und ohne großen 
Installationsaufwand, wäre Mercurial.
Für Clicky-Bunty gibt's hierzu auch noch tortoiseHg.

von Tippgeber (Gast)


Lesenswert?

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.

von Vlad T. (vlad_tepesch)


Lesenswert?

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.

von Fluffi (Gast)


Lesenswert?

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)

von Tippgeber (Gast)


Lesenswert?

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!

von Fluffi (Gast)


Lesenswert?

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?

von Tippgeber (Gast)


Lesenswert?

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!

von Stefan F. (sfrings)


Lesenswert?

Ä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!

von Hans (Gast)


Lesenswert?

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.

von Tippgeber (Gast)


Lesenswert?

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.

von amateur (Gast)


Lesenswert?

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.

von git (Gast)


Lesenswert?

Zu Git gibt es auch ein schönes Buch unter http://git-scm.com/book
SVN 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.

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.