저는 GitHub API에 초보자입니다. GitHub의 특정 저장소에 대한 모든 커밋을 내 컴퓨터에 "로컬 파일"로 다운로드 할 수있는 자동화 된 방법을 찾고 있었지만 성공하지 못했습니다 .GitHub API는 로컬 파일로 커밋을 가져옵니다.
모든 조언과 제안을 주시면 감사하겠습니다.
저는 GitHub API에 초보자입니다. GitHub의 특정 저장소에 대한 모든 커밋을 내 컴퓨터에 "로컬 파일"로 다운로드 할 수있는 자동화 된 방법을 찾고 있었지만 성공하지 못했습니다 .GitHub API는 로컬 파일로 커밋을 가져옵니다.
모든 조언과 제안을 주시면 감사하겠습니다.
다음 중 하나를 수행 할 수 있습니다
?path=a/file/path
인수를 사용하여 만 주어진 file.cpp
Github API를 통해 repo에 list the commits을 넣으려면 모든 커밋을 반복하고 루트 JSON 배열의 단일 파일에 쓰는 bash 스크립트를 사용할 수 있습니다.
당신은 당신이 다른 어떤 특정 필드를 선택하거나 필터링하려면 자신의 jq
필터를 추가 할 수 있습니다
#!/bin/bash
# change those vars :
GITHUB_USER=google
GITHUB_REPO=gson
OUTPUT_FILE=commit_list.json
GITHUB_ACCESS_TOKEN=123456789
loop=0
index=1
TMP_FILE=tmpfile.txt
PER_PAGE=100
rm -f $TMP_FILE
echo "[]" > $OUTPUT_FILE
while [ "$loop" -ne 1 ]
do
URI="https://api.github.com/repos/$GITHUB_USER/$GITHUB_REPO/commits?page=$index&per_page=$PER_PAGE&access_token=$GITHUB_ACCESS_TOKEN"
data=`curl -s $URI`
# add some filter here if needed (for instance `echo "$data" | jq '[ .[].commit ]`)
filtered=`echo "$data"`
check=`echo "$filtered" | jq 'if (type=="array" and length>0) then "continue" else "stop" end'`
if [ "$check" == '"stop"' ]; then
loop=1
else
echo "$filtered" > $TMP_FILE
concat=`jq -s add $TMP_FILE $OUTPUT_FILE`
echo "$concat" > $OUTPUT_FILE
size=`jq '. | length' $OUTPUT_FILE`
echo "computed $index page - fetched total commit count of : $size"
index=$((index+1))
fi
done
출력은입니다 출력 파일 commit_list.json
에 위치 모두 배열 commit JSON object :
# jq 'length' commit_list.json
1329
"로컬 파일"이란 무엇입니까? 또한이 언어로 어떤 언어를 사용하고 싶습니까? – peinearydevelopment
필자의 컴퓨터에 커밋을 "file.cpp"로 저장하는 "로컬 파일"을 예로 들었습니다. 쉘 스크립트를 사용하여이 작업을 수행하고 있습니다. – Hex
repo를 복제하면 해당 프로세스의 일부가 모든 커밋을 '로컬 파일'로 가져옵니다. API는 JSON 객체를 반환합니다. 아직도 당신이 무엇을하려고하는지, 왜, 또는 어떤 언어를이 언어에서 성취하려고하는지 확신 할 수 없습니다. – peinearydevelopment