svn同步到git

开发的代码放在svn,但是svn推送分支的代价太高了,每个分支目录都是一次全拷贝,所以写了个脚本把svn分支转化为git分支,然后用git发布。

#!/bin/bash
name=$1
version=$2
svnurl=https://svnserver/svn/source/${name}/branches/${version}/
giturl=ssh://git@gitserver/group/${name}.git

gittmp=/data/git
mkdir -p ${gittmp}
svnsrc=/data/svntogit/${name}/${version}/
gitsrc=${gittmp}/${name}

if [ ! -d $svnsrc ];then
    mkdir -p $svnsrc
    cd $svnsrc
    svn co $svnurl  .
else
    cd $svnsrc
    svn co $svnurl .
fi
cd $gittmp
if [ ! -d ${gitsrc}/.git ];then
    rm -rf ${gitsrc}
    git clone $giturl
    cd ${gitsrc}
    git config --global core.autocrlf false
    git config --global core.safecrlf false
    git config core.autocrlf false
    git config core.safecrlf false
else
    cd ${name}
    git pull
fi

cd /data/svntogit
cd $name
cd ${version}
rsync -a --delete ${svnsrc}/ --exclude=.git ${gitsrc}/
cd ${gitsrc}
git add --all .
git commit -a -m "new tag $version"
git push origin master
branch=$(git branch | grep b_${version})
if [ -n "$branch" ]; then
    git branch -d b_${version}
fi
git checkout -b b_${version}
git push origin b_${version}
git checkout master
tag=$(git tag | grep t_${version})
if [ -n "$tag" ]; then
    echo echo "exits"
else
    git tag t_${version}
    git push origin t_${version}
fi
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容