[PYTHON] Beim Zusammenführen per Pull-Anforderung enthält die Antwort der Github-API keine Committer-Informationen

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"}'

Referenz

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

Beim Zusammenführen per Pull-Anforderung enthält die Antwort der Github-API keine Committer-Informationen
Rufen Sie github api in Python auf, um Informationen zur Pull-Anforderung zu erhalten
Was tun, wenn aufgrund der Proxy-Einstellungen in Python Web Scraping keine Antwort erfolgt?
Leider gibt es kein Gefühl der Einheit in der where-Methode
Ich habe versucht, die COTOHA-API zu verwenden (es gibt auch Code auf GitHub).
In Python gibt es keinen Schalter
Was tun, wenn das über Scrapy heruntergeladene Ergebnis auf Englisch ist?
Wenn das Ziel Ubuntu 16.04 in Ansible ist
Gibt es NaN im Pandas DataFrame?