Forum: PC Hard- und Software Private Datei-Versionierung auf dem NAS - GIT oder SVN ?


von Elektroniker (Gast)


Lesenswert?

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

von Jan H. (j_hansen)


Lesenswert?

Für deinen Anwendungsfall ist es wohl vollkommen egal. Git ist im Moment 
wohl etwas "hipper".

von Axel S. (a-za-z0-9)


Lesenswert?

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 svn 
checkout 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.

von Oliver S. (oliverso)


Lesenswert?

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

von Fabian (Gast)


Lesenswert?

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 ;).

von Tom (Gast)


Lesenswert?

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.

von Jan K. (jan_k)


Lesenswert?

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

von Hannes J. (Firma: _⌨_) (pnuebergang)


Lesenswert?

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.

: Bearbeitet durch User
von Tom (Gast)


Lesenswert?

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.

von Borislav B. (boris_b)


Lesenswert?

Bitbucket bietet unbegrenzt viele private Repos.

Falls gewünscht:
Dazu gibts noch einen super Client (SourceTree) für Win/Mac/(Linux?).

von Sven B. (scummos)


Lesenswert?

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.

von Hans Ulli K. (Gast)


Lesenswert?

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.

von Axel S. (a-za-z0-9)


Lesenswert?

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.

von Ich (Gast)


Lesenswert?

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.

von Irgendwer (Gast)


Lesenswert?

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!

von Elektroniker (Gast)


Lesenswert?

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

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.