Doit être dans la documentation de l'API Github Il y a un état où le contenu de la réponse ne peut pas être pris, J'enquêtais sur la cause de ce qui n'allait pas, mais je ne comprenais toujours pas, alors je suis rentré chez moi et j'ai vérifié.
Vérifiez la réponse de
/ repos /: owner /: repo / commun '' de l'API Github.
http://developer.github.com/v3/repos/commits/
Tout d'abord, obtenons un jeton en utilisant OAuth.
curl https://api.github.com/authorizations \
--user "futoase" \
--data '{"scopes": ["repo"], "note": "Test"}'
Puisqu'il est difficile de comprendre ce qui ne va pas avec la bibliothèque (est-ce l'influence de la méthode d'analyse ou du singleton sur le contenu de la réponse de la bibliothèque) Tirez les données de texte via curl et tirez-les Vérifiez le contenu en exécutant l'analyseur json de Python. (Pour la réponse, la partie d'en-tête est supprimée)
... à titre d'exemple, récupérez les comits du dépôt npm d'isaacs.
curl -i "https://api.github.com/repos/isaacs/npm/commits?access_token={access_token}" > npm
Découpez la partie du corps de la réponse et analysez json pour vérifier le contenu.
cat npm | python -mjson.tool
Perth est bien fait. Vérifiez donc s'il existe une clé de validation.
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])
Je vais alimenter le fichier que je n'ai eu aucun problème avec l'analyse plus tôt.
./verify.py npm
Quand je l'ai retourné, 3 cas sur 30, le résultat était qu'il n'y avait pas de committer. (Ignorer Page Nation etc.)
............…..
commiter is None: 4638a792fda9a322c4084a46728ebcc9cdab0036
commiter is None: e9e1db1cafcc7e311ddbd8137ae3b74857768469
.
commiter is None: 94de57821d58f3e36a9747f0212f9d4545a896e7
Comme test, vérifions e9e1db1
.
https://api.github.com/repos/isaacs/npm/commits/e9e1db1cafcc7e311ddbd8137ae3b74857768469
committer: nul.
Je me demande pourquoi, vérifiez le contenu du commit à partir du journal git.
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
Jetons un coup d'œil à la Pull Request basée sur le journal de validation ...
https://github.com/isaacs/npm/pull/3100
C'était dans Pull Request. Vérifiez le contenu des autres journaux de validation qui sont `` committer: null ''.
https://api.github.com/repos/isaacs/npm/commits/4638a792fda9a322c4084a46728ebcc9cdab0036
Recherchez Pull Request. https://github.com/isaacs/npm/pull/3103 était.
https://api.github.com/repos/isaacs/npm/commits/94de57821d58f3e36a9747f0212f9d4545a896e7
Recherchez Pull Request. https://github.com/isaacs/npm/pull/3097 était.
Vérifiez le contenu de la réponse de l'API pour le contenu du commit qui était normalement engagé (je ne suis pas sûr de ce que j'ai écrit ...), pas la fusion via Pull Request.
https://api.github.com/repos/isaacs/npm/commits/4f511b99520b5fc76e6bf8e1c44bf71423fddda4
Le committer contient des informations. Si vous y réfléchissez, c'est naturel, mais en tant que réponse API, Parce qu'il n'y a aucun moyen de savoir si le validateur est nul ou non Ne vous attendez pas à ce que la réponse [: committer] vienne, utilisons la réponse [: author] ...
Recommended Posts