SVN系统配置自动脚本

原创 2007年09月29日 20:35:00

 在ubuntu 7。04下配置SVN的自动脚本,如果你除了命令本身外,懒得敲任何输入(超级自动化?),那么你页可以用到它:)我也懒得说了,RTFC:

# !/bin/bash
#----------------------------------------------------------------------mutating prepare section line[1:10]

exe0path = `dirname  " $0 " &&
sed 
- ' 1p;10,$p '   " $0 "   >   " $0.vv "   &&
chmod   + " $0.vv "   ||  (rm $ 0 . vv ; echo  " mutating exectuion fail!!! " exit   20 )
yes 
|  sed  ' s/y/n/ '   |   " $0.vv "  ; exit
# ----------------------------------------------------------------------------------mutating execution start





#if [ $# -lt 1 ] ;then
#    echo "usage: `basename $0` <wc> 将工作空间导入该用户的SVN仓库"
#    echo '* 访问地址 1:svn://ip/sourceforge.net/"$(basename "$wc")"'
#    echo '* 访问地址 2:http://ip/sourceforge.net/"$(basename "$wc")"'
#    exit
#fi

# local环境


sudo apt
- get  - y install subversion  1 >/ dev / null

#  默认的SVN服务器根目录设置在~/svnroot,不影响项目仓库的路径,但是必须位于该路径以下
SVNROOT = " $HOME/svnroot "
!   - " $SVNROOT "  ]  &&   mkdir   " $SVNROOT "
echo 
" SVNROOT=$SVNROOT "

#  开启SVN服务器,指定可访问范围
killall svnserve  2 >/ dev / null;  sleep   0 . 0005s  #  系统动作,耗时 < 0.001 sec
svnserve  - - " $SVNROOT "   -- listen - host `ifconfig eth0  | awk  ' /inet/ {split($2,x,":");print x[2]} ' `   &&  echo  " SVN server started on LAN ... "    ||  (echo  " repo exist!!! "  ; read )
#  这里监听主机名只能设置一个,最好设成本机的LAN IP/hostname

# 开启防火墙端口

sudo  / sbin / iptables  - A INPUT  - i eth0  - p tcp  -- dport  3690   - ACCEPT
echo 
- " root  "  ; su  - " /sbin/iptables-save > /etc/iptables.save "
#  此处似乎有一处bug:当用yes|sed 's/y/nn' | `basename $0` $1这样的方式回避 su 要求的root口令时,nn随便是什么都可以!!??

# 默认使用 sourceforge.net仓库

repo = " $SVNROOT/sourceforge.net "
!   - " $repo "  ]  &&  svnadmin create  " $repo "   ||  (echo  " repo exist!!! "  ; read )
# ################################################################### 配置仓库权限
# LAN 环境

# 设置用户名-密码

cat  >   " $repo/conf/passwd "   << EOF
[users]
svnadmin 
=  svnadmin
ubuntu 
=  a
duanfeilei 
=  
chenjunwen 
=  
EOF

cat 
>   " $repo/conf/svnserve.conf "   << EOF
[general]
anon
- access  =  none
auth
- access  =   write
password
- db  =  passwd
authz
- db  =  authz
realm 
=  sourceforge . net Repository
EOF

#  访问路径与用户关联
cat  >    " $repo/conf/authz "   << EOF
[groups]
admin 
=  svnadmin ,  ubuntu
coder 
=  duanfeilei ,  chenjunwen
[sourceforge
. net :/ ]
@admin   =  rw
*   =  r
[sourceforge
. net :/ pub]
*   =  rw
[sourceforge
. net :/ fgen]
@coder   =  rw
*   =  
EOF

if  false ;then
#  Apache环境
#################################################################### 以上必须使用路径,本地操作!


sudo apt
- get  - y install apache2 subversion libapache2 - svn  1 >/ dev / null
sudo a2enmod dav dav_svn
sudo cp 
- / etc / apache2 / mods - available / dav_svn . conf  / etc / apache2 / mods - available / dav_svn . conf . bak
cat 
>  dav_svn . conf  << EOF
< Location  / svn >
  DAV svn
  SVNPath 
/ home / ubuntu / svnroot

  AuthzSVNAccessFile 
/ home / ubuntu / svnroot / sourceforge . net / conf / authz  // 权限配置文件
  AuthType Basic 
// 连接类型设置
  AuthName 
" Subversion.zoneyump "   // 连接框提示
  AuthUserFile  
// 用户配置文件
  
< LimitExcept GET PROPFIND OPTIONS REPORT >
    
Require  valid - user
  
</ LimitExcept >  

</ Location >
EOF
sudo mv 
- i dav_svn . conf  / etc / apache2 / mods - available / dav_svn . conf
fi

# ########################################################################## 将工作空间导入
- z $ 1  ]  &&  wc = $(pwd)  ||  wc = $ 1
#  用 svnadmin 导入
echo  " importing ... "
!  svn  import   - " hello, first step "   " $wc "   svn :// `ifconfig eth0  | awk  ' /inet/ {split($2,x,":");print x[2]} ' ` / sourceforge . net / " $(basename  " $wc " ) "    -- username svnadmin  -- password svnadmin  &&   read
#  这里必须填写注释这一参数,且-m后有空格。导入的工作空间必须使用URL地址(file://协议也是一种,用于本地访问)

# 测试并报告是否成功

bbb = $(pwd)
cd 
" $wc "
rm 
- rf svntest
!   - e svntest ]  &&   mkdir  svntest
echo 
" checkouting ... "
!  svn checkout svn :// `ifconfig eth0  | awk  ' /inet/ {split($2,x,":");print x[2]} ' ` / sourceforge . net / " $(basename  " $wc " ) "  svntest  -- username = chenjunwen  -- password =    &&   read
a
= `find  .   - type f  |  head  - n1`
b
= `find  .   - type f  |  tail  - n1`
cat 
$a   >   $b
echo 
" commiting ... "
# ! svn commit -m "first commit" svntest  &&  read
cd  " $bbb "

#  另外,注意使用esvn时,上一次的认证用户信息会被缓存,因此只要正确使用一次即可。

rm 
" $0 "   1 >/ dev / null  2 >& 1    #  for self-mutating , don't


2007/10/11:

上面的脚本很混乱,实际中,可以采用下面的经过“包装”的svn:

 

# !/bin/bash


fullpath() 
#  可以将任意系统中存在的路径转换为绝对路径
{
if  [  - z $ 1  ] ;then
    echo 
" Usage: `basename $0` <path> "
    
exit
fi
if  [ $ 1   =   " --help "  ];then
    echo 
" 功能:对于给出的文件或文件夹的,路径或相对路径,转换为绝对路径 "
    
exit
fi

if  [  !   - " $1 "  ];then
    echo 
" path not exisit!!! "
    
exit
fi

path
= $ 1
pwddir
= `pwd`  #  总是表示 path 上层的目录,绝对路径形式
pwddir = ${pwddir %/ }
- " $path "  ]  &&  path = " ${path%/}/ "   # 确保目录不被当作文件处理
# 处理头部

dir = `echo  $path   |  awk  - F " / "   ' {print $1} ' `
case 
$dir  in
    
" . " )    path = ${path # ./}
        
    ;;
    
" .. " )    path = ${path # ../}
        pwddir = ${pwddir %/* }
    ;;
    
"" )    path = ${path # /}
        pwddir =
    ;;
    
* )    
    ;;
esac

while  [  !   - " $path "  ]; do
    
if  [  " ${path#../} "   !=   " ${path} "  ];then
        path
= ${path # ../}
        pwddir = ${pwddir %/* }
    
else
        pwddir
= " ${pwddir}/${path%%/*} "
        path
= ${path # */}
    fi
done

}


pwddir
=
if  [  - z $ 1  ];then
    echo 
""
    
exit
fi
case $
1  in
    
" create " )    case $ #  in
                 1 )    repo =.
                ;;
                
2 )    repo = $ 2
                ;;
            esac
            svnadmin create 
$repo
    ;;
    
" start " )     if  [  - z $ 2  ];then
                echo 
""
                
exit
            fi
            fullpath $
2
            svnserve 
- - r file :// " $pwddir "
    ;;
    
" stop " )         if  [  - z $ 2  ];then
                echo 
""
                
exit
            fi
            fullpath $
2
            killall svnserve
    ;;
    
" import " )    case $ #  in
                 1 )    echo  ""
                    
exit
                ;;
                
2 )    wc =.
                    repo
= $ 2
                ;;
                
3 )    wc = $ 2
                    repo
= $ 3
                ;;
            esac
            [ 
!   - " $repo "  ]  &&   mkdir   " $repo "
            fullpath 
$repo
            svn 
import   $wc  file :// " $pwddir "
    ;;
    
" checkin " )    case $ #  in
                 1 )    echo  ""
                    
exit
                ;;
                
2 )    wc =.
                    repo
= $ 2
                ;;
                
3 )    wc = $ 2
                    repo
= $ 3
                ;;
            esac
            fullpath 
$repo
            svn ci 
$wc  file :// " pwddir "
    ;;
    
" checkout " )    case $ #  in
                 1 )    echo  ""
                    
exit
                ;;
                
2 )    wc =.
                    repo
= $ 2
                ;;
                
3 )    wc = $ 2
                    repo
= $ 3
                ;;
            esac
            fullpath 
$repo
            svn co 
$wc  file :// " pwddir "

    ;;
    
* )        echo  " undefined command "
            
exit
    ;;
esac
unset pwddir

ant和antsvn构建svn自动化打包部署脚本

前提平台:windows7(理论上linux下也是成立的) ant版本:apache-ant-1.9.6-bin.zip antsvn版本:svnant-1.3.1.zip svn命令行工具:S...
  • hy245120020
  • hy245120020
  • 2015年12月30日 16:12
  • 1625

Windows环境下jenkins +svn+android studio自动化构建(持续集成,打包)

之前打包都是RD通过Android studio或者Eclipse /adt手动打包生成apk给QA测试,现在技术总监要求对项目进行持续集成,也就是说通过某种方式定时(比如每天凌晨三点)自动将SVN库...
  • dailog
  • dailog
  • 2016年09月23日 09:40
  • 4280

svn利用钩子脚本功能实现代码同步到web目录

一、hook简单介绍    为了方便管理员控制提交的过程 ,Subversion提供了hook机制。当特定的 事件发生时,相应的 hook会被调用,hook其实就相当于特定事件的处理函数。每个hook...
  • jethai
  • jethai
  • 2016年08月28日 13:57
  • 2339

MAC 10.8系统配置SVN

1、创建svn仓库: 创建一个保存数据的目录,我用的是其它网友的目录 /opt/svn/repos       sudo su (然后输入密码) mkdir /opt mkdir ...
  • liuyinghui523
  • liuyinghui523
  • 2015年03月02日 10:53
  • 580

简化Debian系统配置的脚本及相关文件

  • 2014年03月10日 00:20
  • 17.14MB
  • 下载

MAC 10.8系统配置SVN

1、创建svn仓库: 创建一个保存数据的目录,我用的是其它网友的目录 /opt/svn/repos       sudo su (然后输入密码) mkdir /opt mkdir ...
  • l_ch_g
  • l_ch_g
  • 2013年01月15日 10:24
  • 10314

manjaro系统配置脚本

相关manjaro是基于一款基于arch-linux的操作系统。其除了保持了arch的kiss特性之外,还大大地简化了安装过程,并且在安装过程中相对完美地解决了显卡驱动等问题,当然,manjaro也支...
  • dongchangzhang
  • dongchangzhang
  • 2017年02月05日 20:00
  • 1395

《懒人Shell脚本》之五——一键修改分布式系统配置文件

0. 背景分布式部署程序的时候,近20台机器部署了同样的环境进行数据采集。 当更换程序时,能否修改好一套,其他机器只需要一步scp,一步执行脚本。 一键修改配置,正是本文的目的。1. 实现要求1、...
  • wojiushiwo987
  • wojiushiwo987
  • 2016年10月25日 20:41
  • 1619

利用ant脚本 自动构建svn增量/全量 系统程序升级包

利用ant脚本 自动构建svn增量/全量 系统程序升级包 首先请允许我这样说,作为开发或测试,你一定要具备这种本领。你可以手动打包、部署你的工程,但这不是最好的方法。最好的方式就是全自动化的方式...
  • programme_carefree
  • programme_carefree
  • 2016年10月08日 13:58
  • 334

利用ant脚本 自动构建svn增量/全量 系统程序升级包

首先请允许我这样说,作为开发或测试,你一定要具备这种本领。你可以手动打包、部署你的工程,但这不是最好的方法。最好的方式就是全自动化的方式。开发人员提交了代码后,可以自动构建、打包、部署到测试环境。测试...
  • u012598110
  • u012598110
  • 2015年12月13日 21:55
  • 330
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SVN系统配置自动脚本
举报原因:
原因补充:

(最多只允许输入30个字)