Sollte in der Github API-Dokumentation enthalten sein Es gibt einen Zustand, in dem der Inhalt der Antwort nicht übernommen werden kann. Ich untersuchte die Ursache des Fehlers, verstand es aber immer noch nicht, also ging ich nach Hause und überprüfte es.
Überprüfen Sie die Antwort von `` `/ repos /: owner /: repo / communic``` der Github-API. http://developer.github.com/v3/repos/commits/
Lassen Sie uns zuerst ein Token mit OAuth erhalten.
curl https://api.github.com/authorizations \
--user "futoase" \
--data '{"scopes": ["repo"], "note": "Test"}'
Da es schwierig ist zu verstehen, was mit der Bibliothek nicht stimmt (Ist es der Einfluss der Parsing-Methode oder des Singleton auf den Antwortinhalt der Bibliothek)? Ziehen Sie Textdaten über Curl und ziehen Sie sie Überprüfen Sie den Inhalt, indem Sie den JSON-Parser von Python ausführen. (Für die Antwort wird der Header-Teil gelöscht.)
... als Beispiel die Kommunikation des npm-Repositorys von isaacs abrufen.
curl -i "https://api.github.com/repos/isaacs/npm/commits?access_token={access_token}" > npm
Schneiden Sie den Körperteil der Antwort aus und analysieren Sie json, um den Inhalt zu überprüfen.
cat npm | python -mjson.tool
Perth ist richtig gemacht. Überprüfen Sie also, ob ein Committer-Schlüssel vorhanden ist.
verify.py
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import json
import sys
def parse(file_name):
with open(file_name, 'r') as f:
results = json.loads(f.read())
for result in results:
if result.get('committer') is None:
print('\ncommitter is None: ' + result.get('sha'))
else:
print('.', end="")
if __name__ == '__main__':
parse(sys.argv[1])
Ich werde die Datei füttern, bei der ich zuvor kein Problem mit dem Parsen hatte.
./verify.py npm
Als ich es drehte, 3 von 30 Fällen, war das Ergebnis, dass es keinen Committer gab. (Ignorieren Sie Page Nation usw.)
............…..
commiter is None: 4638a792fda9a322c4084a46728ebcc9cdab0036
commiter is None: e9e1db1cafcc7e311ddbd8137ae3b74857768469
.
commiter is None: 94de57821d58f3e36a9747f0212f9d4545a896e7
Lassen Sie uns als Test `` `e9e1db1``` überprüfen.
https://api.github.com/repos/isaacs/npm/commits/e9e1db1cafcc7e311ddbd8137ae3b74857768469
Committer: null.
Ich frage mich warum, überprüfen Sie den Inhalt des Commits aus dem Git-Protokoll.
git log -p e9e1db1cafcc7e311ddbd8137ae3b74857768469
commit e9e1db1cafcc7e311ddbd8137ae3b74857768469
Author: Domenic Denicola <[email protected]>
Date: Mon Jan 28 03:10:42 2013 -0500
Fix bug in prettyWhere calculation
Werfen wir einen Blick auf die Pull-Anforderung basierend auf dem Festschreibungsprotokoll ...
https://github.com/isaacs/npm/pull/3100
Es war in Pull Request. Überprüfen Sie den Inhalt anderer Festschreibungsprotokolle, die "Committer: null" sind.
https://api.github.com/repos/isaacs/npm/commits/4638a792fda9a322c4084a46728ebcc9cdab0036
Suchen Sie nach Pull Request. https://github.com/isaacs/npm/pull/3103 war.
https://api.github.com/repos/isaacs/npm/commits/94de57821d58f3e36a9747f0212f9d4545a896e7
Suchen Sie nach Pull Request. https://github.com/isaacs/npm/pull/3097 war.
Überprüfen Sie den Antwortinhalt der API auf den Inhalt des Commits, der normalerweise festgeschrieben wurde (ich bin nicht sicher, was ich geschrieben habe ...), nicht auf die Zusammenführung über Pull Request.
https://api.github.com/repos/isaacs/npm/commits/4f511b99520b5fc76e6bf8e1c44bf71423fddda4
Der Committer enthält Informationen. Wenn Sie darüber nachdenken, ist es natürlich, aber als API-Antwort, Weil es keine Möglichkeit gibt zu erkennen, ob der Committer null ist oder nicht Erwarten Sie keine Antwort [: Committer], verwenden Sie die Antwort [: Autor] ...
Recommended Posts