Список всех файлов, измененных в запросе на растяжение в Git/GitHub
Есть ли способ (из командной строки) перечислить имена всех файлов, измененных в PR в Git/GitHub? Это будет использоваться для определения того, какие тесты нужно запускать в сборке Travis CI для этого PR.
CI build выполняет эти команды, прежде чем называет наш script:
git clone --depth=50 git://github.com/jekyll/jekyll.git jekyll/jekyll
cd jekyll/jekyll
git fetch origin +refs/pull/2615/merge
git checkout -qf FETCH_HEAD
Ответы
Ответ 1
В общем, вы можете перечислить файлы, измененные между любыми двумя коммитами, с помощью git diff --name-only
:
Как перечислить только имена файлов, которые изменились между двумя коммитами?
Проблема здесь, кажется, заключается в определении "базы слияния". Если все ветки начинаются с master, вы можете сделать следующее:
git --no-pager diff --name-only FETCH_HEAD $(git merge-base FETCH_HEAD master)
Это покажет вам изменения между точкой, в которой FETCH_HEAD
был разветвлен с master
до текущего FETCH_HEAD
. Я проверил это локально, и ветки PR вырезаны из master
. Я считаю, что это должно работать.
Ответ 2
Я не смог найти способ увидеть только список измененных файлов в GitHub (т.е. без diff и комментариев), но это можно сделать с помощью одной строки в консоли браузера:
Array.from(document.getElementsByClassName('js-details-target')).forEach((e) => {e.click();})
Это свернет все блоки diff, оставив только имена файлов.
Ответ 3
Поиск Google отправил меня сюда, хотя это немного другой вопрос.
Этот вопрос [подробности] имеет командную строку.
Тем не менее, мне нужен список файлов, это нормально, если я вижу в графическом интерфейсе
Здесь показан способ просмотра списка файлов в графическом интерфейсе:
-
откройте запрос на извлечение
-
перейдите на вкладку [Измененные файлы]
Разговор 0 Commits 3 [Изменен файл] 8
-
нажмите на выпадающее меню после "n файлов" в нижней строке [Files changed]
Изменения всех коммитов v... [8 файлов v]... +638 -266
(щелкните по v, выпадайте, после файлов в приведенной выше строке)
Ответ 4
Хромированная консоль...
Примечание: это сломается, если Github изменит теги/классы/идентификаторы на странице.
const fileElems = document.querySelectorAll('#files div.file-info a.link-gray-dark');
const filePaths = [];
for (let a of fileElems) {
filePaths.push(a.title);
}
const filePathsStr = filePaths.join('\n');
console.log(filePathsStr);
copy(filePathsStr);
console.log('Copied to the clipboard as well 😁');