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!
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).
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
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.
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.
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.
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)
Einfach Projekte im Dropbox-Ordner anlegen und mit git dort verwalten. Alle Änderungen sind immer überall vorhanden, selbst wenn kein commit erfolgt ist.
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?
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.
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).
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?
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.
github ist der quasi standard und für public projekte kostenlos und unlimitiert.
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.)
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
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.
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
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.
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.
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
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.
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.
> 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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.