Eine Datei aus git repro übers Netz ziehen...

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
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

In "bootstrap_env" Projekt ziehe ich per "urlopen" von https://raw.githubusercontent.com/pypa/ ... get-pip.py die aktuelle 'get-pip.py'... Danach vergleiche ich den Inhalt per SHA256 hash:

https://github.com/jedie/bootstrap_env/ ... #L108-L115

Dumm natürlich, wenn 'get-pip.py' aktualisiert wird.

Nun könnte ich die URL tauschen und master durch den letzten Hash ersetzten:

Code: Alles auswählen

statt:
https://raw.githubusercontent.com/pypa/pip/master/contrib/get-pip.py
das nehmen:
https://raw.githubusercontent.com/pypa/pip/cfd03c17cfcab063bc15b7a1e68a7a13e13cfde2/contrib/get-pip.py
Dann passt der SHA256 Hash auch "immer"... Dafür ziehe ich evtl. eine veraltete Version :(


Die Frage ist nun, wie kann ich auf einfacher weise erkennen, das es eine neuere get-pip.py gibt?
Per html die Seite https://github.com/pypa/pip/commits/dev ... get-pip.py parsen ist dämlich.
Evtl. per subprocess git mit --remote=https://github.com/pypa/pip.git nutzten? Aber wie?

Sonstige Ideen?

EDIT: Ich könnte natürlich einmal 'master' und einmal mit git-hash ziehen und vergleichen :?

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

So, hab mich schnell mal für die einfache Idee entschieden: https://github.com/jedie/bootstrap_env/ ... 648f9c9L94

Also einmal von master und einmal mit hash ziehen und vergleichen. So bekommt man immer eine Lauffähige Version, aber bekommt eine WARNING, falls beide nicht übereinstimmen...


Aber wie besser Lösen?

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
darktrym
User
Beiträge: 784
Registriert: Freitag 24. April 2009, 09:26

Hast du mal geschaut wie Android das macht? Das repo Skript ist in Python und parst den Kram von git.
„gcc finds bugs in Linux, NetBSD finds bugs in gcc.“[Michael Dexter, Systems 2008]
Bitbucket, Github
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Hast du ein Link für mich?

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
darktrym
User
Beiträge: 784
Registriert: Freitag 24. April 2009, 09:26

„gcc finds bugs in Linux, NetBSD finds bugs in gcc.“[Michael Dexter, Systems 2008]
Bitbucket, Github
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Ja, danke. Allerdings sehe ich jetzt spontan nicht, wie wir das helfen könnte.

Eine subprocess("git"...) Lösung wäre schon was.
Aber wie bekommt man von einem remote repro den hash Wert einer Datei herraus?
Oder den timestamp der letzten Änderung?

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Wie wäre es indem man einfach git bzw. das git Protokoll benutzt? Da gäbe es z.B. die libgit2, für die es wohl auch ein Python Binding gibt pygit2. Zumindest das Inhaltsverzeichnis suggeriert dass die Dokumentation sogar brauchbar ist.
Antworten