Hallo Forum.
Aufgrund einer Abschlussarbeit kommt der dringende Wunsch nach einer
privaten Datei-Versionierung.
Arbeitsablauf ist so, das ich zu Hause am PC an Programmcode und Doku
arbeite. Zu Hause und unterwegs arbeite ich auch noch am Laptop und ab
und zu auch an einem weiteren stationären PC ausserhalb meines LANs.
Da die Daten nicht öffentlich sein sollen, kommen Github und co nicht in
Frage.
Da ich zu Hause ein Synology NAS einsetze, habe ich mir GIT und SVN
näher angeguckt, da Synology da fertige Pakete anbietet.
Die Funktion die ich benötige ist folgende: Datei vom Server holen (hier
liegt immer die aktuellste Version), bearbeiten und wieder
zurückschicken.
Nun versuche ich herauszufinden welches Versionierungssystem besser
geeignet wäre.
Den zentralen Unterschied habe ich so verstanden:
Bei SVN checke ich Dateien aus, bearbeite diese und checke diese wieder
ein. Bei GIT ziehe ich mir ne Kopie des kompletten Projekts auf den
lokalen Rechner, bearbeite die Dateien und Synchronisiere es
anschließend wieder mit dem Server.
So gesehen wäre SVN die bessere wahl, oder hab ich was entscheidenes
übersehen?
Ich bin dankbar für alle Hinweise und Tipps.
Gruß!
Elektroniker
Elektroniker schrieb:> Aufgrund einer Abschlussarbeit kommt der dringende Wunsch nach einer> privaten Datei-Versionierung.>> Arbeitsablauf ist so, das ich zu Hause am PC an Programmcode und Doku> arbeite. Zu Hause und unterwegs arbeite ich auch noch am Laptop und ab> und zu auch an einem weiteren stationären PC ausserhalb meines LANs.
"Außerhalb meines LANs" interpretiere ich jetzt mal so, daß du von da
auch keinen Netzzugang (SSH o.ä.) zu deinem NAS hast?
> Da ich zu Hause ein Synology NAS einsetze, habe ich mir GIT und SVN> näher angeguckt, da Synology da fertige Pakete anbietet.>> Die Funktion die ich benötige ist folgende: Datei vom Server holen (hier> liegt immer die aktuellste Version), bearbeiten und wieder> zurückschicken.
Du wirst auch noch folgende Funktionen haben wollen:
- prüfen ob die lokalen Files noch aktuell sind
- unterschiede zwischen lokalen Files und dem aktuellenen Stand im
Repository anzeigen
- lokale und Repository Versionen mergen
> Nun versuche ich herauszufinden welches Versionierungssystem besser> geeignet wäre.>> Den zentralen Unterschied habe ich so verstanden:> Bei SVN checke ich Dateien aus, bearbeite diese und checke diese wieder> ein. Bei GIT ziehe ich mir ne Kopie des kompletten Projekts auf den> lokalen Rechner, bearbeite die Dateien und Synchronisiere es> anschließend wieder mit dem Server.
Jein. Auch mit Git checkst du lokal aus. Der Unterschied ist, daß bei
Git zusätzlich noch die gesamte History lokal vorliegt.
> So gesehen wäre SVN die bessere wahl, oder hab ich was entscheidenes> übersehen?
Hast du. Mit SVN kannst du ohne Netzwerkverbindung nur an lokalen Files
arbeiten. Es funktioniert weder svn status noch svn diff noch svncheckout oder svn checkin. Am meisten wird dir vermutlich das letzte
fehlen. Denn auch wenn man entfernt von daheim arbeitet, wird man hin
und wieder Zwischenstände einchecken wollen, damit man im Fall des
Falles dahin zurückrollen kann.
Mit Git hast du die gesamte History dabei. Die lokal erzeugte immer
komplett, die von anderen Checkouts erzeugte nur insofern wie du sie
synchronisiert hast. Du kannst auch immer lokal einchecken, ohne dazu
Verbindung zum parent Repository zu brauchen.
Langer Rede kurzer Sinn: Git ist für dich besser.
Auch mit SVN holst du dir das ganze Projekt aus dem Repository, und
checkst es wieder ein.
Ansonsten, wie schon gesagt wurde, ist es Geschmackssache. Die Vorteile
von Git bei Multi-User-Parallelentwicklung kommen bei dir nicht zum
tragen, daher nimm, was dir besser gefällt.
Oliver
Hallo,
Github bietet für Studenten/Schüler ein kostenloses Upgrade für ein
Jahr, bei dem du unter anderem fünf private Repositories erstellen
kannst.
Siehe hier: https://education.github.com/
Direkt das Formular für den Antrag:
https://education.github.com/discount_requests/new
Wird sehr schnell und unkompliziert bearbeitet.
Vielleicht stellt Github dann doch eine Alternative für dich dar ;).
Axel Schwenke schrieb:> Langer Rede kurzer Sinn: Git ist für dich besser.
sekundiert.
Noch ein Punkt:
Git ist (im Softwarebereich) die Zukunft. Wer SVN kann, tut sich mit git
wesentlich schwerer als jemand ganz ohne Vorkentnisse. Also gleich git
lernen.
Git hat meiner Meinung nach nur Vorteile gegenüber SVN. Mit Git kannst
du auch SVN Repos auschecken. Der große Vorteil ist das lokale Repo, du
hast quasi überall den gesamten Stand. Raucht dein Server ab, packst du
deinen GIT Ordner auf einen zweiten Server und weiter gehts ;)
Außerdem kannst du problemlos lokal einchecken, mergen, branchen, ohne
online sein zu müssen. Das heißt du checkst deine Daten ein ('committen'
heißt das bei git) und schreibst was kurzes dazu, wann immer du das
Gefühl hast, dass ein neuer Versionsstand erreicht ist. Und sei es nur
zu Backupzwecken.
Willst du was großes ausprobieren, erstellst du einen Branch und checkst
den aus, ohne dass du - wie bei SVN - z.B. neue Ordner oder sowas
erstellen müsstest.
Das funktioniert alles prächtig mit der Git Bash oder einer grafischen
Geschichte wie Tortoise GIT oder so.
Und solange du nur alleine auf deinem Repo arbeitest musst du viele
Sachen die sonst wichtig wären gar nicht beachten (History umschreiben
und veröffentlichen z.B. ist gar nicht schön)
Schöne Grüße,
Jan
Git ist so eine Fanboy-Sache. Wie man schon an Sprüchen wie
Tom schrieb:> Git ist (im Softwarebereich) die Zukunft.
sehen kann. Der Weg der Informatik zur Hölle ist mit tausenden von
Technologie-Leichen gepflastert, die alle mal "die Zukunft" waren.
Das ist irgend so eine Art Gendefekt der Informatik. Auch wenn etwas
funktioniert muss es unbedingt in ein paar Jahren durch etwas neues
ersetzt werden. Nicht weil das Neue besser ist (meist ist es nur ein
Haufen stinkender Müll), sondern weil es neu ist.
Wenn niemandem in der Informatik gerade etwas Neues einfällt, wird was
altes umbenannt und als neue Sau durchs Dorf getrieben.
SVN funktioniert seit Jahren problemlos und wunderbar. Getreu der
allgemeinen Philosophie der Informatik muss es daher weg. Git ist geil
wenn man seinen Quelltext auf zig lokalen Repositorien verbummeln
möchte, auf denen man den Überblick verliert, wenn man irgendwann nicht
mehr weiß was an Tree 0dea46e42f0625246c3d06a71d6559eaec5419ca Head
07f2039(ja, reales Beispiel) denn so besonders war.
Hannes Jaeger schrieb:> Git ist so eine Fanboy-Sache.
Nein. Ich bin kein Git-Fanboy und nutze privat meist SVN.
Aber ich sehe die Vorteile und bleibe nicht auf dem Zwischenstand der
Technik stehen, der zufällig aktuell war, als ich noch geistig rege war
und leicht dazugelernt habe.
Wenn du ssh-Zugriff auf irgendeinen Server hast, ist git trivial
einzurichten und zu benutzen. Einfach auf dem Server in /pfad
git init .
und dann auf dem Client
git remote add origin ssh://user@server:/pfad
Fertig.
Kann ich empfehlen, ist sehr praktisch.
Wenn du auf deinem NAS einen ssh Zugang und git installiert hast (in den
Synology Paketen drin) ist es einfacht.
Einloggen per SSH
dann
# mkdir diplom.git
# cd diplom.git
# git init --bare
Auf jedem "Client" dann.
# mkdir diplom
# cd diplom
# git remote add origin ssh://user@remote.addr:diplom.git
oder
# git remote add origin user@remote.addr.:diplom.git
Wenn ein @ in der URL vorkommt nimmt git als Standortprotokoll "git over
ssh"
Und git arbeitet Content basierend.
Du kannst bei einer geänderten (Text)-Datei jede einzelen Zeile
"einchecken"
Zu dem git bashing mal ne Frage:
Was passiert unter SVN wenn ich den den gleichen Zweig nochmal
"versehentlich" mergen will?
Bei SVN gibt es einen Merge Konflikt.
Ja, ich weiß, bei git kann es auch zu einem Merge Konflikt kommen.
Aber auch nur dann wenn vorher der Zweig Rebased wurde, damit wird ja
auch die History geändert.
Hannes Jaeger schrieb:> Git ist so eine Fanboy-Sache.
Nein.
> Wie man schon an Sprüchen wie>> Git ist (im Softwarebereich) die Zukunft.> sehen kann.
Diese Begründung ist sicher schlecht. Trotzdem ist Git klar besser als
SVN, insbesondere wenn man offline arbeiten können will.
> SVN funktioniert seit Jahren problemlos und wunderbar.SVN hat schon immer die Einschränkung, daß man für viele (zu viele)
Operationen eine Netzwerkverbindung zum zentralen Repository-Server
braucht. Deswegen wurden schon lange (auch vor Git) Alternativen
entwickelt, die diese Einschränkung nicht haben. Bekannt sind Bitkeeper,
Mercurial, Bazaar und eben Git.
Und wenn der TE die Wahl zwischen SVN und Git hat und die Anforderung,
offline arbeiten zu können, dann ist Git nun mal die bessere Wahl.
Vollkommen unabhängig davon ob du es magst oder auch nur verstehst.
Wenn Du einfach nur synchronisieren willst (mit unterstützung
wechselseitiger Änderungen auf Datei-Ebene): Schau Dir mal Unison an:
http://www.cis.upenn.edu/~bcpierce/unison/
Damit habe ich meine studentischen Arbeiten bequem (und ohne Cloud)
zwischen mehreren Rechnern synchronisiert. Versioniert ist dabei aber
nichts.
Git und Artverwandte sind SVN überlegen, in vielen Punkten.
Alleine die Tatsache, ein komplettes lokales Repository zu haben, ist
ein großer Vorteil: Man kann systematisch kleine Änderungen commiten,
kann ganz einfach neues Probieren und wieder zurückspringen, kann lokal
mehrere Branches bearbeiten, mergen und Cherry-Picking etc. machen.
Das Netz ist voll mit Anleitungen und Vergleichen zu Git.
Hannes Jaeger schrieb:> Git ist so eine Fanboy-Sache.
Nein. Git ist eine verteilte Versionsverwaltung unter vielen. Es gibt
ein gutes halbes Dutzend relevanter Vertreter dieser Gattung die in der
Praxis in nennenswerten Umfang benutzt werden. Verteilte
Versionsverwaltung ala Git und Konsorten ist schon seit Jahren
Industriestandard. Die haben die zentralistischen Vorgänger wie SVN etc.
schon seit beinahe 10 Jahren verdrängt.
Willkommen im Jahr 2015!
Guten Morgen!
Danke für die vielen Infos.
Ich werde dann GIT auf das NAS installieren und testen.
Besonders die offline Versionierung scheint bei mir ideal zu sein.
Wenn mal die Verbindung zum NAS nicht klappt (Internet fällt aus
(passiert leider häufig)) kann ich immer noch vernüftig damit arbeiten.
Ich schrieb:> Wenn Du einfach nur synchronisieren willst (mit unterstützung> wechselseitiger Änderungen auf Datei-Ebene): Schau Dir mal Unison an:> http://www.cis.upenn.edu/~bcpierce/unison/>> Damit habe ich meine studentischen Arbeiten bequem (und ohne Cloud)> zwischen mehreren Rechnern synchronisiert. Versioniert ist dabei aber> nichts.
Sowas habe ich bereits seit mehreren Jahren per "Synology Cloud" laufen.
Dabei ist die Cloud nur Lokal über LAN erreichbar.
Doch bei den vielen Codezeilen wünsch ich mir jetzt doch die
Versionierung.
Und das nicht so: TOPLEVEL_20141212_BAK2_PC1_NEU.vhd! ;-)
Vg!
Elektroniker