git: Dateidatum der neusten Datei erhalten?
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Was meinst du damit genau? Wie ist die Situation?
Ansonsten ist der timestamp truegerisch, weil git ihn beim Branchwechsel etc aktualisiert (bzw die Datei).
Ansonsten ist der timestamp truegerisch, weil git ihn beim Branchwechsel etc aktualisiert (bzw die Datei).
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Eigentlich geht es mir darum, einen Zusatz im Versionstring zu haben. Ich hatte sonst immer das gemacht:
Mit git geht das natürlich nicht. Den Versionsstring mit einem hash zu verzieren ist aber doof. Drum Frage ich mich, ob ich nicht Datum/Uhrzeit der neusten Datei ermitteln kann.
Code: Alles auswählen
__version__ = (0, 1, 6)
try:
from django.utils.version import get_svn_revision
except ImportError:
pass
else:
path = os.path.split(os.path.abspath(__file__))[0]
svn_revision = get_svn_revision(path)
if svn_revision != u'SVN-unknown':
svn_revision = svn_revision.replace("-", "").lower()
__version__ += (svn_revision,)
VERSION_STRING = '.'.join(str(part) for part in __version__)
- Defnull
- User
- Beiträge: 778
- Registriert: Donnerstag 18. Juni 2009, 22:09
- Wohnort: Göttingen
- Kontaktdaten:
Was du eigentlich willst, ist also das Datum des letzten commits?
Code: Alles auswählen
$ git log --format="%cd" master~..master
Sat Apr 17 09:35:23 2010 +0200
$ git log --format="%cD" master~..master
Sat, 17 Apr 2010 09:35:23 +0200
$ git log --format="%cr" master~..master
3 days ago
$ git log --format="%ci" master~..master
2010-04-17 09:35:23 +0200
$ git log --format="%ct" master~..master
1271489723
Bottle: Micro Web Framework + Development Blog
@Jens: Der Hash ist allerdings aussagekräftiger, weil eindeutig. Du musst auch nicht den kompletten Hash nutzen. Schon die ersten Dutzend Zeichen sind innerhalb eines Repos meist eindeutig.
Für den Entwickler ist der Vorteil, dass er dann den Commit, auf den sich die Version bezieht, wirklich genau auswählen kann.
Für den Entwickler ist der Vorteil, dass er dann den Commit, auf den sich die Version bezieht, wirklich genau auswählen kann.
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Einverstanden, aber wie komme ich an den hash dran?
So:
(Kann gerad nicht testen, mache ich später )
So:
Code: Alles auswählen
git log --format="%h" master~..master
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Ich würde letzten Tag plus Hash verwenden. Also irgendwie sowas:
``0.1-post-fbdc94e``
Dann weiß auch ein normaler User, dass der Hash nach dem Release 0.1 (der Tag ist dann '0.1') kommt. Und bei der getaggten Revision natürlich das ``post`` fallen lassen.
``0.1-post-fbdc94e``
Dann weiß auch ein normaler User, dass der Hash nach dem Release 0.1 (der Tag ist dann '0.1') kommt. Und bei der getaggten Revision natürlich das ``post`` fallen lassen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
- Defnull
- User
- Beiträge: 778
- Registriert: Donnerstag 18. Juni 2009, 22:09
- Wohnort: Göttingen
- Kontaktdaten:
"git describe" könnte auch interessant sein: "The command finds the most recent tag that is reachable from a commit. If the tag points to the commit, then only the tag is shown. Otherwise, it suffixes the tag name with the number of additional commits on top of the tagged object and the abbreviated object name of the most recent commit."
Code: Alles auswählen
mahe@s10300-fab8:/home/mahe/coding/bottle$ git describe
0.6.4-280-g0d463f7
Bottle: Micro Web Framework + Development Blog
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Ja, das sieht so ähnlich aus wie das was mir vorschweben würde. Vielleicht noch den Tag filtern, nach nem Tag der wie eine Versionsnummer ausschaut, aber sonst eigentlich ziemlich optimal.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
vorschlag:
Bin noch nicht so eingearbeitet in git. Aber 'master' ist der Name des branches und kann sich ändern, oder nicht?
Code: Alles auswählen
# coding:utf-8
import subprocess
import warnings
__version__ = (0, 0, 1)
VERSION_STRING = '.'.join(str(part) for part in __version__)
try:
process = subprocess.Popen(
["git", "log", "--format='%h'", "-1", "master"],
stdout = subprocess.PIPE
)
except Exception, err:
warnings.warn("Can't get git hash: %s" % err)
else:
process.wait()
returncode = process.returncode
if returncode == 0:
output = process.stdout.readline().strip().strip("'")
if len(output) != 7:
warnings.warn("Can't get git hash, output was: %r" % output)
else:
VERSION_STRING += ".git-%s" % output
else:
warnings.warn("Can't get git hash, returncode was: %s" % returncode)
if __name__ == "__main__":
print VERSION_STRING
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Dann brauchst du dich auch nicht wundern, denn ``git describe`` gibt ja ``NEUESTER_TAG-REVISIONS_SEIT_TAG-LETZTER_COMMIT_HASH`` aus. Wenn es keinen Tag gibt, wo sollte dann ``NEUESTER_TAG`` herkommen?jens hat geschrieben:Bisher offensichtlich nicht
Git ist Neuland...
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Ja. Aehnlich `default` bei Hg.jens hat geschrieben:Bin noch nicht so eingearbeitet in git. Aber 'master' ist der Name des branches und kann sich ändern, oder nicht?
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
Der aktuelle Entwicklungszweig kann sich natürlich ändern, insofern ist es eigentlich nicht wirklich sinnvoll, "master" hart zu kodieren. Sinnvoller ist eigentlich "HEAD", denn das bezieht sich immer auf den Commit, auf dem die Änderungen des Arbeitsverzeichnisses basieren, also der Vater des nächsten Commits.
"git describe" ist natürlich das beste.
"git describe" ist natürlich das beste.
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Tuts doch auch, siehe dessen Dokumentation.jens hat geschrieben:Wenn "describe" auch ohne tags funktionieren würde, dann wäre ich dabei
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice