Wenn Sie list the commits auf einem Repo über Github API verwenden möchten, können Sie das folgende Bash-Skript verwenden, das über alle Commits iteriert und sie in eine einzige Datei in einem Stamm-JSON-Array schreibt.
Sie können Ihre eigenen jq
Filter hinzufügen, wenn Sie bestimmte Felder oder Filter etwas anderes wählen wollen:
#!/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
Dieses Skript benötigt jq und curl
Der Ausgang befindet sich in der Ausgabedatei commit_list.json
, die eine ist Array aller commit JSON object:
# jq 'length' commit_list.json
1329
Was meinst du "lokale Dateien"? Auch in welcher Sprache hoffst du das zu tun? – peinearydevelopment
Ich meinte, dass "lokale Dateien" die Commits in meiner Maschine zum Beispiel als "file.cpp" speichern. Ich mache das mit Shell-Skript. – Hex
Wenn Sie den Repo klonen, werden bei einem Teil dieses Prozesses alle Commits in Ihre 'lokalen Dateien' übernommen. Die API gibt JSON-Objekte zurück. Immer noch nicht sicher, was Sie versuchen zu tun, warum, oder welche Sprache Sie versuchen, dies zu erreichen. – peinearydevelopment