Forum: PC-Programmierung Versionsverwaltung?


von Masl (Gast)


Lesenswert?

Morgen Leute,

Ich bastl zur Zeit an einem C++ Projekt sowie an einem AVR Projekt. 
Zuhause mach natürlich am liebsten aufn Desktop PC mit vernünftigem 
Bildschirm, Tastatur etc.

Ab und zu bin ich jedoch auch am Laptop.

Außerdem hab ich mir angewöhnt, für jede Plattform/Programmiersprache 
einen eigenen Eclipse Workspace anzulegen zwecks unterschiedlicher 
Plugins.

Ich bin ja bestimmt nicht der einzige der an mehreren Rechnern arbeitet.

Wie handhabt ihr das Problem, immer am momentan benutzten Rechner den 
aktuellsten Stand zu haben?

Habs eine Zeit lang probiert, die Workspaces auf einem USB Stick 
anzulegen. Aber den hat man natürlich immer dann nicht zur Hand wenn man 
ihn braucht.
Außerdem ändert sich da manchmal der Laufwerksbuchstabe und Eclipse 
findet seinen Workspace nicht.
Und verlier den Stick mal...

Natürlich könnte man die Workspaces auf den Rechnern anlegen und den 
Stick nur zum Datenaustausch benutzen. Dann vergisst man aber oft den 
aktuellen Stand auf den Stick zu spielen.

Jetzt denke ich an eine Versionsverwaltung, zB Git.
Da hätte man ja mit github auch einen freien Hoster zur Verfügung.

Aber ist eine Versionsverwaltung nicht fast schon zu umständlich für ein 
Hobbyprojekt, an dem auch nur ich dransitze?

Also wie handhabt ihr sowas?

Viele Grüße!

von eosroea (Gast)


Lesenswert?

Masl schrieb:
> Aber ist eine Versionsverwaltung nicht fast schon zu umständlich für ein
> Hobbyprojekt, an dem auch nur ich dransitze?

Nein, meiner Meinung nach ist das durchaus sinnvoll (auch mit Git).

von Wastl F. (rescuetigerchen)


Lesenswert?

dropbox benutze ich für meine eagle projekte.
mein problem ist aber, daß ich zum programmieren auf Win mit dem AVR 
Studio arbeite, auf einem Mac aber mit Xcode. Diese benötigen zwar die 
gleichen *.c dateien, es sind aber natürlich projektspezifische dateien 
erstellt worden. ich würd mich also gerne an die frage mit anhängen.
ist git nicht für alle einsehbar (opensource)? das hielt mich bisher 
davon ab.
gruß, wastl

von Sven H. (dsb_sven)


Lesenswert?

Es gibt (oder gab mal) ein Plugin das heißt Subclipse (vielleicht gibt 
es davon schon nen Nachfolger) damit konntest du deine Daten direkt aus 
Eclipse heraus mit einem SVN Server synchronisieren.

Alternativ kannst du auch aus dem Explorer heraus den Workspace ordner 
synchronisieren. Ich glaube da gibt es ein Tool "Tortoise SVN" damit 
geht sowas. Auch das ist an einen SVN Server gebunden.

von proGit (Gast)


Lesenswert?

Ich benutze git inzwischen für fast alle Hobbyprojekte und auch auf der 
Arbeit.
Denn damit kann man einfach alte funktionierende Stände 
wiederherstellen.
("Nur mal eben was ausprobieren..." geht ganz gut damit, denn man kann 
ja die Änderungen wieder verwerfen.)

Außerdem ist die Historie interessant (z. B. bei der Fehlersuche)

Gerade git ist sehr flexibel (zusammenführen von unterschiedlichen 
projektständen (merges) oder Vergleich verschiedener Versionen (diff))

Es fällt also ledglich ein wenig Mehraufwand an, um die commit-messages
zu schreiben. Und das ist viel oder wenig, je nach dem wie viel du 
möchtest.

von StinkyWinky (Gast)


Lesenswert?

Das Problem mit dem Laufwerksbuchstabe umgehe ich so, dass ich mir ein 
Laufwerk für die Projektarbeit substituiere (mit 'subst', bzw 'net 
use').

Die Projektdaten (z.B. verschiedene Versionen) liegen nebeneinander in 
Verzeichnissen. Mit einem kleinen Skript kann ich per Doppelklick 
zwischen beliebigen Projekten umschalten. In den Projekteinstellungen 
ist immer das selbe Laufwerk.

Wenn möglich sollte man allerdings relative Pfade verwenden, so dass das 
Laufwerk ohnehin keine Rolle spielt.

Als Versionsverwaltung benutze ich TortoiseSVN.

von Masl (Gast)


Lesenswert?

Danke euch!

Für Git bräuchte ich aber einen Server/Hoster, was benutzt ihr da? Wie 
gesagt, ich kenn momentan nur github.

Ist das ganze umständlich oder eher einfach einzurichten?

@ Wastl B.:
Ok da hab ichs noch einfacher, ich benutze inzwischen nur noch Eclipse, 
und zwar für alles :-)
(C, C++, Java, AVR, unter Windows und Linux)

von proGit (Gast)


Lesenswert?

Man kann git auch ohne zentralen Server benutzen.

Ich benutze GitHub.com

von dropgit (Gast)


Lesenswert?

Einfach Projekte im Dropbox-Ordner anlegen und mit git dort verwalten. 
Alle Änderungen sind immer überall vorhanden, selbst wenn kein commit 
erfolgt ist.

von Masl (Gast)


Lesenswert?

proGit schrieb:
> Man kann git auch ohne zentralen Server benutzen.

Vielleicht hab ich mich bisher zu wenig mit Git beschäftigt, aber wie 
hole ich mir ohne zentralen Server mein Projekt auf den Laptop, wenn 
mein PC nicht läuft?

von man git (Gast)


Lesenswert?

fuer git braucht man keinen server. ein git repository ist wie bei svn 
auch einfach ein verzeichniss.

da git ein verteiltes vcs ist, kann man sehr einfach mit verschiedenen 
rechnern arbeiten. man legt auf einem rechner ein git repo an (git init) 
und clont das auf einem anderen rechner. dazu muss man nur zugriff auf 
das verzeichniss haben.

dann kann man in beiden repos arbeiten, und irgendwann mit git pull oder 
git merge den stand syncronisieren.

von proGit (Gast)


Lesenswert?

Masl schrieb:
> proGit schrieb:
>> Man kann git auch ohne zentralen Server benutzen.
>
> Vielleicht hab ich mich bisher zu wenig mit Git beschäftigt, aber wie
> hole ich mir ohne zentralen Server mein Projekt auf den Laptop, wenn
> mein PC nicht läuft?

Das geht natürlich nicht (so einfach).
Man kann mit "git format-patch <von>..<bis>" die commits in textform 
bekommen.
Diese können dann per mail/usb stick/brieftaube an den anderen Rechner 
übertragen werden.

Für deine Anforderung, an die Daten zu kommen, wenn ein Rechner aus ist, 
ist es wahrscheinlich praktikabler entweder die angesprochene 
Dropbox+git Lösung zu nehmen oder einen Server zu nehmen.
Server sind zum Beispiel hier http://git-scm.com/tools unter "Git 
Hosting" zu finden.

Der Ansatz über einen Server ist meiner Meinung nach sauberer als mit 
Dropbox. (Dropbox hat gewisse Versionsverwaltungsfunktionalitäten, git 
ist eine Versionsverwaltung; Warum 2 Systeme die einen sehr ähnlichen 
Zweck erfüllen sollen?) Mit einem zentralen Server hat man auch eine 
sehr viel bessere Kontrolle was wo ist (läuft aber nicht automatisch wie 
bei Dropbox).

von Masl (Gast)


Lesenswert?

Ja, aber meine Frage war:

Wie bekomm ich die Daten von Rechner A auf Rechner B wenn Rechner A 
nicht läuft?

Das geht doch nur wenn ich, bevor ich Rechner A ausschalte die Daten auf 
einen dritten, ständig laufenden Rechner C (sowas kann man wohl Server 
nennen) übertrage (pushe).

Dann kann ich irgendwann, wenn ich grad an Rechner B sitze, die 
aktuellsten Daten anfordern (pullen). Weil mein Rechner A nicht läuft 
bin ich wieder auf den ständig laufenden Rechner C (Server) angewiesen.


Die Tatsache, das jeder Rechner gleichzeitig ein gleichberechtiger 
Client/Server ist ändert doch nichts daran dass ich einen Rechner C 
brauche (wobei das ein Hoster sein darf).

Oder hab ich hier den Denkfehler?

von Masl (Gast)


Lesenswert?

Danke proGit, du hast verstanden worauf ich hinaus will :-)

Ist denn dieses github auch so ein Hoster/Server?

Da liegen ja anscheinend auch viele OpenSource Projekte drauf.

von D. I. (Gast)


Lesenswert?

github ist der quasi standard und für public projekte kostenlos und 
unlimitiert.

von Stefanie B. (sbs)


Lesenswert?

github bietet kostenloses Hosting für quelloffene Projekte bis 300MB 
(oder mehr?) an.
Primär wird github als Hoster/Server benutzt, es kann aber auch noch 
andere Sachen kostenlos anbieten, zum Beispiel Issue-Tracking 
(Bugs/Feature-Requests). Außerdem ist ein Wiki dabei.
github als solches legt sehr viel Wert auf das Zusammenarbeiten, also 
auch einfaches 'reviewen' von Beiträgen anderer Leute ist möglich.
Wenn du deine Softwarequellen nicht offenlegen willst, dann kostet 
github auch Geld.

Andere Hoster bieten ähnlichen Umfang, zb. gitorios.org
Ich habe allerdings keine Erfahrung mit anderen Hostern, daher meine 
Empfehlung für github. (schnelle Verbindung uplink/downlink, hohe 
Verfügbarkeit, gutes Userinterface zur Zusammenarbeit mit anderen sind 
meine Pro Gründe; als Anfänger/Newcomer ist man durch das Userinterface 
möglicherweise verwirrt, jedenfalls ging mir das so.)

von Masl (Gast)


Lesenswert?

Seh ich das richtig dass bei github jeder meine Dateien dann einsehen 
kann?

Versteht mich nicht falsch, ich find Open Source usw. super und würde 
mein Zeugs auch veröffentlichen, aber erst wenns fertig ist.

Momentan spiel ich die meiste Zeit herum und probier Zeugs aus (vor 
allem Qt für die GUI ist Neuland für mich).
Das ist alles Zeugs, was die Öffentlichkeit nicht zu sehen hat :-)

Oder wie wird bei github festgelegt wann mein Projekt "veröffentlicht" 
wird?

Grüße, Masl

von asd (Gast)


Lesenswert?

Stefan B. schrieb:
> Andere Hoster bieten ähnlichen Umfang, zb. gitorios.org
> Ich habe allerdings keine Erfahrung mit anderen Hostern,

Ich benutze gitorious.org für diverse Sachen, funktioniert prima. Anders 
als github basiert es auch auf Open-Source Software, daher von mit 
bevorzugt.

von asd (Gast)


Lesenswert?

Masl schrieb:
> Seh ich das richtig dass bei github jeder meine Dateien dann einsehen
> kann?

Ja.


> Oder wie wird bei github festgelegt wann mein Projekt "veröffentlicht"
> wird?

Private Repos gibts nur gegen Bezahlung:

https://github.com/plans

von Stefanie B. (sbs)


Lesenswert?

Masl schrieb:
> Oder wie wird bei github festgelegt wann mein Projekt "veröffentlicht"
> wird?

Du legst es fest.
Wenn du ein "private repository" (nicht öffentlich) haben willst,
bezahlst du. (7$ pro Monat ist das günstigste)
Das ist deren Geschäftsmodell.

Wenn es nur für dich sein soll, könntest du über einen privaten 
Homeserver nachdenken oder Laptop und Rechner synchronisieren, wenn 
beide noch an sind, oder du könntest die Dropboxlösung ausprobieren.

von Rolf Magnus (Gast)


Lesenswert?

Masl schrieb:
> Aber ist eine Versionsverwaltung nicht fast schon zu umständlich für ein
> Hobbyprojekt, an dem auch nur ich dransitze?

Mitnichten. Ich würde keins mehr ohne Versionsverwaltung machen, egal ob 
nun an einem oder an mehreren Rechnern und egal ob alleine oder mit 
vielen anderen.

> Also wie handhabt ihr sowas?

Ich nutze auf meinem Haupt-Entwicklungsrechner ein lokales 
SVN-Repository, auf das ich von anderen Rechnern aus per svn+ssh 
zugreife. Wenn ich zuhause und wach bin, läuft der sowieso immer. Ich 
will das aber auf meine Dockstar umziehen und es per https verfügbar 
machen, um auch über's Internet, insbesondere auch durch Proxies 
hindurch drauf zugreifen zu können.

proGit schrieb:
> Man kann git auch ohne zentralen Server benutzen.

Klingt wie: "Man kann ein Fahrrad auch ohne Motor benutzen" ;-)
Bei git gibt's doch gar kein Konzept eines zentralen Servers.

Masl schrieb:
> Ja, aber meine Frage war:
>
> Wie bekomm ich die Daten von Rechner A auf Rechner B wenn Rechner A
> nicht läuft?

Gar nicht. Wenn du zwei Rechner synchronisieren willst, müssen die beide 
laufen, und sie müssen verbunden sein. Das ist aber natürlich kein 
git-spezifisches Problem.

> Die Tatsache, das jeder Rechner gleichzeitig ein gleichberechtiger
> Client/Server ist ändert doch nichts daran dass ich einen Rechner C
> brauche (wobei das ein Hoster sein darf).

Sofern immer nur entweder A oder B läuft, aber nie beide gleichzeitig.

von Michael F. (startrekmichi)


Lesenswert?

Wenn du eine FritzBox hast, erledigt sich das mit dem Server relativ 
einfach:

Es gibt eine alternative opensource Firmware für die meisten (alle?) 
Fritzboxen namens freetz. Außerdem hatte ich damals sogar ein fertiges 
Binary für einen SVN-Server gefunden. Bei mir dient somit eine FritzBox 
mit USB-Stick als SVN-Server. Per dyndns ist der sogar per url 
erreichbar :-)

Die Performance ist natürlich nicht vergleichbar mit einem "richtigen" 
Server, aber für Hobby-Zwecke reicht das mMn völlig aus.

mfg
 Michi

von Stefanie B. (sbs)


Lesenswert?

Rolf Magnus schrieb:
> Klingt wie: "Man kann ein Fahrrad auch ohne Motor benutzen" ;-)
> Bei git gibt's doch gar kein Konzept eines zentralen Servers.

Ganz klares Jain.
http://whygitisbetterthanx.com/#any-workflow

Es gibt im Internet unzählige Git Repositories für zum Beispiel den 
Linuxkernel, technisch sind sie alle gleich, und doch ist Thorvalds git 
repository 'gleicher' ;)
Also ein repository unter vielen, welches als Referenz dient.
Eine solche Referenz ist von der Arbeitsweise her typisch für eine 
zentrale Versionsverwaltung.

von Rolf Magnus (Gast)


Lesenswert?

Stefan B. schrieb:
> Also ein repository unter vielen, welches als Referenz dient.
> Eine solche Referenz ist von der Arbeitsweise her typisch für eine
> zentrale Versionsverwaltung.

Ich meinte ja nicht, daß es nicht möglich sei, was derartiges auf git 
umzusetzen, sondern vielmehr, daß git selbst eben das Konzept eines 
zentralen Servers nicht so wie es z.B. svn tut. Natürlich kann man ein 
Repository rausgreifen, das "gleicher" ist als die anderen und das eben 
zum Server erklären.
Um meinen Vergleich mit dem Fahrrad nochmal zu bemühen: Ich kann ans 
Fahrrad auch einen Hilfsmotor dranbasteln, dann hat es auch einen Motor. 
Dennoch kennt das Grundprinzip "Fahrrad" erstmal keinen Motor.

von sebastian (Gast)


Lesenswert?

> Wie bekomm ich die Daten von Rechner A auf Rechner B wenn Rechner A
> nicht läuft?
Das geht schon aus Prinzip nicht, von einem nicht laufenden Rechner 
bekommst du keine Daten runter. Mindestens das Speichermedium, auf dem 
sie drauf sind, muss irgendwie "laufen". Ausser, zu zählst 
"Speichermedium vom Rechner trennen" als "Daten runterbekommen". Hat 
aber überhaupt nichts damit zu tun, ob du eine Versionsverwaltung 
verwendest.

> Das geht doch nur wenn ich, bevor ich Rechner A ausschalte die Daten auf
> einen dritten, ständig laufenden Rechner C (sowas kann man wohl Server
> nennen) übertrage (pushe).
Der Ansatz ist schonmal richtig.
C muss aber nicht unbedingt ein Rechner sein. Es kann auch ein USB-Stick 
sein. Du kannst auch noch D und E nehmen (Ein zweiter USB-Stick und ein 
Server, ...) wenn C ausfällt (USB Stick verloren, ...)
git ist für so was besonders geeignet - du kannst deine Daten über alle 
möglichen Wege synchronisieren, git hilft dir dabei, dass du den 
Überblick nicht verlierst.

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.