Forum: PC Hard- und Software Versionsverwaltung?


von Merten (Gast)


Lesenswert?

Gibt es eine einfache zu handhabende Versionsverwaltung für den PC 
(Windows)?
Ich möchte gerne Pythonskripte offline verwalten.

Merten

von Εrnst B. (ernst)


Lesenswert?

git

Unterstützung dafür ist vmtl. im Editor/IDE, die du zum Erstellen deiner 
Scripte verwendest schon vorhanden oder per Plugin verfügbar.


Beachte: "git" ist nicht "github". Das geht auch völlig lokal und 
cloud-frei.

von Wühlhase (Gast)


Lesenswert?

Oder den Tortoise-Client. Gibt es für git, aber auch für SVN.

von Daniel A. (daniel-a)


Lesenswert?

Ich empfehle auch git. Es gibt nichts besseres.

von Wühlhase (Gast)


Lesenswert?

Besser ist git auch nur, wenn man es braucht. Und mit git muß man sich 
deutlich länger beschäftigen als mit SVN.

von Frank K. (fchk)


Lesenswert?

Wenn Du was einfaches brauchst, nimm svn. svn ist zentralistisch, lagert 
alle Dateien auf einem zentralen Repository (lokal oder im Netz), und 
jeder der was davon braucht, verbindet sich mit diesem Repository über 
svn:// oder http(s)://.

git ist ein verteiltes System, bei dem Du lokale und entfernte 
Repositories hast, lokal arbeitest, dich aber auch mit 
Netzwerkrepositories synchronisieren kannst. git kann deutlich mehr, ist 
aber auch deutlich komplexer und aufwändiger.

Wenn Du die Features von git brauchst, nimm es. Wenn nicht, nimm svn.

Man kann svn und git Repositories auch miteinander synchronisieren. Wenn 
Du jetzt mit svn anfängst und später merkst, dass das nicht reicht, 
kannst Du immer noch migrieren, ohne die Versionshistorie zu verlieren.

Was anderes als svn und git spielt heutzutage fast keine Rolle mehr. rcs 
ist Asbach, cvs auch, Visual SourceSafe willst Du nicht (und will 
Microsoft auch nicht mehr), und MKS und Perforce ... es gibt sie.

fchk

von Peter Pan (Gast)


Lesenswert?

Wühlhase schrieb:
> Besser ist git auch nur, wenn man es braucht. Und mit git muß man
> sich deutlich länger beschäftigen als mit SVN.

Lese ich immer wieder, nur irgendwie konnte mir noch keiner aufzeigen, 
wieso SVN einfacher sein sollte.

Es ist schlichtweg deutlich umständlicher und heutigen Anforderungen 
nicht mehr gewachsen.


https://www.atlassian.com/git/tutorials/setting-up-a-repository

Oder ist ein

git init
git add dummedatei.txt
git commit -m "initiLer commit'

Wirklich so schwer und kompliziert?

von A. S. (Gast)


Lesenswert?

Der Vorteil bei Tortoise (SVN auf einem Windows PC): Du installierst 
Tortoise/SVN auf Deinem Rechner, nimmst einen leeren Ordner und 
eröffnest dort mit der rechten Maustaste ein neues Repository. Ohne 
Webgedöns, Server oder was weiß ich. Innerhalb von Minuten kannst Du 
lokal loslegen, notfalls ohne Internet auf einem Uraltrechner.

Du kannst Dich dann in SVN reinfuchsen, Du kannst aber auch alles mit 
der rechten Maustaste machen. Das erleichtert den Einstieg ungemein.

von Frank K. (fchk)


Lesenswert?

Peter Pan schrieb:

> git init
> git add dummedatei.txt
> git commit -m "initiLer commit'
>
> Wirklich so schwer und kompliziert?

Das ist ja nur der Anfang.

Szenario: Ich habe einen Haufen versionierter Dateien mit lokalen 
Änderungen, die ich auf einem Repository auf einem Server einchecken 
will.

svn: svn ci -m "text"

git: git add -all && git commit -m "text" && git push

Bei SVN habe ich kein lokales Repository (außer ich lege mir eines an), 
sondern nur meine Working Copy. Bei git comitte ich immer erstmal ins 
lokale Repo (das dann mindestens so viel Platz wie meine Working Copy 
braucht) und muss das dann nochmal extra pushen.

Klar. Sind unterschiedliche Konzepte. Das muss man verstanden haben und 
je nach Use Case seine Wahl treffen.

fchk

von Wilhelm W (Gast)


Lesenswert?

Eindeutig git; SVN ist von vorgestern, würde ich niemandem mehr 
empfehlen. In seiner vollen Schönheit ist es tatsächlich komplexer und 
umfangreicher mit Cherry-Pick, Squash, Bisect und was es da alles gibt, 
aber... muss man ja nicht nutzen. Für einfache Projekte reicht init, 
add, commit (wie oben geschrieben), das wars. Wer will, kann dann noch 
TortioseGit nehmen, dann ist es "genau so" wie SVN, man kann aber immer 
noch weiter skalieren (IDE-Einbindung, Github, verteilte Repos für's 
Notebook auf der Bahnfahrt, etc.)

von Wühlhase (Gast)


Lesenswert?

Peter Pan schrieb:
> Lese ich immer wieder, nur irgendwie konnte mir noch keiner aufzeigen,
> wieso SVN einfacher sein sollte.

Nichts für ungut, aber es scheint so als hättest du den Unterschied 
zwischen git und SVN nicht begriffen.

Bei SVN kannst du dich z.B. nicht zwischen mehreren Branches verirren, 
wenn man überhaupt erst einmal weiß was ein Branch (in git) ist.
Und selbst wenn man dann weiß wie das alles in git funktioniert, dann 
gibt es immer noch genug Strategien zur Auswahl mit Branches zu 
arbeiten.

SVN ist allein in dieser Hinsicht deutlich intuitiver und schneller zu 
verstehen.


Peter Pan schrieb:
> Es ist schlichtweg deutlich umständlicher und heutigen Anforderungen
> nicht mehr gewachsen.

Nicht alle Anforderungen, die es heute in dem ein oder anderen Projekt 
gibt, werden auch vom TS gestellt.

Im Gegenzug darfst du jetzt aber mal erklären, warum SVN umständlicher 
sein soll.


Peter Pan schrieb:
> https://www.atlassian.com/git/tutorials/setting-up-a-repository
>
> Oder ist ein
>
> git init
> git add dummedatei.txt
> git commit -m "initiLer commit'
>
> Wirklich so schwer und kompliziert?

Einen Fahrschüler wirst du hoffentlich auch nicht in seiner ersten 
Fahrstunde sofort ohne Aufsicht auf die Autobahn lassen, nur weil er auf 
Anhieb den Motor starten kann.
Git kann ja auch deutlich mehr als nur eine Datei hinzuzufügen, oder?

Ach ja...was machst du mit deiner Änderung jetzt eigentlich? Pushen, 
oder Committen? Bei SVN ist das ja einfach, aber selbst in 
proffessionellen Programmierteams soll es vorkommen, daß jemand den 
Unterschied vergißt. Und das eine bleiben läßt.

Und wenn der TS dann doch einen zentralen Server haben will...wird git 
alles andere als intuitiv.

von DPA (Gast)


Lesenswert?

Frank K. schrieb:
> git: git add -all && git commit -m "text" && git push

Das würde ich keinem empfehlen. Ich schaue immer erst mit "git status", 
was hat sich überhaupt geändert. Manchmal nehme ich "git add -u", wenn 
ich nur Dateien im Repo geändert habe, um die alle in einem rutsch dazu 
zu tun. Der Rest füge ich dann mit "git add datei/verzeichnis". Dann 
checke ich mit "git status" was ich da ausgewählt habe, und manchmal 
noch mit "git diff --cached" dass ich wirklich all die Änderungen will / 
ich da nichts versaut habe. Dann mache nehme ich eventuell manche files 
wieder raus, oder ändere noch was. Und dann mach ich den "git commit". 
Aber "git add --all", brauche ich absolut nie.

Da fällt mir auf, im Zitat oben machst du das falsch --all, nicht -all. 
Das --all ist aber sowieso unnötig, wenn man alle Dateien in einem 
Ordner dazutun will, kann man einfach "git add ." nehmen, "." für den 
aktuellen Ordner. Und wenn man im im Projektordner oben ist, ist das 
sowieso alles, wie bei --all.

Ich hab zwar noch eine .gitignore, normalerweise kommt also nichts 
unnötiges rein, auch bei "git add --all". Aber nachsehen sollte man 
trotzdem immer nochmal. Sonst wird das Repo schnell mal versehentlich 
zur Müllhalde. Und das später nachbessern, auch in der Historie, würde 
ich niemandem zumuten wollen.


PS: Noch was tolles an git, du kannst auch lokal irgendwo Repos hin tun. 
"mkdir repo.git; cd repo.git; git init --bare" und dann im Projekt "git 
remote add lokalrepo /pfad/zum/repo.git; git push -u lokalrepo master". 
Man kann das dann natürlich auch wieder clonen. "git clone 
/pfad/zum/repo.git" Projektordnername. Ist auch praktisch, um mit 
mehreren Repos/Remotes für ein Projekt umgehen zu lernen.

PPS: In neuerem Git ist der default branch manchmal "main" statt 
"master". Man kann die aber alle beliebig nennen.

von Kolja L. (kolja82)


Lesenswert?

Merten schrieb:
> Ich möchte gerne Pythonskripte offline verwalten.

Noch ein git von mir.

Wie bereits gesagt, git ist local und hat mit github nur in sofern etwas 
zu tun, dass es die lokale Voraussetzung dafür ist.

Womit schreibst du den Python Code?

Auch wenn die rudimentäre Benutzung von git schnell erlernt ist, liebe 
ich die Unterstützung, die VSCode bietet. Gerade wenn es um die 
grafische Darstellung der Branches geht.

von P. S. (namnyef)


Lesenswert?

Kommt vielleicht etwas auf die IDE an. Es geht z. B. kaum einfacher als 
mit der Kombination VSCode + git. Auch sonst ist git SVN in fast allen 
Aspekten überlegen.

Wenn man sowieso eine gewisse Affinität zur Kommandozeile hat, dann auf 
jeden Fall git.

Für SVN spricht aber das sehr gute Windows-Frontend "TortoiseSVN". Das 
ist womöglich etwas besser für Anfänger geeignet als git. Es gibt zwar 
auch "TortoiseGit", aber das habe ich als Schrott empfunden. Bei git 
gilt: Entweder richtig (saubere IDE-Integration oder Kommandozeile) oder 
gar nicht. TortoiseGit habe ich einzig und allein wegen des Diff-Tools 
installiert.

von Klaus H. (klummel69)


Lesenswert?

Auch von mir: git plus VSCode.

Von den vielen Befehlen braucht man normalerweise eh nur eine Handvoll.

Natürlich geht auch SVN. Aber warum auf ein sterbendes Pferd setzen...

Und alle die ich kenne und historisch SVN nutzen müssen, wünschen sich 
Branches wie in git.

von Peter Pan (Gast)


Lesenswert?

Wühlhase schrieb:
> Peter Pan schrieb:
>
>> Lese ich immer wieder, nur irgendwie konnte mir noch keiner aufzeigen,
>> wieso SVN einfacher sein sollte.
>
> Nichts für ungut, aber es scheint so als hättest du den Unterschied
> zwischen git und SVN nicht begriffen.
> Bei SVN kannst du dich z.B. nicht zwischen mehreren Branches verirren,
> wenn man überhaupt erst einmal weiß was ein Branch (in git) ist.
> Und selbst wenn man dann weiß wie das alles in git funktioniert, dann
> gibt es immer noch genug Strategien zur Auswahl mit Branches zu
> arbeiten.
> SVN ist allein in dieser Hinsicht deutlich intuitiver und schneller zu
> verstehen.
> Peter Pan schrieb:
>
>> Es ist schlichtweg deutlich umständlicher und heutigen Anforderungen
>> nicht mehr gewachsen.
>
> Nicht alle Anforderungen, die es heute in dem ein oder anderen Projekt
> gibt, werden auch vom TS gestellt.
> Im Gegenzug darfst du jetzt aber mal erklären, warum SVN umständlicher
> sein soll.
> Peter Pan schrieb:
>
>> https://www.atlassian.com/git/tutorials/setting-up-a-repository
>> Oder ist ein
>> git init
>> git add dummedatei.txt
>> git commit -m "initiLer commit'
>> Wirklich so schwer und kompliziert?
>
> Einen Fahrschüler wirst du hoffentlich auch nicht in seiner ersten
> Fahrstunde sofort ohne Aufsicht auf die Autobahn lassen, nur weil er auf
> Anhieb den Motor starten kann.
> Git kann ja auch deutlich mehr als nur eine Datei hinzuzufügen, oder?
> Ach ja...was machst du mit deiner Änderung jetzt eigentlich? Pushen,
> oder Committen? Bei SVN ist das ja einfach, aber selbst in
> proffessionellen Programmierteams soll es vorkommen, daß jemand den
> Unterschied vergißt. Und das eine bleiben läßt.
> Und wenn der TS dann doch einen zentralen Server haben will...wird git
> alles andere als intuitiv.

Alles was man für einfaches Arbeiten mit git benötigt kann man sich in 
wenigen Minuten anlesen.

SVN benutzt niemand mehr produktiv weil es einfach eine Katastrophe in 
der Bedienung ist.

Es gibt sture alte Hasen die daran festhalten, aber in der Realität ist 
es umständlich und Müll.

Allein schon dein Argument mit dem Speicherplatz ist lächerlich. Hast du 
eine 256MB Festplatte oder was? Willst du etwa binary einchecken? Git 
speichert die Änderungen in Form von Patches. Effizienter wird es bei 
Quelltext kaum.

Was soll eine Working Copy sein? DAS musst du einem Einsteiger erst 
einmal erklären. SVN hat viele Eigenheiten die du als toll anpreist die 
eigentlich scheisse sind. SVN ist etwas für Eigenbrötler, für Leute die 
in einem Team arbeiten ist das nix, genauso wenig für Einsteiger. Er 
will eine lokale Versionsverwaltung. Jetzt kommst du mit einem System 
mit Working Copy und bla an. Und was soll so schlimm an Branches sein? 
Ich glaube DU hast git nicht verstanden.

von Peter Pan (Gast)


Lesenswert?

Wühlhase schrieb:
> Ach ja...was machst du mit deiner Änderung jetzt eigentlich? Pushen,
> oder Committen? Bei SVN ist das ja einfach, aber selbst in
> proffessionellen Programmierteams soll es vorkommen, daß jemand den
> Unterschied vergißt. Und das eine bleiben läßt.

Wenn du zu doof bist um 5 Minuten Doku zu lesen und dennoch zu stolz 
bist dir die zwei Befehle auf einen Zettel am Monitor zu schreiben 
hättest du von mir schon längst die Kündigung erhalten. Oder kannst du 
etwa kein Englisch? Die Befehle sind quasi selbsterklärend.

Das ist ja so ziemlich das dümmste Argument welches ich je gelesen habe.

Dein Problem ist das, dass du noch immer wie in SVN arbeiten möchtest, 
aber dieser Ansatz ist vollkommener Blödsinn. Wer git ohne Pull Requests 
und Branches und ohne CI nutzt weiß gar nicht, wie entspannt das ist als 
Entwickler.

Es liest sich so, als ob git commit für dich nur ein Strg+s nach dem 
Tagwerk ist und man direkt pushen muss. Könnte es vielleicht einen Grund 
haben, wieso das zwei Befehle sind? So arbeitet man halt nicht. Man baut 
seine Änderungen so auf, dass Commits möglichst minimale Änderungen 
darstellen welche einfach nachvollziehbar sind und stets baubar sind. 
Dabei wechselt man zuvor auf einen Feature Branch und pusht zwar auch 
nach jedem Commit, aber das nur damit man vom CI Feedback hinsichtlich 
Tests usw. bekommt. Zwingend erforderlich ist es eigentlich nicht. Am 
Ende stellt man dann einen PR welcher entsprechend von anderen 
Entwicklern ggf. genehmigt wird, nebenbei werden diese dadurch über die 
Änderungen informiert. Das ist bestimmt wieder etwas woran du dich als 
alter SVN Hase störst. Wie können die es wagen den heiligen Code von Mr. 
Perfect welcher sich nicht einmal zwei Wörter merken kann rewieven zu 
wollen?

von Yalu X. (yalu) (Moderator)


Lesenswert?

Neben Git (git) und Subversion (svn) wäre noch Mercurial (hg) eine
Alternative. Die Basisfunktionen sind in allen drei Programmen sehr
ähnlich, teilweise ist sogar die Syntax der Kommandos gleich.

Beispiele:
1
  [git|svn|hg] add <Dateiliste>
2
  [git|svn|hg] commit -m 'Beschreibung der Änderungen'

Deswegen ist für den Anfang ziemlich egal, welches der drei Programme
man wählt. Wenn man aber irgendwann fortgeschrittenere Features nutzen
möchte, ist man mit git und hg besser bedient, weil sie mehr zu bieten
haben als svn. Für git spricht zudem die sehr große (aktive) Community.

Evtl. wäre noch Darcs eine Option. Die zugrunde liegende Philosophie ist
eine andere als in git, hg und svn und in den wesentlichen Punkten ganz
gut im deutschen Wikipedia-Artikel beschrieben. Umsteiger von git & Co
müssen sich daran aber erst ein wenig gewöhnen.

Darcs ist sehr benutzerfreundlich, was auch den Einstieg erleichtert. So
werden bspw. bei fehlerhafter Bedienung nicht nur sehr ausführliche
Fehlermeldungen ausgegeben, sondern auch Erläuterungen geliefert, wie es
möglicherweise zu dem Fehler kommen konnte und was getan werden muss, um
ihn zu vermeiden. Sind für eine bestimmte Operation die Angaben des
Benutzers unvollständig, werden diese interaktiv nachgefragt.

Leider ist die Community von Darcs nicht sehr groß, so dass man in
Problemfällen weniger Support im Netz findet als bspw. bei Git.

: Bearbeitet durch Moderator
von Thilo R. (harfner)


Lesenswert?

Für jemanden, der bisher keine Versionsverwaltung benutzt hat (warum 
sonst sollte er die Frage stellen) ist SVN konzeptionell einfacher. Mit 
TortoiseSVN gibt es eine funktionelle Oberfläche, die anfängertauglich 
ist. Sobald es um Arbeit im Team geht, ist natürlich git das Mittel der 
Wahl.
Oder umgekehrt: Falls mal jemand anderes die Pythonskripte braucht, wird 
er git als den Standardweg empfinden, SVN möglicherweise als altbacken, 
alles andere als exotisch.

von Peter Pan (Gast)


Lesenswert?

Thilo R. schrieb:
> Für jemanden, der bisher keine Versionsverwaltung benutzt hat (warum
> sonst sollte er die Frage stellen) ist SVN konzeptionell einfacher.

https://sdq.kastel.kit.edu/wiki/Versionsverwaltung_mit_Subversion_(SVN)

DAS soll einfacher sein?

von Harald S. (harri)


Lesenswert?

Moin,

um mal einzelen Scripte zu versionieren fand ich die automatische 
Keyword Expansion von CVS immer sehr hilfreich. Egal wo man sein Script 
hin kopiert hat, man kann nachvollziehen welche Version es ist.

Gibt es so etwas eigentlich bei irgendeinem der aktuellen Systeme?
Git hat es ja meines Wissens nach nicht, dafür kann ich ein lokales Repo 
einfacher anlegen als mit CVS, was einen server-Part erfordert.

Git macht bei verteilter Entwicklung von vielen voneinander anhängigen 
Quellcode-Dateien wie z.B. einem Linux Kernel Sinn. Für jemanden, der 
selbst ein paar Scripte versioniert ist das eher nix.

Gruß, Harri

von J. S. (jojos)


Lesenswert?

Harald S. schrieb:
> Moin,
>
> Git macht bei verteilter Entwicklung von vielen voneinander anhängigen
> Quellcode-Dateien wie z.B. einem Linux Kernel Sinn. Für jemanden, der
> selbst ein paar Scripte versioniert ist das eher nix.

Selbst ein paar eigene Rezepte kann man mit git einfach versionieren. 
Die einfache Diff Funktion in VSC möchte ich nicht mehr missen. Server 
kann man benutzen, muss man aber nicht. Für Code macht es aber schon 
Sinn den auf einem zentralen Server abzulegen. Mit Gitea gibt es dafür 
ja auch eine einfache Variante.

Man sollte git sogar vor dem Programmieren lernen um garnicht erst ins 
Chaos mit zippen und unkontrolliertem rumbrobieren zu kommen.

: Bearbeitet durch User
von vnnn (Gast)


Lesenswert?

A. S. schrieb:
> Du installierst
> Tortoise/SVN auf Deinem Rechner, nimmst einen leeren Ordner und
> eröffnest dort mit der rechten Maustaste ein neues Repository. Ohne
> Webgedöns, Server oder was weiß ich. Innerhalb von Minuten kannst Du
> lokal loslegen, notfalls ohne Internet auf einem Uraltrechner.

Ist bei git auch nicht komplizierter. Im Gegenteil, mit z.B. Sourcetree 
gibts auch Tools die im gegensatz zu TortoiseSVN/TortoiseGit auch 
zeitgemäß sind.

Frank K. schrieb:
> Das ist ja nur der Anfang.
>
> Szenario: Ich habe einen Haufen versionierter Dateien mit lokalen
> Änderungen, die ich auf einem Repository auf einem Server einchecken
> will.
>
> svn: svn ci -m "text"
>
> git: git add -all && git commit -m "text" && git push

Dann nimm halt einen grafischen Client, wir leben ja nicht in den 90ern.

Frank K. schrieb:
> Bei SVN habe ich kein lokales Repository (außer ich lege mir eines an),
> sondern nur meine Working Copy. Bei git comitte ich immer erstmal ins
> lokale Repo (das dann mindestens so viel Platz wie meine Working Copy
> braucht) und muss das dann nochmal extra pushen.

Klassischer Fall von "Anforderungen nicht gelesen": er will rein offline 
arbeiten, er braucht (noch) kein remote Repo.

Wühlhase schrieb:
> Bei SVN kannst du dich z.B. nicht zwischen mehreren Branches verirren,
> wenn man überhaupt erst einmal weiß was ein Branch (in git) ist.
> Und selbst wenn man dann weiß wie das alles in git funktioniert, dann
> gibt es immer noch genug Strategien zur Auswahl mit Branches zu
> arbeiten.
>
> SVN ist allein in dieser Hinsicht deutlich intuitiver und schneller zu
> verstehen.

Du bist aber ein lustiges Kerlchen, ich kann sowohl bei SVN als auch bei 
git entweder mit oder ohne Branches arbeiten. Was faselst du da also 
daher?

A. S. schrieb:
> Der Vorteil bei Tortoise (SVN auf einem Windows PC): Du installierst
> Tortoise/SVN auf Deinem Rechner, nimmst einen leeren Ordner und
> eröffnest dort mit der rechten Maustaste ein neues Repository. Ohne
> Webgedöns, Server oder was weiß ich. Innerhalb von Minuten kannst Du
> lokal loslegen, notfalls ohne Internet auf einem Uraltrechner.

Gratuliere, genau so wie bei git. :) Nur dass es halt zeitgemäße Tools 
gibt dafür, die nicht aus den 90ern stammen.

Wühlhase schrieb:
> Nicht alle Anforderungen, die es heute in dem ein oder anderen Projekt
> gibt, werden auch vom TS gestellt.

Natürlich nicht, SVN hat halt einfach keinerlei Vorteile, alles was SVN 
kann kann git auch, und das was git mehr kann musst du nicht nutzen 
solang du nicht willst.

Wühlhase schrieb:
> Im Gegenzug darfst du jetzt aber mal erklären, warum SVN umständlicher
> sein soll.

Keine zeitgemäße grafische Oberfläche, schlechtere Integration in alle 
möglichen Tools, weils halt keiner mehr verwendet

P. S. schrieb:
> Für SVN spricht aber das sehr gute Windows-Frontend "TortoiseSVN". Das
> ist womöglich etwas besser für Anfänger geeignet als git. Es gibt zwar
> auch "TortoiseGit", aber das habe ich als Schrott empfunden. Bei git
> gilt: Entweder richtig (saubere IDE-Integration oder Kommandozeile) oder
> gar nicht. TortoiseGit habe ich einzig und allein wegen des Diff-Tools
> installiert.

TortoiseGIT ist Krebs, es versucht halt eine SVN-Gui aus den frühen 
2000ern mit git zu kombinieren, was in katastrophaler Bedienbarkeit 
endet.
Nimm halt Sourcetree, GitKraken, VSCode oder deinen Lieblingseditor mit 
git-Integration, man hat ja bei git eh die Wahl zwischen drölfzig 
grafischen Frontends.

Wühlhase schrieb:
> Ach ja...was machst du mit deiner Änderung jetzt eigentlich? Pushen,
> oder Committen? Bei SVN ist das ja einfach, aber selbst in
> proffessionellen Programmierteams soll es vorkommen, daß jemand den
> Unterschied vergißt. Und das eine bleiben läßt.

Wenn dich sowas schon überfordert solltest du deine Karriereentscheidung 
überdenken.

Thilo R. schrieb:
> ist SVN konzeptionell einfacher

Inwiefern?

Thilo R. schrieb:
> Mit
> TortoiseSVN gibt es eine funktionelle Oberfläche, die anfängertauglich
> ist

Für git gibts ca. drölfzig Oberflächen zur freien Wahl, also kein 
Argument. Für Anfänger unter Windows bietet sich GitHub Desktop 
(funktioniert auch ohne GitHub), GitKraken, Sourcetree oder die 
Integration in fast jeden Codeeditor an.

Harald S. schrieb:
> Für jemanden, der
> selbst ein paar Scripte versioniert ist das eher nix.

Weil?

von Wühlhase (Gast)


Lesenswert?

Peter Pan schrieb:
> Wühlhase schrieb:
>[..]
> Alles was man für einfaches Arbeiten mit git benötigt kann man sich in
> wenigen Minuten anlesen.

Wie gesagt, es ist unwahrscheinlich daß du git benutzt, du würdest 
diesen Unsinn sonst nicht absondern. Oder schlimmer: Du gehörst du 
denen, die nicht wissen was sie tun, deine Unflätigkeiten sprechen 
dafür. Und so oder so sollte man sein Werkzeug halbwegs kennen, und bei 
git mußt du erstmal wissen was du nutzen solltest und was nicht.

Ich kann dir jedenfalls sagen, daß Rene Preißel und Bjorn Stachmann ihr 
git-Buch (das ich übrigens sehr empfehlen kann) nicht mit 
Belanglosigkeiten gefüllt haben und sie nach eigener Aussage trotzdem 
nicht auf alles eingehen konnten. Höre auf diesen Unsinn zu verbreiten, 
daß man in ein paar Minuten zum git-Profi wird.


Peter Pan schrieb:
> SVN benutzt niemand mehr produktiv weil es einfach eine Katastrophe in
> der Bedienung ist.

...was schlicht nicht stimmt. Ich kenne zwar nur TortoiseSVN, das aber 
funktioniert sehr gut und einfach. Kann jeder selber ausprobieren.


Peter Pan schrieb:
> Es gibt sture alte Hasen die daran festhalten, aber in der Realität ist
> es umständlich und Müll.

Behauptest du nun zum zweiten mal, ohne mit einem einzigen Argument zu 
kommen. Davon wird es nicht wahrer.


Peter Pan schrieb:
> Allein schon dein Argument mit dem Speicherplatz ist lächerlich. Hast du
> eine 256MB Festplatte oder was? Willst du etwa binary einchecken? Git
> speichert die Änderungen in Form von Patches. Effizienter wird es bei
> Quelltext kaum.

Und nun wirds komplett lächerlich, hier hat niemand den Speicherbedarf 
als Argument angeführt, außer du. Solche Rhetoriktricks funktionieren 
vielleicht in mündlichen Diskussionen, aber nicht in schriftlichen.


Peter Pan schrieb:
> [..] hättest du von mir schon längst die Kündigung erhalten [..]

Haha, als ob du Brausepaul jemals in der Position wärst über meine 
Einstellung oder gar Kündigung auch nur mitzreden.

von Peter Pan (Gast)


Lesenswert?

Wühlhase schrieb:
> Ich kann dir jedenfalls sagen, daß Rene Preißel und Bjorn Stachmann ihr
> git-Buch (das ich übrigens sehr empfehlen kann) nicht mit
> Belanglosigkeiten gefüllt haben und sie nach eigener Aussage trotzdem
> nicht auf alles eingehen konnten. Höre auf diesen Unsinn zu verbreiten,
> daß man in ein paar Minuten zum git-Profi wird.

Dass man in ein paar Minuten zum Profi wird habe ich nie behauptet, das 
kam von dir, da sind wir wieder bei den rhetorischen Tricks, was?

Es ging um die grundlegenden Befehle um damit solo zu arbeiten und das 
ist schlichtweg nicht komplex mit git.

Hast du denn die von mir verlinkte Anleitung bei Atlassin gelesen?

Es erwartet keiner von einem Einsteiger dass er direkt Cherry Picking 
und mehr nutzt, aber für die lokale Versionierung braucht er das eh 
(zumindest anfangs) nicht.

Allein schon deine "ich habe ein git Buch gelesen" Haltung zeigt, dass 
du mehr Angsthase statt Wühlhase bist. Was hindert dich daran, diese 
paar Befehle aus den Tutorial einmal durchzuspielen? Details kann man 
sich danach noch immer aneignen, insbesondere wenn man mehr 
Funktionalität benötigt. Aber lieber erst 2000 Stunden Literatur 
studieren und ängstlich sein anstatt einfach einmal ein Tutorial 
durchzuspielen um mit dem Tool vertraut zu werden. Du kannst 20 Bücher 
über Schwimmen lesen. Du wirst danach dennoch nicht schwimmen können, 
die Übung macht es. Irgendwann muss man einfach ins kalte Wasser 
springen. Genauso verhält es sich mit Tools. Erst du die Benutzung 
erlernt man deren Verwendung. Ich mein, was könnte im schlimmsten Fall 
schon schiefgehen? Ach richtig, du könntest dein Testrepo mit Pseudo 
Daten verlieren. Wow.

Zudem sind Bücher heutzutage so schnell überholt dass diese im Moment 
des Druckes bereits überholt sind. Wie sicher können wir sein, dass in 
all deinen Büchern master als Default Branch drinnen steht und nicht der 
inzwischen per Default gesetzte main?

von Herbert (Gast)


Lesenswert?

Ich benutze gerne Fossil. Eine schlanke EXE-Datei, Wiki und Tickets 
inklusive.

https://fossil-scm.org/

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Yalu X. schrieb:
> Neben Git (git) und Subversion (svn) wäre noch Mercurial (hg) eine
> Alternative. Die Basisfunktionen sind in allen drei Programmen sehr
> ähnlich, teilweise ist sogar die Syntax der Kommandos gleich.
>
> Beispiele:
>
>
1
>   [git|svn|hg] add <Dateiliste>
2
>   [git|svn|hg] commit -m 'Beschreibung der Änderungen'
3
>

Vorsicht! "svn add" und "git add" sind falsche Freunde, ähnlich wie 
"bekommen" und "become". Wenn man häufiger mit beiden VCS auf der 
Kommandozeile arbeitet, passieren einem hin und wieder entsprechende 
Fehler. "svn add" wird ja nur einmalig verwendet, um SVN eine Datei oder 
ein Verzeichnis beizubringen, wohingegen "git add" vor jedem Commit und 
nicht nur einmalig ansteht.

Der git-Ansatz (add->commit->push) ist zwar natürlich leistungsfähiger, 
erfordert aber auch mehr Einzelschritte.

von vnnn (Gast)


Lesenswert?

Wühlhase schrieb:
> Wie gesagt, es ist unwahrscheinlich daß du git benutzt, du würdest
> diesen Unsinn sonst nicht absondern

Lustiges Kerlchen.

Wühlhase schrieb:
> Ich kann dir jedenfalls sagen, daß Rene Preißel und Bjorn Stachmann ihr
> git-Buch (das ich übrigens sehr empfehlen kann) nicht mit
> Belanglosigkeiten gefüllt haben und sie nach eigener Aussage trotzdem
> nicht auf alles eingehen konnten.

Für Anfänger komplett irrelevant. Um ein Auto fahren zu können muss ich 
auch nicht verstehen wie ein Verbrennungsmotor funktioniert.

Wühlhase schrieb:
> Höre auf diesen Unsinn zu verbreiten,
> daß man in ein paar Minuten zum git-Profi wird.

Hat keiner getan, hör auf Märchen zu verbreiten.

Wühlhase schrieb:
> Ich kenne zwar nur TortoiseSVN

Warum schreibst du dann über Dinge die du nicht kennst?

Wühlhase schrieb:
> Behauptest du nun zum zweiten mal, ohne mit einem einzigen Argument zu
> kommen. Davon wird es nicht wahrer.

Allein die mangelnde Integration in andere Tools macht die Nutzung 
hinfällig.

Wühlhase schrieb:
> Haha, als ob du Brausepaul jemals in der Position wärst über meine
> Einstellung oder gar Kündigung auch nur mitzreden.

Stimmt, Leute die mit der Bedienung eines grafischen Git-Client 
überfordert sind weil sie in der Tortoise*-Welt der frühen 2000er hängen 
geblieben sind werden in der Praxis leider sehr oft wegbefördert, damit 
die anderen Entwickler in Ruhe arbeiten können und nicht von Geschichten 
aus dem Weltkrieg gelangweilt werden.
Egal, das Boomer-Problem erledigt sich eh biologisch. :)

von vnnn (Gast)


Lesenswert?

Andreas S. schrieb:
> Der git-Ansatz (add->commit->push) ist zwar natürlich leistungsfähiger,
> erfordert aber auch mehr Einzelschritte.

Lösung: im git-Client "push on commit" anhaken wenn man das wirklich 
will.
Für den TS aber eher irrelevant, er will eine Offline-Versionierung.

von tut nix zur Sache (Gast)


Lesenswert?

Or, endlich mal nen Git vs. SVN-Flamewar!

Also SVN mit ner fast 3-stelligen Anzahl an Externals muss nicht so geil 
sein, wie die SVN-Befürworter das gerne meinen würden... auch wenn der 
SVN-Server mal die Haxen hochreißt, biste potenziell dezentral verwaltet 
besser aufgestellt.

Allerdings braucht git auch die ein oder andere Extrawurst z.B. beim 
Umgang mit Binaries. Also bei der Frage: wohin mit kompiliertem Zeug 
oder Bildern/Dokumenten - gehört grundsätzlich zwar auch nicht ins SVN, 
wird wohl aber auch manchmal gemacht.

Oder obs nun Subtrees oder Submodule sein sollen (oder gar nix, alles in 
einem)...

Ohne Lernkurve gehts bei beidem nicht - ein Branch im SVN passiert halt 
auf dem Server, beim Git lokal. Beim Git haste da ein Repo, bei SVN 
musste switchen oder nen zweiten Checkout machen. Also rum wie num, 
tendenziell bin ich eher für Git, weils bessere Perspektiven für die 
Arbeit damit bietet.

von Yalu X. (yalu) (Moderator)


Lesenswert?

Thilo R. schrieb:
> Für jemanden, der bisher keine Versionsverwaltung benutzt hat (warum
> sonst sollte er die Frage stellen) ist SVN konzeptionell einfacher.

Das kann ich nicht so richtig nachvollziehen.

An welcher Stelle ist für einen Anfänger, der ja nur einen kleinen
Bruchteil der Features von Git oder SVN benötigt, SVN einfacher als Git?

Pater hat oben die ersten Schritte für das Anlegen und Befüllen eines
Repositorys in Git gezeigt:

Peter Pan schrieb:
> git init
> git add dummedatei.txt
> git commit -m "initiLer commit'

Geht das mit SVN einfacher?

Um zu sehen, was man gemacht hat, braucht man noch die Unterkommandos
log, status und diff. Wichtig sind noch mv und rm für das Umbenennen und
Löschen von Dateien sowie checkout für die Wiederherstellung alter
Versionen. Damit kommt man am Anfang schon ziemlich weit.

Welche Vereinfachungen bietet SVN hierfür an?

Alles weitere wie bspw. branch, merge usw. braucht man nicht sofort zu
Beginn, weswegen man sich das dafür benötigte Wissen nach und nach in
aller Ruhe aneignen kann.

Da der TE offensichtlich alleine und nicht in einer Gruppe arbeitet, ist
erst einmal kein Verständnis von lokalen und Remote-Repositories
vonnöten, womit auch Unterkommandos wie push, pull und fetch unwichtig
sind.


Andreas S. schrieb:
> Vorsicht! "svn add" und "git add" sind falsche Freunde, ähnlich wie
> "bekommen" und "become". Wenn man häufiger mit beiden VCS auf der
> Kommandozeile arbeitet, passieren einem hin und wieder entsprechende
> Fehler. "svn add" wird ja nur einmalig verwendet, um SVN eine Datei oder
> ein Verzeichnis beizubringen, wohingegen "git add" vor jedem Commit und
> nicht nur einmalig ansteht.

Ja, stimmt, das ist nicht exakt dasselbe. Sehr ähnlich wird das Vorgehen
aber, wenn man git commit mit mit einer Liste der zu committenden
Dateien (wie auch in SVN möglich) bzw. der Option -a (entspricht in etwa
svn commit ohne Dateiliste) benutzt. Dann ist ein explizites add wie in
SVN nur einmal beim Neuanlegen von Dateien erforderlich.

Das mehrschrittige Vorgehen in Git hat zwar Vorteile, erzwungen wird es
aber nicht.

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

vnnn schrieb:
> Natürlich nicht, SVN hat halt einfach keinerlei Vorteile, alles was SVN
> kann kann git auch, und das was git mehr kann musst du nicht nutzen
> solang du nicht willst.

Das ist so nicht ganz korrekt.

1. Prinzipbedingt stellt ein verteiltes VCS wie git keine Lamport-Uhr 
dar. Da bei Git auch nicht bekannt ist, welche Akteure in welchen 
geclonten Repositories einchecken, kann prinzipbedingt auch keine 
Vektoruhr konstruiert werden. Commits werden zwar eindeutig über ihre 
Hashwerte erfasst, aber die Hashwerte lassen sich nur auf Gleichheit 
prüfen, aber nicht im Sinne einer Kausalkette sortieren. Wenn man SVN 
mit einem einzigen großen Repository betreibt, was auch aus anderen 
Gründen sinnvoll ist, stellt dies eine exzellente Lamport-Uhr dar. Durch 
die erzeugte Revisionsnummer können zwei Checkings hinsichtlich ihrer 
zeitlichen Reihenfolge eindeutig angeordnet werden. Somit kann man auch 
"kleine" Zwischenstände an Dritte geben, ohne diese zuvor mit einem Tag 
o.ä. versehen zu müssen. Ein Außenstehender kann auch ohne Zugriff auf 
das/ein Repository erkennen, welches der ältere oder neuere Versionstand 
ist.

Git sieht hingegen keinen entsprechenden Automatismus vor, sondern die 
(ggf. mehrdeutige) Vergabe entsprechender Tags oder sonstiger 
Versionskennzeichnungen muss durch den Eincheckenden erfolgen. Natürlich 
hat dies für "richtige" Lieferungen auch Vorteile, führt aber eben auch 
zu einer "Tag-Flut".

2. Prinzipbedingt ermöglicht Git keine fein granulare 
*Lese*-Rechtevergabe (pull, fetch, fork, ...) für den Zugriff auf ein 
Repository. Insbesondere lässt sich nicht nachträglich für einen neuen 
Akteur der Zugriff auf nur einen Teilbereich eines Repositories 
einrichten, sondern nur auf das ganze Repository. Wenn also später 
jemand mit eingeschränkten Zugriffsrechten hinzukommen soll, muss also 
das Repository in separate zerlegt werden. Bei Subversion sind die 
nutzerspezifischen Zugriffsrechte jedoch serverseitig auch für nur 
bestimmte Teilbäume eines Repositories konfigurierbar und beeinflussen 
vor allem nicht die schon bestehenden Nutzer und Rechte. Bei Git muss 
man folglich schon bei der initialen Planung der Verzeichnis- und daraus 
folgend Repositorystruktur berücksichtigen, welche zusätzlichen Akteure 
ggf. Jahre später in einem deutlich gewachsenen Projekt hinzukommen 
können. Dies ist jedoch ziemlich unmöglich.

Mittlerweile unterstützt Git immerhin die Einschränkung von 
Schreiboperationen auf bestimmte Branches. Damit sind aber 
Versionsbranches und nicht Verzeichnisbäume innerhalb bestehender 
Repositories gemeint.

Das ganze hat nicht nur technische, sondern vor allem auch vertragliche 
Aspekte, gerade dann, wenn z.B. bestimmte Arbeiten durch externe 
Mitarbeiter erledigt werden sollen.

> Keine zeitgemäße grafische Oberfläche, schlechtere Integration in alle
> möglichen Tools, weils halt keiner mehr verwendet

Der Trend geht hier zwar ganz klar in Richtung Git, aber es gibt auch 
heute noch etliche aktuelle Entwicklungsumgebungen, die eben (noch) auf 
anderen VCS basieren. Ein Beispiel hierfür ist Wago e!Cockpit, welches 
die einzige für aktuelle Wago SPS geeignete Entwicklungsumgebung ist. 
Für das darunter befindliche Codesys gibt es zwar schon seit längerem 
eine Git-Integration, aber Wago hat sie nicht übernommen. Dummerweise 
werden die Projektquelltexte nicht in ggf. extern versionierbaren 
Quelltextdateien gespeichert, sondern die gesamte Arbeitskopie befindet 
sich in einem proprietären "Dateiklumpen", ähh in einer "Datenbank". 
Interessanterweise sieht die SVN-Repositorystruktur gänzlich anders aus; 
dort findet man das ganze Projekt dann schon fein säuberlich 
aufgedröselt in einzelne Quelltexte und Konfigurationsdateien.

Ich gehe davon aus, dass Wago den Git-Konnektor zwar auch irgendwann 
übernehmen und einbauen wird, aber Stand heute ist das nicht der Fall.

Meine ganzen Ausführungen sollen Git nicht generell schlechtreden, denn 
es besitzt natürlich auch unzählige Vorteile gegenüber SVN. Es ging 
ausschließlich um die nachweislich falsche Behauptung, Git erfülle 
sämtliche Leistungsmerkmale von SVN. In meinem Unternehmen nutzen wir 
beides, d.h. historisch bedingt überwiegend SVN (auch weil Altium 
Designer <=17 ausschlieslich CVS und SVN, aber kein Git unterstützt), 
aber auch Git in Verbindung mit einem Gitea-Server.

von A. B. (funky)


Lesenswert?

Also wenn die Linux mit git entwickeln und da x-Leute verteilt dran 
arbeiten und es offensichtlich funktioniert...ist das dann nicht alles 
etwas akademischer Natur diese Art von "Einschränkungen"?

von Peter Pan (Gast)


Lesenswert?

Andreas S. schrieb:
> Prinzipbedingt ermöglicht Git keine fein granulare Lese-Rechtevergabe
> (pull, fetch, fork, ...) für den Zugriff auf ein Repository.
> Insbesondere lässt sich nicht nachträglich für einen neuen Akteur der
> Zugriff auf nur einen Teilbereich eines Repositories einrichten, sondern
> nur auf das ganze Repository.

Fork kannst ja effektiv nicht verhindern.

Im gewerblichen Umfeld ist es eigentlich nur wichtig nicht einfach auf 
master/develop/stable/release pushen zu können und das kann man 
eigentlich bei den meisten Servern erzwingen. Bitbucket usw. kann das.

Teilbereiche finde ich nicht sonderlich relevant hinsichtlich 
Einschränkung, entweder gehört es eh in ein Submodul oder deine 
Anwendung hat mit hoher Wahrscheinlichkeit Probleme hinsichtlich der 
Architektur.

Ich habe so gigantische SVN/git Repos gesehen und da muss ich sagen da 
sind Grundlagen des Dependency Management und Wartbarkeit nicht 
verstanden worden. In einem habe ich 9 (!) Mal unterschiedliche 
Versionen einer einzigen Bibliothek finden dürfen. Alles eingecheckte 
Kopien an unterschiedlichen Stellen. Alle Versionen veraltet und inkl. 
Sicherheitslücken. Da waren übrigens SVN Hasen am Werk welche das 
Problem nicht einmal verstanden haben nachdem man es ihnen erklärt hat, 
das wurde mehr so zur Kenntnis genommen von wegen man habe das schon 
immer so gemacht und es funktioniere ja.

von 🐧 DPA 🐧 (Gast)


Lesenswert?

Ich sehe nicht, welchen Vorteil der Lamport-Uhr oder Vektoruhr Blödsinn 
bringen sollte. Wenn ich in git einen Commit mache, ist da drin eine 
Referenz die genau angibt auf welchen commits das basiert. Und ein 
Zeitstempel kommt auch rein, das Wann weiss ich also auch. Ich habe also 
eine exakte und einwandfreie Historie aller Änderungen und wie die 
zusammenhängen, die ich auch beliebig durchsuchen kann. Bei Konflikten 
weiss ich auch, welches der letzte gemeinsame Stand / Commit war. 
Welchen praktischen Vorteil würde mir der Lamport-Uhr oder der Vektoruhr 
Blödsinn bringen? Ich sehe keinen.

von 🐧 DPA 🐧 (Gast)


Lesenswert?

Peter Pan schrieb:
> Im gewerblichen Umfeld ist es eigentlich nur wichtig nicht einfach auf
> master/develop/stable/release pushen zu können und das kann man
> eigentlich bei den meisten Servern erzwingen. Bitbucket usw. kann das.

Eigentlich auf allen. Selbst ohne Server / Webfrontend. Es gibt dort ja 
immer ein bare Repo, und dort kann man Hooks hinterlegen. Da kann man 
dann alles mögliche kontrollieren & erzwingen.

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Peter Pan schrieb:
> Im gewerblichen Umfeld ist es eigentlich nur wichtig nicht einfach auf
> master/develop/stable/release pushen zu können und das kann man
> eigentlich bei den meisten Servern erzwingen. Bitbucket usw. kann das.

Im gewerblichen Umfeld ist es vor allem wichtig, die Vertragsbeziehungen 
mit Kunden und Lieferanten im Blick zu haben. Wenn mit einem Kunden 
vereinbart wurde, dass ausschließlich die mit einem bestimmten Projekt 
oder Teilprojekt betrauten Mitarbeiter Zugriff auf die Daten haben 
dürfen, hat das unmittelbare Auswirkungen auf Repositories, 
Netzwerklaufwerke, usw.. Und wenn ein externer Mitarbeiter eine 
bestimmte Teilaufgabe erledigen soll, gilt das um so mehr.

> Teilbereiche finde ich nicht sonderlich relevant hinsichtlich
> Einschränkung, entweder gehört es eh in ein Submodul oder deine
> Anwendung hat mit hoher Wahrscheinlichkeit Probleme hinsichtlich der
> Architektur.

Selbst wenn man im Laufe der Zeit feststellt, dass eine Neuordnung der 
Module, Repositories o.ä. sinnvoll ist und man diese auch durchführt, 
muss man auch die Zugriffsrechte auf historische Daten berücksichtigen.

> Ich habe so gigantische SVN/git Repos gesehen und da muss ich sagen da
> sind Grundlagen des Dependency Management und Wartbarkeit nicht
> verstanden worden. In einem habe ich 9 (!) Mal unterschiedliche
> Versionen einer einzigen Bibliothek finden dürfen. Alles eingecheckte
> Kopien an unterschiedlichen Stellen. Alle Versionen veraltet und inkl.
> Sicherheitslücken. Da waren übrigens SVN Hasen am Werk welche das
> Problem nicht einmal verstanden haben nachdem man es ihnen erklärt hat,
> das wurde mehr so zur Kenntnis genommen von wegen man habe das schon
> immer so gemacht und es funktioniere ja.

Aha, das ist also die Schuld von SVN. Interessant. Mit Git wäre so etwas 
natürlich niemals passiert.

Ich nutze z.B. für Bibliotheken (insbesondere Bauteilebibliotheken für 
Altium Designer), die in verschiedenen Projekten immer im jeweils 
aktuellen Stand verwendet werden sollen, svn:externals. Im jeweiligen 
Entwicklungszweig zeigen sie auf die HEAD-Revision, in eingefrorenen 
Ständen, d.h. im tags-Baum, wird natürlich die Revision explizit 
gesetzt.

Oder liegt es vielleicht doch an Deiner eingeschränkten Sichtweise? Die 
"reine Lehre" besagt zwar, dass generierte Artefakte (z.B. Kompilate) 
nicht im VCS eingecheckt werden sollen. Dennoch erweist sich dies häufig 
als sinnvoller Weg, da man hierdurch sicherstellt, dass die Artefakte 
nicht verloren gehen bzw. der Zusammenhang mit den zugehörigen Quellen 
sofort sichtbar ist. Natürlich muss sichergestellt werden, dass diese 
Artefakte entfernt werden, wenn man einen neuen Build durchführt.

Es kann je nach Situation auch richtig sein, dass veraltete und ggf. 
fehlerhafte Stände weiterhin verwendet werden. Da sind die interessanten 
Fragen:

1. Wurde der alte Stand von einem Kunden abgenommen und womöglich für 
einen bestimmten Zweck "zertifiziert"?
2. Gibt es einen Geschäftszweck, der die Pflege des alten Standes 
erfordert?
3. Bezahlt ein Kunde die entsprechende Pflege und Fehlerkorrekturen?

Mit "Kunde" sind nicht nur unternehmensfremde Geschäftspartner gemeint, 
sondern es gibt natürlich auch interne Kunden. Kein interner Auftrag, 
keine Leistung.

von Peter Pan (Gast)


Lesenswert?

Andreas S. schrieb:
> Dennoch erweist sich dies häufig als sinnvoller Weg, da man hierdurch
> sicherstellt, dass die Artefakte nicht verloren gehen bzw. der
> Zusammenhang mit den zugehörigen Quellen sofort sichtbar ist.

Dann ist dein Build nicht reproduzierbar und damit in meinen Augen nicht 
stabil. Würde das auch als nicht debuggbar betrachten da nicht 
deterministisch.

Andreas S. schrieb:
> Aha, das ist also die Schuld von SVN. Interessant. Mit Git wäre so etwas
> natürlich niemals passiert.

Nö, kann mit git natürlich genauso passieren. Nur sind die Verfechter 
dieser unzähligen Kopien ebenfalls SVN Verfechter weil das angeblich 
einfacher sei. Und zertifiziert sind da keine Bibliotheken und nix, es 
hat schlichtweg keinen Grund. Daher ist es ja so absurd. Der Kunde 
bekommt davon nix, die Anwendung läuft auf einem embedded Gerät. Die 
nehmen sogar den Linux Kernel und checken den in SVN ein. Und die 
Buildartefakte genauso.

von 🐧 DPA 🐧 (Gast)


Lesenswert?

Wenn ich eine unabhängig entwickelte Lib von mir in meinem Projekt 
verwende, nehme ich in Git ein Submodul. Aber als Repo geb ich dann "." 
das lokale Repo, an. Ich schieb dass dann da in einen eigenen Branch. 
Zum updaten pull ich den halt nochmal vom upstream remote, und update 
dann das Submodul. Ist leider etwas umständlich, aber geht einwandfrei. 
Der Vorteil das so zu machen, ist, dass man eine Kopie von der Lib mit 
ihrer ganzen Historie hat, auch wenn das upstream Repo mal verschwinden 
sollte.

von Sebastian (Gast)


Lesenswert?

Merten schrieb:
> Gibt es eine einfache zu handhabende Versionsverwaltung für den PC
> (Windows)?
> Ich möchte gerne Pythonskripte offline verwalten.

Den Dateiversionsverlauf in Windows aktivieren. Das Ziellaufwerk kann 
ein NAS sein. Wenn du den dortigen Ordner FileHistory auf deinem PC 
wieder einbindest dann kannst du dort direkt auf die Abfolge aller 
Versionen der Skripte zugreifen und vergleichen.

LG, Sebastian

von Peter Pan (Gast)


Lesenswert?

Sebastian schrieb:
> Den Dateiversionsverlauf in Windows aktivieren.

Ich muss ehrlich zugeben dass das eine schön simple Lösung ist.

Besser als nichts allemal und bietet eine weitere Sicherheit, selbst 
wenn man zusätzlich git verwendet.

Und das nur mit Bordmitteln. Ich würde zwar noch ein automatisches 
Backup mittels z.B. Duplicati hinzufügen, aber so ist das echt nicht 
verkehrt...

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Peter Pan schrieb:
> Dann ist dein Build nicht reproduzierbar und damit in meinen Augen nicht
> stabil.

Wenn man die Artefakte nicht versioniert, kann man nicht überprüfen, ob 
ein neuer Build dasselbe Ergebnis (abgesehen von Zeitstempeln o.ä.) 
liefert. Und wenn man die Artefakte außerhalb des VCS speichert, muss 
man immer einen Bezug zwischen diesen Artefakten und dem Quellcodestand 
herstellen. Versioniert man jedoch die Artefakte und stellt sicher, dass 
es einen Mechanismus gibt, sie vor einem erneuten Build aus den 
Verzeichnissen zu löschen (z.B. mittels "make clean"), sieht man nach 
dem Build sofort anhand des VCS-Status, welche Dateien mit anderem 
Inhalt neu generiert wurden. Natürlich wäre dies auch möglich mit einem 
separaten Diff-Programm, welches auf die generierten Verzeichnisbäume 
losgelassen wird. Die generierten Artefakte zu versionieren, bedeutet 
übrigens nicht zwingend, für jede einzelne Datei ein entsprechendes 
VCS-Objekt anzulegen, sondern selbstverständlich kann man ja auch 
(automatisiert) eine ZIP- oder tar-Datei erstellen lassen.

> Würde das auch als nicht debuggbar betrachten da nicht
> deterministisch.

Gerade die archivierten Artefakte erlauben es doch, einen Debugger auf 
alte Versionsstände loszulassen, ohne vorher einen Build mit einer 
womöglich nicht mehr genau reproduzierbaren Toolchain durchzuführen. 
Viele Toolchains gibt es ja mittlerweile auch gar nicht mehr als fixe 
Installation, sondern sie installieren teilweise auch die jeweils 
tagesaktuellen neuesten Bestandteile nach. Folglich müsste man zu jedem 
Fall auch gleich eine VM o.ä. mit exakt der verwendeten Toolchain 
archivieren.

> Nö, kann mit git natürlich genauso passieren. Nur sind die Verfechter
> dieser unzähligen Kopien ebenfalls SVN Verfechter weil das angeblich
> einfacher sei.

Oha, das ist ja eine Argumentation, die in Sachen Bullshit überhaupt 
nicht mehr zu übertreffen ist.

> Und zertifiziert sind da keine Bibliotheken und nix, es
> hat schlichtweg keinen Grund. Daher ist es ja so absurd.

Wenn es keinen Grund gibt, gibt es vermutlich auch keinen Grund, die 
Bibliotheken zu aktualisieren.

> Der Kunde bekommt davon nix, die Anwendung läuft auf einem
> embedded Gerät.

Offenbar fehlt Dir jegliches Verständnis für betriebliche Abläufe.

> Die nehmen sogar den Linux Kernel und checken den in SVN ein.

Ja, natürlich, denn so befindet er sich an derselben Stelle wie die 
anderen Projektdateien. Wenn es darum geht, die Synchronisation mit 
einem externen Git-Repository nicht zu verlieren, kann es durchaus 
sinnvoll sein, einen mehrstufigen Prozess durchzuführen, d.h. mittels 
lokaler Git-Repositories usw. die Kernel-Quellen zu verwalten und dann 
eine organisationsinterne "Lieferung" in das andere VCS durchzuführen.

Niemand behauptet, dass es sinnvoll wäre, so etwas heutzutage "auf der 
grünen Wiese" neu aufzusetzen. Bei bestehenden Projektumgebungen muss 
man aber ggf. zu solchen Maßnahmen greifen.

Es kann aber auch noch andere, durchaus unfreiwillige Gründe geben. In 
Organisationen mit streng zertifizierten Entwicklungsprozessen dauert es 
häufig Jahre oder Jahrzehnte, bis ein etabliertes Werkzeug ersetzt 
werden kann. Ggf. müssen auch noch Dritte, z.B. Auftraggeber, 
Zulassungsbehörden, Zertifizierungsstellen jeder noch so kleinen 
Änderung zustimmen; so etwas kann locker etliche Millionen Euro kosten. 
Und bis dahin müssen sich die Entwickler eben mit den vorhandenen 
Werkzeugen behelfen.

> Und die Buildartefakte genauso.

Wenn das richtig gehandhabt wird, ist das auch völlig in Ordnung bzw. 
sogar notwendig. Natürlich kann man an dieser Stelle auch viel falsch 
machen.

von vnnn (Gast)


Lesenswert?

Andreas S. schrieb:
> Und wenn man die Artefakte außerhalb des VCS speichert, muss
> man immer einen Bezug zwischen diesen Artefakten und dem Quellcodestand
> herstellen.

Genau das ist Stand der Technik. Stell dir vor, mein CI-Server kann 
sogar zu jedem Quellcodestand mehrere Builddurchläufe ablegen wenn ich 
herausfinden will ob nach einem Rebuild das gleiche raus kommt.

Andreas S. schrieb:
> Versioniert man jedoch die Artefakte

Genau das ist Bullshit.


Wie passt überhaupt ein Buildserver in dein komisches Konzept? Ich will 
ja eine Codeänderung comitten/pushen und der Server liefert mir dann ein 
paar Minuten später das Binary.

Andreas S. schrieb:
> ohne vorher einen Build mit einer
> womöglich nicht mehr genau reproduzierbaren Toolchain durchzuführen.

Genau deshalb macht man sowas auch reproduzierbar. Hat ja einen Grund, 
warum die halbe Welt nur am CI-Server buildet.

Andreas S. schrieb:
> Viele Toolchains gibt es ja mittlerweile auch gar nicht mehr als fixe
> Installation, sondern sie installieren teilweise auch die jeweils
> tagesaktuellen neuesten Bestandteile nach.

Welche wäre das, die das ungefragt macht? Nur damit ich nicht auf die 
Idee komm sowas zu nutzen.
Aber wenn irgndeiner der 5 Entwickler was auf seinem Rechner (mit 
unbekanntem Zustand) lokal baut und dann eincheckt ist das 
reproduzierbar, ja?



Andreas S. schrieb:
> Offenbar fehlt Dir jegliches Verständnis für betriebliche Abläufe.

Lustig, das von jemandem zu lesen der CI-Builds vermutlich nicht kennt.

Andreas S. schrieb:
> Folglich müsste man zu jedem
> Fall auch gleich eine VM o.ä. mit exakt der verwendeten Toolchain
> archivieren.

Genau, und zu deinen lokal gebauten und eingecheckten Artefakten legst 
du dann jedes Mal einen Snapshot deines PCs ab, oder wie?

Andreas S. schrieb:
> Wenn das richtig gehandhabt wird, ist das auch völlig in Ordnung bzw.
> sogar notwendig.

Es ist immer noch vollkommener Bullshit von jemandem der von moderner 
Softwareentwicklung und reproduzierbaren Builds keine Ahnung hat. 
Alleine "reproduzierbar" und "5 Entwickler checken ihre lokal genbauten 
Artefakte ein" ist ja ein absurder Widerspruch in sich.

Und die Zertifizierungsstelle verhindert den Wechsel auf ein modernes 
Versionierungssystem, sieht gleichzeitig aber zu wie du irgendwelche 
schwindligen selbstgestricken Workarounds bastelst. Alles klar. Du hast 
ja sowas von keine Ahnung von Zertifizierungen.

von Wühlhase (Gast)


Lesenswert?

Peter Pan schrieb:
> Allein schon deine "ich habe ein git Buch gelesen" Haltung zeigt, dass
> du mehr Angsthase statt Wühlhase bist. Was hindert dich daran, diese
> paar Befehle aus den Tutorial einmal durchzuspielen?

Wozu sollte ich jetzt diese paar Befehle aus dem Tutorial durchspielen? 
Welchen Erkenntnisgewinn soll mir das Atlassian-Tutorial bringen?

Ich benutze SVN tatsächlich deswegen, weil ich es als erstes 
kennengelernt habe. Nebenbei: Programmieren ist bei nur eine 
Nebenbaustelle, nix Bedeutendes.
Da mir Kollegen aber sagten daß git viel geiler sei, mir aber keiner so 
recht konkret sagen konnte warum, dann lese ich halt ein gutes Buch 
darüber. Und selbstverständlich habe ich es damals auch ausprobiert, git 
hat erst gestern hier auf meinem Laptop ein Update bekommen. Hätte mir 
git Vorteile gebracht, hätte ich zu git gewechselt, das ist aber nicht 
der Fall.

Ich denke, ich kann die Leistungsfähigkeit von git durchaus beurteilen, 
auch wenn ich es momentan nicht aktiv benutze. Daß ich hin und wieder 
mal ein gitrepo klone, würde ich noch nicht als aktive Nutzung ansehen.

Daß git Möglichkeiten bietet, die SVN nicht hat, habe ich im Übrigen 
nirgendwo bestritten. Aber wie gesagt: Wenn man die nicht braucht sollte 
man sich schon überlegen was man verwendet, einen falschen Befehl in der 
Konsole einzuhacken ist selten, aber graphische Oberflächen präsentieren 
einem gleich alle Befehle, da sollte man sich schon etwas darunter 
vorstellen können was ein Button machen wird.
Von SVN später nach git zu wechseln wäre ansonsten ja auch noch eine 
Option.


Yalu X. schrieb:
> Thilo R. schrieb:
>> Für jemanden, der bisher keine Versionsverwaltung benutzt hat (warum
>> sonst sollte er die Frage stellen) ist SVN konzeptionell einfacher.
>
> Das kann ich nicht so richtig nachvollziehen.
>
> An welcher Stelle ist für einen Anfänger, der ja nur einen kleinen
> Bruchteil der Features von Git oder SVN benötigt, SVN einfacher als Git?

Naja, das Prinzip alles auf einen zentralen Server zu schmeißen wäre 
durchaus genau das, was die meisten wahrscheinlich erstmal erwarten 
würden, mir war das damals jedenfalls sofort logisch.

von Matthi (Gast)


Lesenswert?

Peter Pan schrieb:
> SVN benutzt niemand mehr produktiv weil es einfach eine Katastrophe in
> der Bedienung ist.
>
> Es gibt sture alte Hasen die daran festhalten, aber in der Realität ist
> es umständlich und Müll.
>
> Allein schon dein Argument mit dem Speicherplatz ist lächerlich. Hast du
> eine 256MB Festplatte oder was? Willst du etwa binary einchecken? Git
> speichert die Änderungen in Form von Patches. Effizienter wird es bei
> Quelltext kaum.

Wir benutzen SVN beinahe ausschließlich, und das produktiv und 
professionell.  Dein Argument stimmt also nicht.
Ich finde SVN auch wesentlich intuitiver als Git, aber das ist natürlich 
subjektiv.
Generalisieren ist doch Quark hier. SVN hat genauso seine 
Daseinsberechtigung wie Git und alle anderen Systeme auch. Das sie sich 
dir im Falle von SVN nicht erschließt ist völlig OK, das macht SVN aber 
kein schlechtes System.

Und ja, wir checken binary ins Archiv (z.B. die Installer, libraries, 
Datenblätter, sämtliche Dokumentationen). Für manches gibt es auch keine 
andere Möglichkeit (frag mal Hardware Entwickler). In den Tags liegen 
schließlich auch die 'Deliverables', und das sind zumeist binaries.
Einer der großen Nachteile von Git finde ich in der Tat das man immer 
das ganze Repository mit sich rumschleifen muss. Ich möchte das lieber 
nicht. Meine Präferenz, braucht die Deine natürlich nicht zu sein

von vnnn (Gast)


Lesenswert?

Wühlhase schrieb:
> Ich denke, ich kann die Leistungsfähigkeit von git durchaus beurteilen,
> auch wenn ich es momentan nicht aktiv benutze.

Stimmt, du hast ja schon ein Buch drüber gelesen :)

Wühlhase schrieb:
> Naja, das Prinzip alles auf einen zentralen Server zu schmeißen wäre
> durchaus genau das, was die meisten wahrscheinlich erstmal erwarten
> würden, mir war das damals jedenfalls sofort logisch.

Abgesehen davon dass du das Thema schon wieder verfehlst, weil der TS 
keinen Server verwenden sondern offline versionieren will: du kannst git 
auch problemlos mit zentralem Server verwenden, ist auch mit Abstand der 
häufigste Use Case

von vnnn (Gast)


Lesenswert?

Matthi schrieb:
> Und ja, wir checken binary ins Archiv (z.B. die Installer, libraries,
> Datenblätter, sämtliche Dokumentationen). Für manches gibt es auch keine
> andere Möglichkeit (frag mal Hardware Entwickler). In den Tags liegen
> schließlich auch die 'Deliverables', und das sind zumeist binaries.

Ohje, der nächste der nicht verstanden hat was in die Versionierung 
kommt und was nicht.

Also zum mitschreiben nochmal: Sourcecode, Hardwaredesigns kommen ins 
Repo, daraus gebaute Artefakte legt der Buildserver irgendwo zentral ab, 
Datenblätter und sonstige Doku archiviert man bei der Doku.

von Matthi (Gast)


Lesenswert?

vnnn schrieb:
> Ohje, der nächste der nicht verstanden hat was in die Versionierung
> kommt und was nicht.
>
> Also zum mitschreiben nochmal: Sourcecode, Hardwaredesigns kommen ins
> Repo, daraus gebaute Artefakte legt der Buildserver irgendwo zentral ab,
> Datenblätter und sonstige Doku archiviert man bei der Doku.

Und das bestimmst du einfach mal so? Weil du das so machst, und es darum 
überall und in jeder Situation richtig sein muss? Es könnte Gründe 
geben, warum andere das anders machen. Vielleicht denkst du da einfach 
mal drüber nach...

von vnnn (Gast)


Lesenswert?

Matthi schrieb:
> Und das bestimmst du einfach mal so?

Sagen wir mal so, wenn es die halbe Welt aus sehr, sehr guten Gründen 
(allein schon die Reproduzierbarkeit, gibt nix schlimmeres als wenn 
Version 1.0 auf Entwicklungsrechner A und 1.1 auf Entwicklungsrechner B 
gebaut wurde) so macht, dann kannst du davon ausgehen dass es durchaus 
Sinn macht.

Matthi schrieb:
> s könnte Gründe
> geben, warum andere das anders machen.

Natürlich. Aber welche wären das?

Matthi schrieb:
> Vielleicht denkst du da einfach
> mal drüber nach...

Ich würde mal drüber nachdenken ob einem da wirklich hunderte 
Geisterfahrer entgegen kommen.

von Peter Pan (Gast)


Lesenswert?

Andreas S. schrieb:
> Gerade die archivierten Artefakte erlauben es doch, einen Debugger auf
> alte Versionsstände loszulassen, ohne vorher einen Build mit einer
> womöglich nicht mehr genau reproduzierbaren Toolchain durchzuführen.

Genau das stellt man doch mit reproduzierbaren Builds sicher.

Und checkst du wirklich ein Binary mit Debug Infos ein?!

Bei einem reproduzierbaren Build stellt man sicher, dass die Toolchain 
von Null auf in einem Container/Maschine installiert wird. Diese 
Konfiguration speichert man natürlich. Bei finalen Releases archiviert 
man den Container bzw. dessen Quellen und bekommt 1:1 die Tools sollte 
man sie erneut benötigen. Dann kannst damit deinen minimalen Hotfix 
erstellen.

Im Idealfall erhält man einen bitidentisches Artefakt, manchmal ist das 
jedoch aufgrund von z.B. Signaturen nicht möglich.

In Releases landet dabei auch nur ein Artefakt welches der CI 
entspringt. Binary von Entwickler-Rechnern sieht man grundsätzlich als 
nicht reproduzierbar an (wurden ja nicht mit dem besagten Container 
erstellt), sprich man hat nicht alle Infos um das Ergebnis zu 
reproduzieren.

Und das ist mein Anspruch an Softwareentwicklung im aktuellen 
Jahrtausend.

von 🐧 DPA 🐧 (Gast)


Lesenswert?

Binaries mit dem Code zusammen einzuchecken, ist keine gute Idee. Aber 
es ist grundsätzlich keine so schlechte idee, die im Repo zu haben. Man 
muss ja nicht alle Objekte im Git holen.

Wenn man die Binaries einchecken will, aber nicht zusammen mit dem Rest, 
könnte man die in einen eigenen Branche packen. z.B. so:
1
#!sh
2
3
# Build verzeichnis vorbereiten
4
ref="$(git rev-parse HEAD)"
5
mkdur -p "build/$ref"
6
cd "build/$ref"
7
git init
8
git remote add local ../..
9
git checkout --orphan "build/$ref"
10
11
# Build
12
cmake ../..
13
make
14
15
# Als commit ins lokale repo als eigenen Branch packen
16
git add .
17
git commit -m "Build $ref"
18
git push -u local "build/$ref"
19
20
# Aufräumen
21
cd "../.."
22
rm -rf "build/$ref"
23
24
# Auf server pushen
25
git push origin "build/$ref":"build/$ref"
Das kann man natürlich auch die CI/CD pipeline erledigen lassen. Oder 
bei sich in ein Script packen. Oder ins makefile. Wie es halt am besten 
passt.

Wenn man dann den Build brauch, kann man den einfach clonen:
1
git clone -b build/eae685d582276048a20305a214659d3175ac90b7 ./meinrepo/
2
cd build/eae685d582276048a20305a214659d3175ac90b7

./meinrepo/ kann das lokal ausgecheckt sein. Aber man könnte natürlich 
auch eins von einem Server nehmen und da angeben, muss dann halt runter 
geladen werden. Wenn man fertig ist, einfach den Ordner wieder löschen.

von 🐧 DPA 🐧 (Gast)


Lesenswert?

Der Vorteil davon ist, dass es nicht vom Webfrontend (gitlab/gitea) 
abhängig ist, und man trotzdem alles zusammen hat, und weiss, was 
zusammen gehört. Nachteil ist, das Repo wird etwas grösser, und man hat 
viele build/* branches.
Aber wenn man sie nicht mer braucht, kann man sie ja wieder löschen, und 
die nicht mehr benötigten Objekte in Git bereinigen lassen.

von Peter Pan (Gast)


Lesenswert?

🐧 DPA 🐧 schrieb:
> Der Vorteil davon ist, dass es nicht vom Webfrontend (gitlab/gitea)
> abhängig ist, und man trotzdem alles zusammen hat, und weiss, was
> zusammen gehört.

Wenn du die Artefakte mit z.B. artifactory archivierst speichert die CI 
passend dazu die Metadaten wie z.B. den genauen Commit aus der 
Versionsverwaltung.

Als Beispiel mit einem Screenshot davon:

https://stackoverflow.com/questions/32190267/using-git-sha-commit-id-as-artifact-version-number-when-publishing-to-artifactor

Mit dieser Revision bekommst du nun dein Artefakt, das könntest du dir 
jetzt in dein Skript Konstrukt einbauen. Dann hast du keine Binärdaten 
in der Versionsverwaltung, aber sofern du sie benötigst von der CI 
gebaute Artefakte.

So etwas kann man natürlich auch noch an die regulären git Befehle 
anhängen wobei ich das noch nie gemacht habe:

https://git-scm.com/docs/githooks

von Wühlhase (Gast)


Lesenswert?

vnnn schrieb:
> Wühlhase schrieb:
>> Ich denke, ich kann die Leistungsfähigkeit von git durchaus beurteilen,
>> auch wenn ich es momentan nicht aktiv benutze.
>
> Stimmt, du hast ja schon ein Buch drüber gelesen :)

Sagen wir mal, es reicht um die Verwendung von git oder SVN als 
sinnvoller einzuschätzen. Und mehr wollte ich damals auch nicht, und 
mehr will der TS hier nicht.
Und es führt auf jeden Fall weiter als ein kurzes Minimaltutorial 
durchzugehen.


vnnn schrieb:
> Wühlhase schrieb:
>> Naja, das Prinzip alles auf einen zentralen Server zu schmeißen wäre
>> durchaus genau das, was die meisten wahrscheinlich erstmal erwarten
>> würden, mir war das damals jedenfalls sofort logisch.
>
> Abgesehen davon dass du das Thema schon wieder verfehlst, weil der TS
> keinen Server verwenden sondern offline versionieren will: du kannst git
> auch problemlos mit zentralem Server verwenden, ist auch mit Abstand der
> häufigste Use Case

Das Thema war die Frage, an welcher Stelle SVN einfacher als git wäre, 
und zwar gestellt von Yalu und nicht vom TS.

Was qualifiziert dich Knallbirne eigentlich zur Teilnahme an einer 
Diskussion (egal um welches Thema es geht), wenn du nichtmal in der Lage 
bist dem Gesprächsverlauf zu folgen?

von vnnn (Gast)


Lesenswert?

Wühlhase schrieb:
> Sagen wir mal, es reicht um die Verwendung von git oder SVN als
> sinnvoller einzuschätzen. Und mehr wollte ich damals auch nicht, und
> mehr will der TS hier nicht.

Absurd. Hier sind Leute, die beide Systeme jahrelang selbst im Einsatz 
haben und hatten, aber du weißt alles besser, weil du ja schon mal ein 
Buch drüber gelesen hast. Kann man sich echt nicht ausdenken sowas.

Wühlhase schrieb:
> Das Thema war die Frage, an welcher Stelle SVN einfacher als git wäre,
> und zwar gestellt von Yalu und nicht vom TS.

Erstmal ist das Primärthemadie Frage vom TS, aber vermutlich weißt du 
auch besser als der was er eigentlich wissen will.
Zweitens schaffst du es immer noch nicht zu erklären warum git nun 
komplizierter sein soll.
Drittens ist es, wie bereits erwähnt, auch bei git problemlos möglich 
einen zentralen Server zu verwenden so man es will, nicht komplizierter 
als bei SVN, sogar einfacher, weils neben selbst hosten noch drölf 
Cloudanbieter gibt. Auch wenns nach wie vor eine Themenverfehlung ist, 
der TS hat immer noch nach offline gefragt.

Wühlhase schrieb:
> Was qualifiziert dich Knallbirne eigentlich zur Teilnahme an einer
> Diskussion (egal um welches Thema es geht), wenn du nichtmal in der Lage
> bist dem Gesprächsverlauf zu folgen?

Was qualifiziert dich Scherzkeks eigentlich zu irgendeinem Kommentar zu 
git, wenn du es noch nie in produktivem Einsatz hattest? Absurd, dein 
Geschwafel. Und du kapierst nicht mal dass der TS nie nach einer 
Serverlösung gefragt hat. Es ist so peinlich.

von Wühlhase (Gast)


Lesenswert?

vnnn schrieb:
> [..]

Machen wir es einfach so: Du hast Recht, ich meine Ruhe. :)

Den Kindergarten, daß das eine Programm für alle Probleme dieser Welt 
die ultimative Lösung ist, tue ich mir schon im Platinenforum mit 
Layoutprogrammen an.

von vnnn (Gast)


Lesenswert?

Wühlhase schrieb:
> daß das eine Programm für alle Probleme dieser Welt
> die ultimative Lösung ist

Dabei hab ich das doch nirgends behauptet. Im Gegenteil, rate ich doch 
explizit dazu, Buildartefakte und Dokumentation doch wo anders zu 
hinterlegen.

Absurd, was du dir so ausdenkst, wenn du nicht gerade am Thema 
(Offlineversionierung) vorbei irgendwas von Servern redest, oder über 
Dinge redest die nur aus Büchern kennst.

von Kolja L. (kolja82)


Angehängte Dateien:

Lesenswert?

Netzfund

von Nano (Gast)


Lesenswert?

vnnn schrieb:
> Datenblätter und sonstige Doku archiviert man bei der Doku.

Es spricht, abgesehen vom Platzbedarf, absolut nichts dagegen, auch die 
Datenblätter und Doku in ein Versionscontrolsystem zu stecken.

Datenblätter und Doku haben oft auch Revisionen, jetzt stell dir mal 
vor, dass bei einer aktuelle Revision eines Datasheets Informationen 
entfernt wurden, die im alten noch drin standen.

Du hast dein Datasheet in einen Ordner Namens "Doku" ohne Versionierung 
gepackt und das alte Datasheet damit überschrieben.
Wie rekonstruierst du nun das alte bzw. kommst an dieses ran?
Geht nicht.

Mit einem VCS ist es ein leichtes, an das alte Datasheet heranzukommen.


So und um nochmal auf den Platzbedarf zurückzukommen. Das war vielleicht 
vor 30 Jahren ein Thema, aber doch nicht mehr heute, wo man TB große 
Datenträger bekommt.

von Nano (Gast)


Lesenswert?

A. S. schrieb:
> Der Vorteil bei Tortoise (SVN auf einem Windows PC): Du
> installierst
> Tortoise/SVN auf Deinem Rechner, nimmst einen leeren Ordner und
> eröffnest dort mit der rechten Maustaste ein neues Repository. Ohne
> Webgedöns, Server oder was weiß ich. Innerhalb von Minuten kannst Du
> lokal loslegen, notfalls ohne Internet auf einem Uraltrechner.

Anstatt ein VCS mitsamt Repo nur lokal auf dem gleichen Rechner, mit dem 
man arbeitet, zu installieren, bietet es sich an, dafür gleich ein NAS 
zu verwenden und das VCS als Serverdienst auf dem NAS laufen zu lassen.

Das hat mehrere Vorteile:

1. die verfügbaren out of the box NAS Systeme bieten eine leichte 
Installation und Einrichtung von GIT und SVN an.

2. Auf einem NAS verwendet man eher Redundanz in Form eines Mirrors oder 
RAID 5, als auf dem Arbeitsrechner, wo das eher selten ist.

3. Auf einem NAS sind die Daten besser vor Schadsoftware geschützt.

4. Man lernt so gleich die Remotebenutzung der VCS.

Das ganze ist dann immer noch offline, so wie es der TS wollte. Er 
benötigt lediglich ein LAN/WLAN und ein NAS.

von Nano (Gast)


Lesenswert?

Noch was vergessen:

Nano schrieb:
> Das hat mehrere Vorteile:

5. das Repo ist dank NAS von mehreren Rechnern und Systemen aus 
zugänglich.
Wer zwischen verschiedenen Betriebssystemen oder Rechner wechselt wird 
das zu schätzen wissen.

von Mladen G. (mgira)


Lesenswert?

Gibt es einen anderen Grund als Nostalgie um heute noch SVN zu lernen?

Klar fehlt bei SVN einiges, für einfache Fälle ist es einfacher, aber 
der Aufwand SVN zu erlernen ist IMO Zeitverschwendung.

Git kann all das was SVN kann und viel mehr, in der Berufswelt ist SVN 
selten anzutreffen, eigentlich nur da wo man sich dem Fortschritt 
verwehrt, also we Technik und Innovation nebensächlich sind.

von Blechbieger (Gast)


Lesenswert?

Ein Grund Git nicht in der Firma einzusetzen könnte git rebase sein. 
Ein sehr schöner Befehl um Commits aufzuräumen z.B. um kleine 
Tippfehlerkorrekturen mit dem Ursprungscommit zu verschmelzen. Damit 
wird aber effektiv die Versionshistorie manipuliert was unter Umständen 
nicht akzeptabel ist.

Gibt es eine technische Möglichkeit im zentralen Repo das zu verhindern 
oder nur über Arbeitsanweisungen die die Nutzung zu verbieten? Am besten 
so dass es lokal weiterhin möglich ist um vor einem Push die neuen 
Commits aufzuräumen.

von Daniel A. (daniel-a)


Lesenswert?

Bei git ist bei Änderungen der Versionshistorie generell kein normaler 
push möglich, sondern nur ein force-push. Und ja, das kann man auch 
einschränken. Bei den ganzen Weboberflächen für die Repos (github, 
gitlab, gitea, etc.) kann man das sogar bequem per Webfrontend 
einstellen, oder auch die Berechtigung je nach User vergeben.

von Mladen G. (mgira)


Lesenswert?

Ja man kann konfigurieren auf welchen Branches Force Push erlaubt ist.

Eine Sache die git nicht kann, aber SVN:
locken von Dateien

das gab es gaaaanz früher mal in komplett veralteten 
Versionsverwaltungssystemen (CVS, Rational ClearCase, etc. pp.), die SVN 
User haben sich solange beschwert, bis das "feature" kam.

Das ist natürlich bei git anders, bescheuerte Features gibt es nicht auf 
Anfrage, egal wieviele das wollen.

von Lutz Legacy (Gast)


Lesenswert?

Ein Grund, ein eigentlich veraltetes VCS einzusetzen, sind langlebige 
legacy-Anwendungen. Wir haben so eine in der Firma: Mitte der 90er auf 
Workstations mit CVS verwaltet, um 2000 nach Windows portiert und dann 
Visual SourceSafe eingesetzt (dafür braucht man gute Nerven), dann um 
2014 auf SVN übertragen. Dabei ging jedesmal die Versionsgeschichte 
verloren.

Für Neuprojekte ist bei uns SVN nicht mehr zulässig, jetzt muss es git 
sein. Irgendwann in ein paar Jahren wird dann ein neuer Projektleiter 
als erste Amtshandlung die Migration von SVN auf git befehlen. Bis dann 
der nächste heisse Shice kommt.

Will sagen: Viel wichtiger, welches VCS man einsetzt, ist doch, dass man 
überhaupt eins verwendet (und am besten noch ein paar Regeln dazu 
vereinbart).

von stefanus (Gast)


Lesenswert?

Auf der Arbeit müssen wir inzwischen Git benutzen. Ich empfinde SVN 
insbesondere mit der GUI von Tortoise als deutlich einfacher anzuwenden. 
Aber Git ist auch OK, kann man ebenfalls ohne Server benutzen.

von stefanus (Gast)


Lesenswert?

Für Git hatte ich mal eine Anleitung geschrieben.
http://www.stefanfrings.de/git/index.html

von Ein T. (ein_typ)


Lesenswert?

Wühlhase schrieb:
> Besser ist git auch nur, wenn man es braucht. Und mit git muß man sich
> deutlich länger beschäftigen als mit SVN.

Man muß sich nur dann mit den erweiterten Features von Git beschäftigen, 
wenn man sie braucht. Wenn nicht, ist der Einarbeitungsaufwand derselbe. 
Aber wenn man die Features braucht, hat man sie schon und muß nicht erst 
auf eine andere Versionskontrolle wechseln, um sie nutzen zu können. Der 
Newcomer Git hat das ältere Subversion aus guten Gründen überholt, wenn 
nicht sogar abgehängt hat: Gits höhere Geschwindigkeit kommt auch Usern 
zugute, die seine fortgeschrittenen Features nicht nutzen, hinzu kommen 
schicke Features wie der Offline-Support und das elegantere Branching. 
Insofern finde ich Deine Ausführungen ein wenig verkürzt, sorry.

von Ein T. (ein_typ)


Lesenswert?

A. S. schrieb:
> Der Vorteil bei Tortoise (SVN auf einem Windows PC): Du installierst
> Tortoise/SVN auf Deinem Rechner, nimmst einen leeren Ordner und
> eröffnest dort mit der rechten Maustaste ein neues Repository. Ohne
> Webgedöns, Server oder was weiß ich. Innerhalb von Minuten kannst Du
> lokal loslegen, notfalls ohne Internet auf einem Uraltrechner.
>
> Du kannst Dich dann in SVN reinfuchsen, Du kannst aber auch alles mit
> der rechten Maustaste machen. Das erleichtert den Einstieg ungemein.

All das geht mit Git und TortoiseGit ganz genauso.

von Ein T. (ein_typ)


Lesenswert?

Peter Pan schrieb:
> Es gibt sture alte Hasen die daran festhalten, aber in der Realität ist
> [SVN] umständlich und Müll.

Bitte, Peter, komm' mal 'runter. Subversion ist Git zwar unterlegen -- 
und das zeigen ja auch die Nutzerstatistiken, in denen Git Subversion 
haushoch abgehängt hat -- aber "umständlich" oder gar "Müll" ist es 
deswegen noch lange nicht. Auch wenn es dank dezentralisierter 
Wettbewerber wie Git und Mercurial nicht mehr ganz state-of-the-art ist, 
ist und bleibt Subversion ein leistungsfähiges zentrales 
Versionskontrollsystem.

von Ein T. (ein_typ)


Lesenswert?

Wühlhase schrieb:
> Peter Pan schrieb:
>> Alles was man für einfaches Arbeiten mit git benötigt kann man sich in
>> wenigen Minuten anlesen.
> [...]
> Höre auf diesen Unsinn zu verbreiten,
> daß man in ein paar Minuten zum git-Profi wird.

Man wird nicht in ein paar Minuten zum Git-Profi, aber man wird in 
dieser Zeit auch nicht zum Subversion-Profi. Aber die Basics für einen 
Einstieg kann man bei beiden Systemen in wenigen Minuten erlernen.

von Rolf M. (rmagnus)


Lesenswert?

Lutz Legacy schrieb:
> Ein Grund, ein eigentlich veraltetes VCS einzusetzen, sind langlebige
> legacy-Anwendungen. Wir haben so eine in der Firma: Mitte der 90er auf
> Workstations mit CVS verwaltet, um 2000 nach Windows portiert und dann
> Visual SourceSafe eingesetzt (dafür braucht man gute Nerven), dann um
> 2014 auf SVN übertragen. Dabei ging jedesmal die Versionsgeschichte
> verloren.

Wie das mit "SourceSafe" ist, weiß ich nicht, aber ich habe Repos von 
CVS über SVN nach GIT umgezogen, immer inklusive History, Branches und 
Tags und den verschiedenen Benutzern. Das ging nicht per einfachem 
Mausklick, und man musste schon etwas Zeit investieren, aber es ging.

Ein T. schrieb:
>> Du kannst Dich dann in SVN reinfuchsen, Du kannst aber auch alles mit
>> der rechten Maustaste machen. Das erleichtert den Einstieg ungemein.
>
> All das geht mit Git und TortoiseGit ganz genauso.

Und auf der Kommandozeile geht es mit git einfacher als mit svn:
1
git init
und fertig. Schon hat man ein lokales Repository inklusive ausgecheckter 
Arbeitskopie, bereit für den ersten Commit.

von Ein T. (ein_typ)


Lesenswert?

Matthi schrieb:
> vnnn schrieb:
>> Also zum mitschreiben nochmal: Sourcecode, Hardwaredesigns kommen ins
>> Repo, daraus gebaute Artefakte legt der Buildserver irgendwo zentral ab,
>> Datenblätter und sonstige Doku archiviert man bei der Doku.
>
> Und das bestimmst du einfach mal so? Weil du das so machst, und es darum
> überall und in jeder Situation richtig sein muss?

Naja, sagen wir mal so: Versionskontrollsoftware für Quelltexte ist in 
der Regel für, nunja, Quelltexte ausgelegt. Also Plaintext-Dateien, in 
denen dann einzelne Zeilen hinzugefügt, verändert oder gelöscht werden. 
Deshalb sind sie für binäre Dateien üblicherweise nicht optimiert und 
nicht so gut geeignet. Für Git gibt es deswegen für Binärdateien und 
Ähnliches eigens die Erweiterung namens "Large File Storage" (git lfs), 
Subversion dagegen kann IIRC Binärdateien erkennen und behandelt sie 
anders als Textdateien.

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.