我是GitHub API的新手,我一直在寻找一种自动化的方式,我可以将GitHub中特定存储库的所有提交作为“本地文件”下载到我的机器中,但没有成功。GitHub API,提交为本地文件
任何意见和建议将不胜感激。
我是GitHub API的新手,我一直在寻找一种自动化的方式,我可以将GitHub中特定存储库的所有提交作为“本地文件”下载到我的机器中,但没有成功。GitHub API,提交为本地文件
任何意见和建议将不胜感激。
您可以:
?path=a/file/path
参数滤波所述提交和只得到了一个给定的file.cpp
如果您想通过Github API在012o上进行回购,您可以使用以下bash脚本迭代所有提交并将它们写入根JSON数组中的单个文件。
您可以添加自己的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”。我正在使用shell脚本来做这件事。 – Hex
如果您克隆了回购,那么该流程的一部分会将所有提交归入“本地文件”。 api返回JSON对象。仍然不知道你正在尝试做什么,为什么,或者你正在尝试用什么语言来实现这个目标。 – peinearydevelopment