Как узнать новые имена, на которые были переименованы несколько репозиториев?

У меня есть приложение, которое записывает имена некоторых репозиториев GitHub в базу данных. Возьмем, к примеру, следующие 3 репозитория.

  1. https://github.com/zhangkun-Jser/react-experience
  2. https://github.com/zhangkun-Jser/vue-plug
  3. https://github.com/hsluoyz/casbin

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

  1. https://github.com/zhangkun-Jser/react-kit
  2. https://github.com/zhangkun-Jser/FE-plugs
  3. https://github.com/casbin/casbin

Я хочу написать некоторый код для активного обновления любых старых имен репо новыми именами репо в моей базе данных. Например, измените zhangkun-Jser/react-experience на zhangkun-Jser/react-kit.

Я знаю, что могу использовать GitHub V3 API для получения информации о репозитории для каждого репо, а затем получить новое имя. Но для этого требуется отправить запрос для каждого репо. Мой вопрос if there is any method to get the new names for a list of repos in one request?

Примечание. Репозитории могут принадлежать разным владельцам, как в примере.

Я пытался использовать GraphQL API v4, но не знал, как получить информацию о списке репозиториев. И API V4, похоже, не распознает старые имена. Например, если я отправлю следующий запрос:

{
  repository(owner: "zhangkun-Jser" name: "react-experience") {
    name
    id
  }
}

Ответ:

{
  "data": {
    "repository": null
  },
  "errors": [
    {
      "message": "Could not resolve to a Repository with the name 'react-experience'.",
      "type": "NOT_FOUND",
      "path": [
        "repository"
      ],
      "locations": [
        {
          "line": 2,
          "column": 3
        }
      ]
    }
  ]
}

Кто-нибудь может помочь? Спасибо.


person Yang Luo    schedule 02.01.2018    source источник


Ответы (1)


Вы можете сохранить идентификатор узла репозитория и найти узел по идентификатору:

query { 
  repository (owner:"osowskit", name:"about") { 
    id
  },
  node(id:"MDEwOlJlcG9zaXRvcnk1NjE2NzA2OQ") {
  ... on Repository {
      id,
      name,
      nameWithOwner
    }
  }
}
person osowskit    schedule 03.01.2018
comment
Допустим, я сохранил идентификаторы узлов нескольких репозиториев (от нескольких пользователей). Как запросить их последние имена в одном запросе GraphQL? Если мне нужно использовать несколько запросов, нет никакой разницы с GitHub V3 API. - person Yang Luo; 08.01.2018
comment
Прошу прощения за отсутствие этой части вопроса. Долгосрочная стратегия состоит в том, чтобы хранить идентификаторы узлов вместо имен репозиториев, чтобы избежать обнаружения изменений имен. Однако вы можете искать несколько наборов данных, используя псевдоним. ``` repo1: репозиторий (...) {}, repo2: репозиторий (...) {} ``` - person osowskit; 08.01.2018