GitHub: Как проверить, есть ли у меня текущий главный почтовый индекс? - PullRequest
0 голосов
/ 12 января 2019

Я пытаюсь проверить, есть ли у меня текущая версия главной ветки репозитория на GitHub. Я ожидал бы, что это будет работать с ETag, так что если я предоставлю последний сохраненный ETag для моего запроса и ETag будет таким же, как удаленный, тогда мне не нужно загружать его снова.

Я использую этот код для проверки:

import requests


etag_old = '"8ec0bb526b1b281a450669d79ca9ed0c7ff6b4f2"'
headers = {"If-None-Match": etag_old}

# Also doesn't work: https://codeload.github.com/Endogen/OpenCryptoBot/zip/master
response = requests.get("https://github.com/Endogen/OpenCryptoBot/archive/master.zip", headers=headers)

if response.status_code == 200:
    print(f"Status-Code: {response.status_code}")
    print(f"New ETag: {response.headers.get('ETag')}")
    print(f"History: {response.history}")
    print(f"URL: {response.url}")
else:
    # If we get status code 304, it's working
    print(f"Status-Code: {response.status_code}")

Как ни странно, это не работает. Также URL в response.url не работает. Это имеет отношение к URL, так как это работает:

import requests


etag_old = '"29b127a376b492572f7e332ba5dd38ea89d4d37c"'
headers = {"If-None-Match": etag_old}

response = requests.get("https://raw.githubusercontent.com/endogen/Telegram-Kraken-Bot/master/telegram_kraken_bot.py", headers=headers)

if response.status_code == 200:
    print(f"Status-Code: {response.status_code}")
    print(f"New ETag: {response.headers.get('ETag')}")
    print(f"History: {response.history}")
    print(f"URL: {response.url}")
else:
    # If we get status code 304, it's working
    print(f"Status-Code: {response.status_code}")

У меня такой вопрос: как я могу надежно проверить, есть ли у меня текущая версия главной ветки?

Я использую Python 3.7

1 Ответ

0 голосов
/ 12 января 2019

Помимо Etag, вы также можете использовать Github API для проверки информации о ветвях.

curl -i https://api.github.com/repos/Endogen/OpenCryptoBot/branches/master

И вы можете хранить и использовать хеш коммита, как Etag, чтобы решить, загружать или нет:

{
  "name": "master",
  "commit": {
    "sha": "a20434b7d213ff1321b7eaf896246dbf67b9fdbd",
    ...

Но мне интересно, разрешено ли вам запускать скрипт на python, может быть, стоит сначала установить git в свой скрипт. И если это так, то это самый безболезненный способ, и есть замечательная библиотека под названием GitPython для взаимодействия с git.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...