1.SVN

1.2安装SVN
功能性的东西,没有特殊需求,就直接yum安装,不要去编译。
①检查subversion是否安装了,如果没有安装的话那么就yum安装一下
1. [root@lamber ~]# rpm -qa subversion
2. [root@lamber ~]# yum -y install subversion

补充:yum安装rpm包安装后本地不清除的方法
1. [root@lamber ~]# sed -i 's#keepcache=0#keepcache=1#g' /etc/yum.conf
2. [root@lamber ~]# grep "keepcache" /etc/yum.conf
3. keepcache=1 //rpm包下载以后不清除

1.3配置并启动SVN
建立SVN数据存储根目录(svndata)及用户、密码权限目录(svnpasswd)
当然创建这个目录并不是必须的
1. [root@lamber /]# ll /svn/
2. total 8
3. drwxr-xr-x 2 root root 4096 Jul 23 08:06 svndata
4. drwxr-xr-x 2 root root 4096 Jul 23 08:06 svnpasswd

启动SVN服务并制定服务的SVN根目录
1. [root@lamber /]# svn //如果是yum安装的话,打上svn再按两下tab就能查到
2. svn svndumpfilter svnserve svnversion
3. svnadmin svnlook svnsync
4. [root@lamber /]# svnserve --help
5. usage: svnserve [-d | -i | -t | -X] [options]
6. Valid options: //这里把常用的列出来了,如果有需要你们可以去查看
7. -d [--daemon] : daemon mode //守护进程模式
8. -r [--root] ARG : root of directory to serve //指定存储根目录
9. [mode: daemon]
10. --log-file ARG : svnserve log file
11. --pid-file ARG : write server process ID to file ARG //指定存放进程号的位置

1. [root@lamber /]# svnserve -d -r /svn/svndata/
2. [root@lamber /]# ps -ef | grep svn
3. root 30526 1 0 08:16 ? 00:00:00 svnserve -d -r /svn/svndata/
4. [root@lamber /]# netstat -lnt | grep 3690 //查看SVN端口,SVN有固定端口3690
5. tcp 0 0 0.0.0.0:3690 0.0.0.0:* LISTEN
6. [root@lamber /]# netstat -lntup | grep svn
7. tcp 0 0 0.0.0.0:3690 0.0.0.0:* LISTEN 30526/svnserve
8. [root@lamber /]# lsof -i :3690
9. COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
10. svnserve 30526 root 3u IPv4 2628099398 0t0 TCP *:svn (LISTEN)

当然上述的SVN端口你也可以自己去指定,通过--help查看使用方法,到此为止,SVN的安装就完事了
1.建立项目版本库
创建一个新的Svn项目,名字叫做sadoc。其实类似sadoc这样的项目可以创建多个,每隔一项目对应不同的代码,
这里知识创建一个项目作为演示
首先我们可以通过help来查看svn命令的用法,比如:
1. [root@lamber /]# svnadmin help
2. general usage: svnadmin SUBCOMMAND REPOS_PATH [ARGS & OPTIONS ...]
3. Type 'svnadmin help <subcommand>' for help on a specific subcommand.
4. Type 'svnadmin --version' to see the program version and FS modules.
5.
6. Available subcommands:
7. crashtest
8. create
9. deltify
10. dump
11. help (?, h)

那么,现在我要创建目录,那么我就看看svnadmin create怎么用的
1. [root@lamber /]# svnadmin help create
2. create: usage: svnadmin create REPOS_PATH
3.
4. Create a new, empty repository at REPOS_PATH.
5.
6. Valid options:
7. --bdb-txn-nosync : disable fsync at transaction commit [Berkeley DB]
8. --bdb-log-keep : disable automatic log file removal [Berkeley DB]
9. --config-dir ARG : read user configuration files from directory ARG
10. --fs-type ARG : type of repository: 'fsfs' (default) 'or 'bdb'
11. --pre-1.4-compatible : use format compatible with Subversion versions earlier than 1.4
12. --pre-1.5-compatible : use format compatible with Subversion versions earlier than 1.5
13. --pre-1.6-compatible : use format compatible with Subversion versions earlier than 1.6

查看完用法以后我们就可以开始创建新的版本库了
1. [root@lamber /]# svnadmin create /svn/svndata/sadoc //注意:这里的这个目录是不可以使用mkdir来创建的,
因为这是svn的版本库,svn要进行初始化会生成很多文件
2. [root@lamber /]# ll /svn/svndata/
3. total 4
4. drwxr-xr-x 6 root root 4096 Jul 23 08:40 sadoc
5. [root@lamber /]# tree /svn/svndata/
6. /svn/svndata/
7. └── sadoc
8. ├── conf
9. │ ├── authz
10. │ ├── passwd
11. │ └── svnserve.conf

1. 调整SVN配置文件及权限文件
进入配置文件目录查看
1. [root@lamber /]# cd /svn/svndata/sadoc/conf/
2. [root@lamber conf]# ll
3. total 12
4. -rw-r--r-- 1 root root 1080 Jul 23 08:40 authz
5. -rw-r--r-- 1 root root 309 Jul 23 08:40 passwd
6. -rw-r--r-- 1 root root 2279 Jul 23 08:40 svnserve.conf

主要有三个文件,svnserver.conf这个是主配置文件,passwd是用户和密码文件,authz这个是权限的管理文件。
svnserve.conf包含passwd和authz。
首先对配制文件进行备份,任何一步操作都有必要深思熟虑。
1. [root@lamber conf]# cp svnserve.conf svnserve.conf.backup

备份文件有助于恢复和修改后进行对比。
1. 12 anon-access = none
2. 13 auth-access = write
3. 20 password-db = /svn/svnpasswd/passwd //默认是passwd
4. 27 authz-db = /svn/svnpasswd/authz //默认是authz

使用vim打开svnserve.conf这个配置文件,使用set nu查看行号,然后把对应上面的几行改成一样的配制,
之前说过svndata和svnpasswd这两个目录的创建并不是必须的,之所以去创建这两个目录是为了方便统一管理。
(注意去掉注释以后,配置命令必须顶格写,不然可能会出现一些奇葩的问题,所以还是按照规范来比较好)
做运维务必要细心,改前备份,改后对比,检查语法,平滑重启,这些都有必要做好。
1. [root@lamber conf]# diff svnserve.conf.backup svnserve.conf
2. 12,13c12,13
3. < # anon-access = read
4. < # auth-access = write

好了,虽然我们在配置文件中把目录指定过去了,但是实际上在我们指定的目录中是没有任何文件的,因此我们要把文件模版拷过去一份。
1. [root@lamber conf]# cp passwd authz /svn/svnpasswd/
2. [root@lamber conf]# ll /svn/svnpasswd/
3. total 8
4. -rw-r--r-- 1 root root 1080 Jul 23 09:22 authz
5. -rw-r--r-- 1 root root 309 Jul 23 09:22 passwd
6. [root@lamber conf]# chmod 700 /svn/svnpasswd/*
7. [root@lamber conf]# ll /svn/svnpasswd/
8. total 8
9. -rwx------ 1 root root 1080 Jul 23 09:22 authz
10. -rwx------ 1 root root 309 Jul 23 09:22 passwd
1.为SVN版本库创建用户并授权访问指定项目版本库
那么接下来看看这俩配置文件吧。
首先看看passwd文件
1. [root@lamber svnpasswd]# vim passwd
2. ### This file is an example password file for svnserve.
3. ### Its format is similar to that of svnserve.conf. As shown in th
4. e
5. ### example below it contains one section labelled [users].
6. ### The name and password for each user follow, one account per li
7. ne.
8.
9. [users]
10. # harry = harryssecret
11. # sally = sallyssecret
12. maxiaoyu = 123456789
13. mengxiaodong = 987654321

这里我添加了两个用户,添加用户的话按照它的模版来就可以了。
提示:①等号前为SVN帐号,等号后为SVN密码,密码是明文的,注意密码权限
②更改svnserver.conf时,需要重启SVN,更改authz,passwd文件时则不需要
重启SVN命令【非必须】
1. [root@lamber svnpasswd]# pkill svnserve
2. [root@lamber svnpasswd]# ps -ef | grep svn
3. root 30646 30437 0 09:56 pts/1 00:00:00 grep svn
4. [root@lamber svnpasswd]# svnserve -d -r /svn/svndata/
5. [root@lamber svnpasswd]# ps -ef | grep svn
6. root 30648 1 0 09:56 ? 00:00:00 svnserve -d -r /svn/svndata/
7. root 30650 30437 0 09:56 pts/1 00:00:00 grep svn

1.为SVN版本库创建用户并授权访问指定项目版本库
那么接下来看看这俩配置文件吧。
首先看看passwd文件
1. [root@lamber svnpasswd]# vim passwd
2. ### This file is an example password file for svnserve.
3. ### Its format is similar to that of svnserve.conf. As shown in th
4. e
5. ### example below it contains one section labelled [users].
6. ### The name and password for each user follow, one account per li
7. ne.
8.
9. [users]
10. # harry = harryssecret
11. # sally = sallyssecret
12. maxiaoyu = 123456789
13. mengxiaodong = 987654321

这里我添加了两个用户,添加用户的话按照它的模版来就可以了。
提示:①等号前为SVN帐号,等号后为SVN密码,密码是明文的,注意密码权限
②更改svnserver.conf时,需要重启SVN,更改authz,passwd文件时则不需要
重启SVN命令【非必须】
1. [root@lamber svnpasswd]# pkill svnserve
2. [root@lamber svnpasswd]# ps -ef | grep svn
3. root 30646 30437 0 09:56 pts/1 00:00:00 grep svn
4. [root@lamber svnpasswd]# svnserve -d -r /svn/svndata/
5. [root@lamber svnpasswd]# ps -ef | grep svn
6. root 30648 1 0 09:56 ? 00:00:00 svnserve -d -r /svn/svndata/
7. root 30650 30437 0 09:56 pts/1 00:00:00 grep svn

其中,1个用户组可以包含1个或多个用户,用户间以逗号进行分隔。
版本库目录格式:
[<版本库>:/项目/目录]
@<用户组名>=<权限>
<用户名>=<权限>
其中,方框号内部分可以有多种写法:
[/],表示根目录及以下,根目录是svnserve启动时指定的,我们指定为/svn/svndata,[/]就是表示对全部版本库设置权限
[repos:/],表示对版本库repos设置权限;
[repos:/sadoc],表示对版本库repos中的sadoc项目设置权限;
[repos:/sadoc/lamber],表示对版本库repos中的sadoc项目的lamber目录设置权限;
权限主体可以是用户组、用户或者是*,用户组在前面添加@,*表示全部用户。
权限可以是w、r、wr和空,空表示没有任何权限。
authz中的每个参数都要顶格写,开头不能有空格。对于组,要以@开头,用户则不需要

[root@lamber svnpasswd]# vim authz
1. ziyuanzu = maxiaoyu,mengxiaodong
2.
3. [sadoc:/]
4. @ziyuanzu = rw
5. # maxiaoyu = rw
6. # mengxiaodong =r
7. "authz" 38L, 1173C written
①首先安装好以后,先创建一个文件夹,这时你去在文件夹下右键直接点击check out,之后他会要求你去输入相关的地址,
我们这里使用的就是:svn://我的服务器IP/sadoc(这里是库名)
②输入完成以后会要求你输入用户名密码,这里就把咱们之前在配置文件中定义的用户名和密码输入进去吧。

③这样就算是操作成功了,那么我向这个同步文件夹里放一点东西,然后再文件夹图标上右键点击SVN commit,会看到文件在刷刷的同步!

④同步完成以后,我们可以直接再本地查看是否已经正常同步到服务器,本地同步文件夹右击,选择TortoiseSVN→Repo Browser即可查看!

每回使用的时候先SVN Update一下。确保你的内容是最新的
在windows里面,SVN有一个缺省目录:%APPDATA%\Subversion\auth的三个子目录内保存认证信息:
①svn.simple:包含基本认证方式所需要的认证信息,密码通过Wincrypt API加密。不是文本的形式。
②svn.ssl.server:包含SSL服务器证书
③svn.username:包含用户名认证的认证信息(不需要提供密码)

进度会话框使用颜色来高亮显示标识不同的提交行为:
蓝色→提交一个修改
紫色→提交一个新增项
深红→提交一个删除或是替换
黑色→所有其他项
这些都是默认设置,我们都可以自定义

删除文件:直接再本地删除然后commit就ok
查看历史版本:右击同步文件夹→show log

那么如果版本库地址发生了变化该怎么更换地址呢?

右击同步文件夹→TortoiseSVN→Relocate,修改地址确认提交即可!
posted @ 2016-12-16 17:10  onlylc  阅读(91)  评论(0编辑  收藏  举报