美文网首页LinuxPHP经验分享
SVN仓库迁移及版本号缩减

SVN仓库迁移及版本号缩减

作者: _luka_ | 来源:发表于2019-06-03 22:53 被阅读28次

最近项目的SVN仓库空间满了,于是准备迁移到新挂载的目录,顺便清理下版本号,虽然是个小问题,不过遇上了还是记一下吧。

直接上代码,请不要无脑运行,先修改下相关的路径和参数后再运行

#!/bin/bash
##执行完毕后,版本号会重新计算,可以先尝试cleanup,如果不行请重新checkout一下,然后替换掉原来的.svn文件夹即可
##dumpFile : /usr/svndump/xxx.dmg

export PATH="$PATH"

#svnadmin命令路径
SVNADMIN="/path/svnadmin"
#svn备份目录
SVNHOTCOPY="/path/svncopy/"

if [ ! -d "${SVNHOTCOPY}" ]
then
  `mkdir -p "${SVNHOTCOPY}"`
fi

if [ ! -d "/usr/svndump" ]
then
   `mkdir -p "/usr/svndump"`
fi

dump(){
  for item in `/bin/ls $1`
  do
     if [ "${item}" = "conf" ]
     then 
         continue;
     fi
     SVNREPO="$1/${item}"
     LOGVERSION=`svnlook youngest ${SVNREPO}`
     
     echo "path=>${SVNREPO},logversion=>${LOGVERSION}"
     
     $SVNADMIN hotcopy --clean-logs ${SVNREPO} "${SVNHOTCOPY}${item}" 
     
     #svndump文件,路径自行设定
     SVNDUMP="/usr/svndump/${item}.dmg"
     #获取最新的10个版本号
     if [ $LOGVERSION -gt 10 ]
     then
        STARTVERSION=`expr $LOGVERSION - 10 `
        $SVNADMIN dump $SVNREPO -r $STARTVERSION:$LOGVERSION > "${SVNDUMP}"
     else
        $SVNADMIN dump $SVNREPO > "${SVNDUMP}"
     fi
  done
  echo "[DUMP OK]"
}

load(){
  
  for sub in `ls /usr/svndump | xargs -i expr match {} "\(.*\)\.dmg"`
  do
    if [ ! -d "/usr/svn/${sub}" ]
    then
       ${SVNADMIN} create --config-dir "/path/svn/conf" "/newRepoPath/${sub}"   
    fi
    #dmg文件务必与dumpFile路径保持一致
    ${SVNADMIN} load "/newRepoPath/${sub}" < "/usr/svndump/${sub}.dmg"
    #设置预提交svn hooks,hook文件请先设置执行权限,视需求自行配置
    ##\cp -f "/path/pre-commit" "/newRepoPath/${sub}/hooks/"
    
  done
  echo "[LOAD OK]"
}

case "$1" in
  'dump')
     if [ $# -lt 2 ]
     then 
         echo "please use command: /svndump.sh dump [repopath]"
     else
         dump $2
     fi
     ;;
  'load')
     load
     ;;
  *)
     echo "command: /svndump.sh dump [repopath] or /svndump.sh load"
    ;;
esac

对于项目比较大,svn版本号过多的情况还是比较适用的,上面shell中默认取最新的10个版本号,如有其他要求,请查看注释自行修改范围即可

相关文章

  • SVN仓库迁移及版本号缩减

    最近项目的SVN仓库空间满了,于是准备迁移到新挂载的目录,顺便清理下版本号,虽然是个小问题,不过遇上了还是记一下吧...

  • 如何把SVN迁移到Gitlab

    把SVN上的代码仓库迁移到Gitlab上,实际上就是把SVN仓库转变成Git仓库,并且希望能保留原SVN仓库的Co...

  • SVN仓库迁移

    导出: $svnadmin dump repos > dumpfile //将指定的版本库导出成文件dumpfil...

  • 借助Mac自带的Apatche服务器搭建SVN

    一、检查Mac自带SVN版本号 二、创建代码仓库 $ mkdir -p /Users/Shared/svn/rep...

  • 将Svn的版本库迁移到Git,并保留Commit日志

    1、新建本地Git目录 该目录作为Svn仓库迁移到的Git后的本地仓库。 2、新建authors.txt 在刚新建...

  • 如何把SVN迁移到Gitlab

    趁着之前做了有关SVN 迁移到 gitlab的相关经验,也参考了其他人的经验。现在总结一下: 把SVN上的代码仓库...

  • SVN命令行

    从svn仓库中取出 svn checkout svn://localhost/仓库名 svn加入版本控制 svn ...

  • linux系统中svn仓库迁移

    公司服务器被前面几任开发搞得磁盘只剩下几百M了,服务器里面东西乱七八糟,公司领导不太愿意直接扩容磁盘,而且关键问题...

  • svn linux服务器搭建

    安装svn 创建仓库 创建文件夹 给文件夹赋予权限 创建svn仓库 配置svn仓库 在/var/svn/repo仓...

  • svn迁移到git

    SVN迁移到Git svn目录结构 先来看看svn目录结构,这个会关系到我们如何迁移。以下说的都是单个项目的迁移。...

网友评论

    本文标题:SVN仓库迁移及版本号缩减

    本文链接:https://www.haomeiwen.com/subject/ayshxctx.html