Вопрос или проблема
У меня есть проект, размещенный на GitHub. В моем репозитории отключена возможность отправки изменений в ветку main
, только запросы на извлечение могут быть объединены с main
. У меня есть требование определить, какой PR в последний раз добавил/обновил/удалил файл, находящийся в репозитории. Я не нахожу GitHub API для этого. Есть ли способ?
Ответ или решение
Чтобы найти, какой пулл-реквест (PR) в последний раз изменял файл в репозитории на GitHub, вы можете воспользоваться несколькими методами. Учитывая, что в вашем репозитории отключена возможность прямого пуша в ветку main
, и все изменения идут через PR, это делает задачу более целенаправленной. Ниже я представлю несколько шагов и подходов, которые помогут вам найти необходимую информацию.
1. Использование GitHub API
Хотя вы упомянули, что не нашли соответствующий API, действительно есть способ воспользоваться GitHub API для получения информации о пулл-реквестах. Процесс будет следующим:
-
Получите список всех пулл-реквестов:
Вы можете использовать следующий API-запрос для получения всех открытых и закрытых PR для вашего репозитория:GET https://api.github.com/repos/{owner}/{repo}/pulls?state=all
Замените
{owner}
на имя владельца репозитория, а{repo}
— на имя репозитория. -
Проверка изменений для каждого PR:
Для каждого полученного PR сделайте запрос, чтобы получить файлы, изменённые в этом пулл-реквесте:GET https://api.github.com/repos/{owner}/{repo}/pulls/{pull_number}/files
Здесь
{pull_number}
— это ID пулл-реквеста. В результате вы получите список файлов, которые были добавлены, изменены или удалены в этом PR. -
Поиск нужного файла:
В списке возвращаемых файлов ищите нужный файл. Если вы нашли файл в списке, сохраните номер PR как последний, который изменял данный файл.
2. Использование интерфейса GitHub
Если вы предпочитаете не использовать API, вы можете найти нужный пулл-реквест через веб-интерфейс GitHub:
- Перейдите на страницу вашего репозитория и выберите вкладку Pull requests.
- Фильтруйте пулл-реквесты по состоянию (например, "Closed" или "Merged") и смотрите на заголовки и описание, чтобы понять, какой PR мог касаться нужного файла.
- Откройте пулл-реквесты по одному и проверьте вкладку Files changed для каждого PR, чтобы увидеть, какие файлы были изменены.
3. Использование командной строки
Если вы работаете с локальным клонированием репозитория, вы можете также использовать Git для проверки истории изменений:
-
Перейдите в каталог вашего репозитория.
-
Выполните следующую команду для проверки истории изменений файла:
git log --follow -- path/to/your/file
Добавление
--follow
помогает проследить изменения файла даже если он переименовывался. -
Последний коммит в выводе будет содержать информацию о PR, через который файл был изменён. Для этого вы можете использовать
git show <commit_id>
и проверить сообщение коммита, которое может содержать ссылку на PR.
Заключение
Используя предложенные методы, вы сможете точно определить, какой пулл-реквест последний раз изменял нужный файл в вашем репозитории на GitHub. API предлагает наиболее автоматизированный способ, в то время как интерфейс и командная строка могут быть полезны, если вы предпочитаете больше ручного контроля. Надеюсь, это поможет вам в вашей работе!