#更改主机名

sed -i '2d' /etc/sysconfig/network

sed -i '1a HOSTNAME=svn' /etc/sysconfig/network 


#安装svn

yum -y install subversion


#yum安装rpm包安装后本地不清楚的方法

sed -i 's#keepcache=0#keepcache=1#g' /etc/yum.conf  #rpm包下载不清除


#可以查看svnserver命令帮助,了解相关参数

#svnserve --help  

#用法: svnserve [-d | -i | -t | -X] [options]


#有效选项: 

#  -d [--daemon]            : 后台模式

#  -r [--root] ARG          : 服务的根目录

#  --pid-file ARG           : 写进程 PID 到文件 ARG



#配置并启动svn

#建立svn版本库数据存储根目录(svndata)及用户、密码权限目录(svnpasswd)

mkdir -p /usr/local/svn

mkdir -p /usr/local/svn/svndata       

mkdir -p /usr/local/svn/svnpasswd     

svnserve -d -r /usr/local/svn/svndata

#ps -elf | grep svn

#netstat -tulnp | grep 3690

#lsof -i :3690


#建立项目版本库

#创建一个新的Subverion项目sadoc,其实,类似sadoc这样的项目可以创建多个,每个项目对应不同的代码,这里只是以创建一个项目为例演示:

#svnadmin help

#svnadmin help create

svnadmin create /usr/local/svn/svndata/sadoc

#tree /usr/local/svn/svndata/sadoc


#调整svn配置文件及权限文件

#配置允许用户wsyht读写访问

cd /usr/local/svn/svndata/sadoc/conf/

/bin/cp svnserve.conf svnserve.conf.$(date +%F)

sed -i '11a anon-access = none' svnserve.conf

sed -i '13a auth-access = write' svnserve.conf

sed -i '22a password-db = /usr/local/svn/svnpasswd/passwd' svnserve.conf

sed -i '30a authz-db = /usr/local/svn/svnpasswd/authz' svnserve.conf

#diff svnserve.conf svnserve.conf.2015-12-31

#egrep "\-access|\-db" svnserve.conf

cp passwd authz /usr/local/svn/svnpasswd/

chmod 700 /usr/local/svn/svnpasswd/*

sed -i '8a wsyht = wsyht123' /usr/local/svn/svnpasswd/passwd

sed -i '8a peter = peter123' /usr/local/svn/svnpasswd/passwd

sed -i '8a jack = jack123' /usr/local/svn/svnpasswd/passwd

sed -i '8a docker = docker123' /usr/local/svn/svnpasswd/passwd

#提示

#1、等号前为svn账号,等号后为svn密码,密码是明文的,注意密码权限

#2、更改svnserve.conf时,需要重起svn,更改authz,passwd文件时不需要重起svn服务

sed -i '32a sagroup = jack,docker' /usr/local/svn/svnpasswd/authz

sed -i '33a [sadoc:/]' /usr/local/svn/svnpasswd/authz

sed -i '34a wsyht = rw' /usr/local/svn/svnpasswd/authz

sed -i '35a peter = r' /usr/local/svn/svnpasswd/authz

sed -i '36a @sagroup =r' /usr/local/svn/svnpasswd/authz


#注意:

# * 权限配置文件中出现的用户名必须已在用户配置文件中定义

# * 对权限配置文件的修改立即生效,不必重启svn

#用户组格式:

#[groups]

#= ,

#其中,1个用户组可以包含1个或多个用户,用户间以逗号分隔

##版本库目录格式:

#[<版本库>:/项目/目录]        

#@<用户组名> = <权限>

#<用户名> = <权限>

#其中,方框号内部可以有多种写法:

#[/],表示根目录及以下,根目录是svnserve启动时指定的,我们指定为/usr/local/svn/svndata,[/]就是表示对全部版本库设置权限

#[repos:/]表示对版本库repos设置权限;

#[repos:/sadoc]表示对版本库repos中的sadoc项目设置权限;

#[repos:/sadoc/wsyht]表示对版本库中的sadoc项目的wsyht目录设置权限;

#权权限主体可以是用户组、用户或*,用户组在前面加@,*表示全部用户

#权限可以是w、r、wr和空,空表示没有任何权限

#authz中每个参数都要顶格写,开头不能有空格

#对于组,要以@开头,用户不需要@开头。


#重启svn 

#kill -USR1 `cat/usr/local/svn/svndata/svn.pid`

#svnserve -d -r /usr/local/svn/svndata --pid-file=/usr/local/svn/svndata/svn.pid

pkill svnserve

svnserve -d -r /usr/local/svn/svndata

#ps -ef | grep svn


#客户端软件TortoiseSVN

#进入:

#thunder://QUFodHRwOi8veGlhemFpLnhpYXphaWJhLmNvbS9Tb2Z0L1QvVG9ydG9pc2VTVk5fMS45LjEuMjY3X3g2NF9YaWFaYWlCYS56aXBaWg==

#安装过程,一路向北

#SVN客户端连接服务器的方式,账号及密码:

#svn://192.168.1.106/sadoc

#用户名:wsyht 

#密码:wsyht123


#linux命令行用法

法1

#mkdir /svndata

#svn co svn://192.168.1.106/sadoc /svndata --username=wsyht --password=wsyht123  #co下载更新

#svn update /svndata --username=wsyht --password=wsyht123  #第二次下载不用输入ip,直接update,先co再update

法2 ->下载到本地

#cd /svndata

#svn co file:///usr/local/svndata/sadoc


查看版本库下的内容

#svn ls svn://192.168.1.106/sadoc --username=wsyht --password=wsyht123

#svn list svn://192.168.1.106/sadoc --username=wsyht --password=wsyht123

#svn ls svn://192.168.1.106/sadoc --username=wsyht --password=wsyht123 --verbose

#svn ls file:///usr/local/svn/svndata/sadoc

#svn list file:///usr/local/svn/svndata/sadoc


#从Linux服务器本地提交数据到SVN

#cd /usr/local/svn/svndata/

#touch {a..g}

#svn add a b c d e f g 

#svn ci -m "svn ci data" #提交数数


#导入svn原始目录

#/cd /usr/local/svn/svndata

#mkdir -p /svn/trunk /svn/branch /svn/tag

#svn import /svn file:///usr/local/svn/svndata/sadoc -m "import"


#svn copy命令

#svn copy svn://192.168.1.106/sadoc/trunk svn://192.168.1.106/sadoc/branch/branch_cms_110329 -m "create a branch by wsyht modifiy" --username=wsyht --password=wsyht123