Versionierung

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

Wie sollte man in Python eigentlich die Scripte versionieren ?

Gibt es da schon direkt für Python was, oder sollte man ein externes Programm wie ein svn zB git dafür nehmen ?
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

Es gibt Mercurial und Bitbucket, git und Github
the more they change the more they stay the same
BlackJack

@Xynon1: Warum sollte es da speziell etwas für Python geben? Sind doch allgemein betrachtet einfach nur Quelltextdateien die sich aus Sicht eines VCS nicht von vielen anderen Programmierpsrachen/Quelltexten unterscheiden.

Es gibt mit Mercurial ein verteiltes Versionierungssystem was *in* Python geschrieben ist. Aber nicht speziell *für* Python.
lunar

@Xynon1: Zudem hängt die Wahl des VCS und des „Drumherums“ auch stark von den Anforderungen ab. GitHub und BitBucket sind keine Allzweckwaffen und keinesfalls für jedes Projekt die geeignete Wahl.
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

Danke mehr wollte ich gar nicht wissen.

Aber ein was wundert mich noch wie wird diese variable in quelltexten benutzt __version__, bzw. wozu ?
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Xynon1 hat geschrieben:Danke mehr wollte ich gar nicht wissen.

Aber ein was wundert mich noch wie wird diese variable in quelltexten benutzt __version__, bzw. wozu ?
Naja, wenn Du ein fremdes Modul importierst kannst Du darüber prüfen, ob die richtige Version vorliegt und ggf. eine Fehlermeldung ausgeben, so dass der Benutzer merkt, dass eine benötigte Library nicht den benötigten Stand bietet, oder aber Du kannst Dann einen workaround anbieten, auf den Du bei korrekter Version verzichten würdest.

Unabhängig davon stellt es eben eine Möglichkeit dar, im Quelltext anzugeben, um welche Version es sich handelt. Ist doch weit besser, als das nur in einer README im selben Verzeichnis, den Verzeichnisnamen o.ä. zu handhaben.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

Ok, aber diese muss man immer manuell mitführen, oder ?
Gibt es hier eventuell möglichkeiten diese automatisiert zu verwalten ?
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Xynon1 hat geschrieben:Ok, aber diese muss man immer manuell mitführen, oder ?
Gibt es hier eventuell möglichkeiten diese automatisiert zu verwalten ?
Gibt es bestimmt - bei vielen VCS kann man sich Hooks schreiben. Damit könnte man natürlich die nun erreichte Version, z.B. beim Taggen, in sein Python-Script reinschreiben lassen. Nur fraglich, ob man das immer auch möchte oder ob sich der Aufwand lohnt.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

Deswegen ja meine ursprüngliche Frage :mrgreen:.

Aber ich lass es erstmal, außer jemand sollte so ein tool schon kennen/haben.
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Xynon1 hat geschrieben:Deswegen ja meine ursprüngliche Frage :mrgreen:.
Na, den Zusammenhang zu "__version__" kann ich da jetzt nicht rauslesen ;-)
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

Naja, in einem direkten für Pythonscript Verwaltung wäre das warscheinlich dabei gewesen, aber ich wollte es nicht gleich darauf spezifizieren.
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
BlackJack

@Xynon1: `__version__` wird von einigen Werkzeugen, zum Beispiel solche die Dokumentation aus den Modulen herausziehen, besonders behandelt. So zum Beispiel auch das `pydoc`-Modul in der Standardbibliothek. Aus Sicht von Python ist das einfach nur ein Attribut wie jedes andere auch.

Wobei das eine andere Version ist, als die bei Versionierungssystemen. Es sei denn man führt die Revision des Versionierungssystems auch in der Produktversion ständig mit. Was ich persönlich nicht so handhabe. `__version__` wird bei mir nur angefasst, wenn tatsächlich ein neues Produktrelease ansteht, beziehungsweise kurz danach, damit die Entwicklerversion eine andere Versionsnummer als das letzte Release hat.

Man könnte das natürlich automatisieren wenn man ein neues Release in der Versionskontrolle "tag"t, dass vorher automatisch die `__version__` angepasst wird, das ist im Grunde ja aber auch wieder nichts Python-spezifisches. Auch in anderen Programmiersprachen hat man oft irgendwo in einer Textdatei bei einer "Variablenzuweisung" eine Versionsnummer stehen, die bei Releases angepasst werden muss.
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

Ja, in der Art habe ich das schon erwartet, ist auch nicht so wichtig.
Hat mich lediglich mal interessiert.
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
Antworten