Seite 1 von 1

Versionierung

Verfasst: Sonntag 17. Oktober 2010, 11:35
von Xynon1
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 ?

Re: Versionierung

Verfasst: Sonntag 17. Oktober 2010, 12:04
von Dav1d
Es gibt Mercurial und Bitbucket, git und Github

Re: Versionierung

Verfasst: Sonntag 17. Oktober 2010, 12:06
von 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.

Re: Versionierung

Verfasst: Sonntag 17. Oktober 2010, 12:19
von 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.

Re: Versionierung

Verfasst: Sonntag 17. Oktober 2010, 12:24
von Xynon1
Danke mehr wollte ich gar nicht wissen.

Aber ein was wundert mich noch wie wird diese variable in quelltexten benutzt __version__, bzw. wozu ?

Re: Versionierung

Verfasst: Sonntag 17. Oktober 2010, 13:15
von Hyperion
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.

Re: Versionierung

Verfasst: Sonntag 17. Oktober 2010, 13:22
von Xynon1
Ok, aber diese muss man immer manuell mitführen, oder ?
Gibt es hier eventuell möglichkeiten diese automatisiert zu verwalten ?

Re: Versionierung

Verfasst: Sonntag 17. Oktober 2010, 13:28
von Hyperion
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.

Re: Versionierung

Verfasst: Sonntag 17. Oktober 2010, 13:34
von Xynon1
Deswegen ja meine ursprüngliche Frage :mrgreen:.

Aber ich lass es erstmal, außer jemand sollte so ein tool schon kennen/haben.

Re: Versionierung

Verfasst: Sonntag 17. Oktober 2010, 13:36
von Hyperion
Xynon1 hat geschrieben:Deswegen ja meine ursprüngliche Frage :mrgreen:.
Na, den Zusammenhang zu "__version__" kann ich da jetzt nicht rauslesen ;-)

Re: Versionierung

Verfasst: Sonntag 17. Oktober 2010, 13:38
von Xynon1
Naja, in einem direkten für Pythonscript Verwaltung wäre das warscheinlich dabei gewesen, aber ich wollte es nicht gleich darauf spezifizieren.

Re: Versionierung

Verfasst: Sonntag 17. Oktober 2010, 13:55
von 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.

Re: Versionierung

Verfasst: Sonntag 17. Oktober 2010, 13:59
von Xynon1
Ja, in der Art habe ich das schon erwartet, ist auch nicht so wichtig.
Hat mich lediglich mal interessiert.