十月 20, 2009

Mirror GCC repository friendly

GCC使用Subversion管理源代码,如果想做一个镜像的话,git svn是一个方法。然而GCC这么古老的项目,svn版本号已经是15万级别,做一次完整的镜像可能对服务器的负载造成一定影响,友善一点的方法就是一次只拿一小部分版本信息,然后等待一段时间,再继续下去。还有就是只取trunk的代码,忽略branch和tag。下面的bash脚本每次取5000个版本,然后休息50分钟。克隆完成之后别忘了再rebase一下,因为workspace里面的内容只是第一次fetch的结果。

#!/bin/bash

set -o verbose

SVN_HEAD_REV=$1
if [ $SVN_HEAD_REV -le 5000 ]
then
    echo "svn revision number must be at lease 5001."
    exit 1
fi

git svn init http://gcc.gnu.org/svn/gcc -T trunk

for ((i=5000; i < $SVN_HEAD_REV; i+=5000))
do
    echo "git svn fetch -r $(( $i-4999 )):$i"
    git svn fetch -r $(( $i-4999 )):$i || exit 2
    sleep 50m
done

if [ $(( $i-4999 )) -lt $SVN_HEAD_REV ]
then
    echo "git svn fetch -r $(( $i-4999 )):$SVN_HEAD_REV"
    git svn fetch -r $(( $i-4999 )):$SVN_HEAD_REV
fi

5 条评论:

时间 3:46 下午 , Blogger jie 说...

你可以用gcc的git repository

git://gcc.gnu.org/git/gcc.git

 
时间 8:57 上午 , Blogger netcasper 说...

谢谢,可惜无法使用git协议,过不了公司的防火墙。

 
时间 6:11 下午 , Blogger jie 说...

如果你有gcc帐号的话,可以用

sshproxy.sourceware.org

端口是443。

 
时间 11:08 上午 , Blogger netcasper 说...

这个proxy前两天刚刚看到,很强大啊!

可惜我没有GCC帐号。:-(

 
时间 2:51 下午 , Blogger cordic 说...

 

发表评论

指向此帖子的链接:

创建链接

<< 主页