Versionskontrolle, Git?

Alles, was nicht direkt mit Python-Problemen zu tun hat. Dies ist auch der perfekte Platz für Jobangebote.
Antworten
Code Codain
User
Beiträge: 20
Registriert: Samstag 8. Dezember 2018, 16:12

Dienstag 31. Dezember 2019, 19:46

Hi Leute,

ich stehe noch ziemlich am Anfang und habe das Problem, dass mein Spaghetticode nach einigen Änderungen überhaupt nicht mehr funktioniert. Ich will also meinen Code verbessern und am Ende funktioniert er gar nicht mehr. Ich hab jetzt mal nen bissl gegoogelt und bin über git gestolpert. Als IDE nutzte Pycharm Community Edition und ich frage mich ob es Sinn macht sich mit git zu beschäftigen oder sollte ich einfach erstmal die basics lernen und sauberen code schreiben oder kommt man um git nicht rum oder was gibt es da noch für Möglichkeiten?

VG und guten Rutsch

codain
Benutzeravatar
pillmuncher
User
Beiträge: 1164
Registriert: Samstag 21. März 2009, 22:59
Wohnort: München

Dienstag 31. Dezember 2019, 20:35

Hier eine unvollständige, aber vorerst ausreichende Liste von bewährten Maßnahmen:
  • Verwende aussagekräftige Namen für deine Bezeichner. Wenn dir keiner einfällt ist das möglicherweise ein Zeichen, dass du das Problem noch nicht ganz verstanden hast, das du lösen willst.
  • Schreib kurze Funktionen, die alles, was sie brauchen, als Argumente übergeben bekommen.
  • Überleg dir zweimal, ob du wirklich eine Klasse brauchst, oder ob ein paar Funktionen genügen.
  • Benutze die Python Standard Bibliothek. Sie ist dein Freund.
  • Wenn dein Projekt externe Bibliotheken verwendet, richte dafür ein Virtuelles Environment ein (venv, ggf. auch virtualenvwrapper).
  • Kopiere nur Code von StackOverflow, den du auch verstehst. Verwende unverstandenen Code zum Lernen.
  • Schreib automatisierbare Tests. Benutze dazu pytest o.ä.
  • Benutze git.
  • Vermeide triviale Kommentare. Schreib nicht was du im Code machst - das steht ja schon im Code. Schreib, warum du das so programmiert hast.
  • Beherzige PEP 8 und PEP 20.
In specifications, Murphy's Law supersedes Ohm's.
Sirius3
User
Beiträge: 11331
Registriert: Sonntag 21. Oktober 2012, 17:20

Mittwoch 1. Januar 2020, 08:34

In der langen Liste von pillermuncher stehen zwei Punkte, ohne die man größere Aufräumarbeiten erst gar nicht anfangen sollte: eine relativ vollständige Testabdeckung und Verkehrskontrolle. Das erste sorgt dafür, dass man sich sicher sein kann, dass nach Änderungen noch alles funktioniert, das zweite, dass falls etwas nicht funktioniert, man wieder einen Zustand herstellen kann, der noch ok war.
Tholo
User
Beiträge: 170
Registriert: Sonntag 7. Januar 2018, 20:36

Mittwoch 1. Januar 2020, 10:03

Pycharm hat ein lokales git ähnliches System integriert. Die local History.
https://www.jetbrains.com/help/pycharm/ ... story.html
Das kann als Anfänger ausreichen und du musst dich noch nicht weiter mit github beschäftigen. Wobei das System sehr ähnlich ist.
Sirius3
User
Beiträge: 11331
Registriert: Sonntag 21. Oktober 2012, 17:20

Mittwoch 1. Januar 2020, 10:36

@Tholo: gut dass Du gleich die richtige Seite verlinkt hast:
Local History is not a replacement for proper source control.

It is cleared when you install a new version of PyCharm or invalidate caches. It has a retention period and maximum size, so revisions are not guaranteed to persist forever.
Also im Zweifel ist das, was man wiederherstellen will, nicht mehr da. github != git.
nezzcarth
User
Beiträge: 885
Registriert: Samstag 16. April 2011, 12:47

Mittwoch 1. Januar 2020, 11:04

Code Codain hat geschrieben:
Dienstag 31. Dezember 2019, 19:46
ich frage mich ob es Sinn macht sich mit git zu beschäftigen oder sollte ich einfach erstmal die basics lernen und sauberen code schreiben oder kommt man um git nicht rum oder was gibt es da noch für Möglichkeiten?
Zur Softwareentwicklung gehört neben dem eigentlichen Erlernen von Programmiersprachen auch die Aneignung zusätzlicher Werkzeuge und Konzepte. Zum Beispiel eben auch Versionskontrollsysteme oder Testing, die (wie die anderen schon meinten) in Kombination bei dem von dir beschriebenen Problem Abhilfe schaffen. Wann der geeignete Zeitpunkt ist, so ein System zu lernen, ist schwer zu sagen. Um mit einem Versionskontrollsystem etwas anfangen zu können, sollte man denke ich zumindest bereits soweit im Thema sein, dass man halbwegs versteht, welche Probleme dadurch eigentlich gelöst werden. Vielleicht ist das bei dir ja genau jetzt der Fall.

'git' ist eines unter vielen Systemen aber zur Zeit vermutlich das bekannteste. Wenn du einfach so ohne weitere Voraussetzungen eins lernen möchtest, ist das, wie von pillmuncher vorgeschlagen, wohl die sinnvollste Wahl. Wenn man git nur ganz rudimentär verwenden möchte, braucht man nur ein paar Befehle. An sich ist git finde ich aber ziemlich komplex und man muss schon etwas Zeit haben, wenn man die fortgeschritteneren Features verstehen und verwenden möchte.

Ein alternativer Einstieg ist, dass man sich für (Open Source) Projekt interessiert, das ein andere System verwendet. Verbreitere moderne dezentrale Systeme, die relativ vergleichbar zu git sind, sind zum Beispiel mercurial oder Bazaar(beide ganz oder teilweise in Python geschrieben). git, mercurial, Bazaar (und noch eine ganze Reihe weiterer dezentraler Systeme, die weniger bekannt sind; ich mag fossil, das verwendet aber kaum jemand und daher ist das für mich leider nicht einsetzbar) sind unter einander relativ äquivalent, aber git ist das populärste. Gängige ältere Systeme im Open Source Bereich, von denen man vielleicht mal gehört haben sollte, sind zum Beispiel CVS oder Subversion (SVN); und im kommerziellen Kontext kann einem dann noch sowas wie Perforce über den Weg laufen. Mit diesen Systemen kann man sich dann irgendwann mal vertraut machen, wenn das relevant werden sollte. Gerade SVN ist nach meinem Eindruck nach wie vor sehr verbreitet.
__deets__
User
Beiträge: 7390
Registriert: Mittwoch 14. Oktober 2015, 14:29

Mittwoch 1. Januar 2020, 12:04

Ich kann da nur mit Nachdruck @nezzcarth widersprechen. Vor 10 Jahren wäre das guter Rat gewesen. Jetzt ist git der 800 Pfund Gorilla, und alles andere ferner liefen. Gerade wenn man also anfängt und sich unsicher ist, sollte man das benutzen.
Code Codain
User
Beiträge: 20
Registriert: Samstag 8. Dezember 2018, 16:12

Mittwoch 1. Januar 2020, 12:45

Danke für Euren Input, ich werde mir git mal angucken, bin aber bis jetzt etwas erschlagen von der Komplexität.
nezzcarth
User
Beiträge: 885
Registriert: Samstag 16. April 2011, 12:47

Mittwoch 1. Januar 2020, 12:46

__deets__ hat geschrieben:
Mittwoch 1. Januar 2020, 12:04
Ich kann da nur mit Nachdruck @nezzcarth widersprechen. Vor 10 Jahren wäre das guter Rat gewesen. Jetzt ist git der 800 Pfund Gorilla, und alles andere ferner liefen. Gerade wenn man also anfängt und sich unsicher ist, sollte man das benutzen.
Ui, okay. :( ;) Auf welchen Teil aus meiner Textwüste beziehst du dich denn, den dritten Absatz zu den "Konkurrenzprodukten"? Ich dachte eigentlich geschrieben zu haben, dass git das ist, womit man im Moment anfangen sollte, außer es gibt gute Gründe dagegen: "'git' ist eines unter vielen Systemen aber zur Zeit vermutlich das bekannteste. Wenn du einfach so ohne weitere Voraussetzungen eins lernen möchtest, ist das, wie von pillmuncher vorgeschlagen, wohl die sinnvollste Wahl."

Ich benutze selbst git für meinen gesamten eigenen Code und in seltenen Fälle andere Systeme, weil die Entscheidung nicht bei mir liegt/lag.
__deets__
User
Beiträge: 7390
Registriert: Mittwoch 14. Oktober 2015, 14:29

Mittwoch 1. Januar 2020, 13:59

Ja, der 3te Absatz suggeriert man könnte mal was anderes probieren. Klar ist das keine “sollte” sondern nur “könnte”-Empfehlung. Aber auch die finde ich nicht richtig für einen Anfänger, daher mein starkes Votum dagegen. Denn sonst setzt man ggf auf ein totes Pferd, und zB Python selbst hat ja von mercurial auf GIT gewechselt.
Code Codain
User
Beiträge: 20
Registriert: Samstag 8. Dezember 2018, 16:12

Mittwoch 1. Januar 2020, 14:38

Ich habe das so verstanden, dass er generell GIT empfohlen hat und nur Alternativen aufgezeigt hat. Werde mich daher mal mit GIT auseinandersetzten.
nezzcarth
User
Beiträge: 885
Registriert: Samstag 16. April 2011, 12:47

Mittwoch 1. Januar 2020, 15:23

__deets__ hat geschrieben:
Mittwoch 1. Januar 2020, 13:59
Ja, der 3te Absatz suggeriert man könnte mal was anderes probieren. Klar ist das keine “sollte” sondern nur “könnte”-Empfehlung. Aber auch die finde ich nicht richtig für einen Anfänger, daher mein starkes Votum dagegen. Denn sonst setzt man ggf auf ein totes Pferd, und zB Python selbst hat ja von mercurial auf GIT gewechselt.
Okay, das verstehe ich, danke. :)
DasIch
User
Beiträge: 2532
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Mittwoch 1. Januar 2020, 23:34

Ich würde da __deets__ zustimmen. In der Praxis wirst du realistisch nicht auf irgendwas anderes als git stoßen. Vor ganz langer Zeit als verteilete Versionskontrollsysteme noch neu waren hatte git mal Konkurrenz mit Mercurial und (nicht so ernsthaft) Bazaar. Bazaar ist nie von der Stelle gekommen und Mercurial's Anfang vom Ende war dass Bitbucket sich nie gegen Github durchsetzen konnte und letztendlich git Unterstützung implementiert hat. Im August letzten Jahres hat Bitbucket Mercurial aufgegeben, damit ist Mercurial effektiv Tod. Fossil, wie auch darcs, ist und war nie mehr als ein interessantes Experiment.

Zentralisierte Versionskontrollsysteme werden eigentlich nur noch aus historischen Gründen genutzt. Wer im kommerziellen Umfeld auf Perforce trifft... man kann in der Probephase recht leicht kündigen.
Tholo
User
Beiträge: 170
Registriert: Sonntag 7. Januar 2018, 20:36

Donnerstag 2. Januar 2020, 04:19

Sirius3 hat geschrieben:
Mittwoch 1. Januar 2020, 10:36
@Tholo: gut dass Du gleich die richtige Seite verlinkt hast:
Local History is not a replacement for proper source control.

It is cleared when you install a new version of PyCharm or invalidate caches. It has a retention period and maximum size, so revisions are not guaranteed to persist forever.
Also im Zweifel ist das, was man wiederherstellen will, nicht mehr da. github != git.
Wups.... Ohh ja mein Fehler. Hätte die Seite vielleicht mal lesen sollen...
Die Pycharm Anfangszeit hatte ich dann doch falsch in Erinnerung.
Ich wollt gar nicht auf Github hinaus! Ich nutze ja selbst Gitea und nicht Github... Daher ja git != Github
Antworten