昨晚想下载一个人github上面的所有 Repositories。但是他的 Repositories有点多,感觉有点麻烦,就写了下面這個简单的小脚本。
可以下载一个或多个用户的所有Repositories, 使用方法:
./get_all_repos.sh username1 username2 ..
get_all_repos.sh 内容:
#/usr/bin/sh
git_host="https://github.com"
tmp_log="tmp_repos.log"
function gitclone()
{
username=$1
mkdir -p $username
echo "----------STARTING CLONE, USERNAME : $username ----------"
curl $git_host/$username?tab=repositories |grep href |grep $username|grep -v Stargazers |grep -v title= > $tmp_log
num=`grep -n class=\"follow\" $tmp_log |awk -F':' '{print $1}'`
awk -F'"' 'NR>'$num'{print $2}' tmp_repos.log |while read line; do
echo "Starting Get " $git_host$line
if [ -d .$line ];then
echo ".$line allready exist, run fetch"
cd .$line
git fetch
cd ../..
else
git clone $git_host$line .$line
fi
done
rm -vf $tmp_log
echo "----------END CLONE, USERNAME : $username----------"
}
if [ $# = 0 ] ; then
echo "Usage : ./get_all_repos.sh username1 username2 .."
else
for i in "$@"
do
gitclone $i
done
fi
欢迎告诉我更好的方法。