当今用于版本控制的软件程序主要的有 svn 和 git, 其它软件咱不熟悉, 今天记录下搭建 svn 服务器和 svn 客户端使用;
使用环境:
虚拟机为 centos7 系统, svn 服务器安装在 centos7 系统平台上, svn 客户端分别在 windows7 和 centos7 系统上使用;
1 安装 svn 服务器:
]# yum install subversion
2 配置 svn 服务器:
建立 svn 版本库根目录及相关目录即 svndata 及密码权限命令 svnpasswd;
]# mkdir -p /application/{svndata,svnpasswd}
svndata 目录: 作为存放 svn 的根目录;
svnpasswd 目录: 作为存放登录 svn 的用户和密码;
3 启动 svn 服务:
]# svnserve -d -r /application/svndata/
参数:
-d: 表示后台运行守护模式;
-r: 表示 svn 服务的根目录;
检测 svn 端口 3690 是否已经监听:
netstat -lntup | grep 3690
4 建立版本库:
在 / application/svndata / 目录下, 创建项目 sadoc:
]# svnadmin create /application/svndata/sadoc
会自动创建出一系列固定的目录:
- ]# tree /application/svndata/sadoc
- /application/svndata/sadoc
- conf
- ?? authz
- ?? passwd
- ?? svnserve.conf
- db
- ?? current
- ?? format
- ?? fsfs.conf
- ?? fs-type
- ?? min-unpacked-rev
- ?? revprops
- ?? ?? 0
- ?? ?? 0
- ?? revs
- ?? ?? 0
- ?? ?? 0
- ?? transactions
- ?? txn-current
- ?? txn-current-lock
- ?? txn-protorevs
- ?? uuid
- ?? write-lock
- format
- hooks
- ?? post-commit.tmpl
- ?? post-lock.tmpl
- ?? post-revprop-change.tmpl
- ?? post-unlock.tmpl
- ?? pre-commit.tmpl
- ?? pre-lock.tmpl
- ?? pre-revprop-change.tmpl
- ?? pre-unlock.tmpl
- ?? start-commit.tmpl
- locks
- ?? db.lock
- ?? db-logs.lock
- README.txt
主要目录说明:
conf 目录: 主要是配置文件登录用户密码认证;
hooks 目录: 主要是 svn 的钩子脚本模板, 使用时去掉. tmpl 后缀即可, 钩子脚本实际上就是代码提交前后, 可以分别执行的脚本, 脚本可用 perlshellpython 等语言编写, 该目录里面脚本文件名代表提交代码执行的不同时机, 如提交代码前执行的脚本 pre-commit, 提交代码后执行的脚本 post-commit, 更多详情自行学习;
5 修改配置文件:
- ]# vim /application/svndata/sadoc/conf/svnserve.conf
- anon-access = none
- #不允许匿名访问, read 为允许匿名访问;
- auth-access = write
- #允许可写;
- password-db = /application/svnpasswd/passwd
- #密码数据库
- authz-db = /application/svnpasswd/authz
- #控制权限数据库
注意: 配置文件必须顶格写;
把用户和密码文件放到自定义的目录中:
]# cp authz passwd /application/svnpasswd/
改权限:
]# chmod 700 /application/svnpasswd/*
配置 passwd 文件:
- [users]
- oldboy = oldboysecret
- test = testsecret
- test1 = test1secret
passwd 配置文件说明:
格式为: svn 账号 = svn 密码
账号和密码可随意指定;
配置 authz:
- [groups]
- # 定义组信息, 注意: 用户账号在 passwd 里;
- ett_sa = oldboy,test1
- ett_wangguan = test
- [sadoc:/]
- @ett_sa = rw
- @ett_wangguan = r
- test = r
authz 配置文件说明:
1. 权限配置文件中出现的用户必须已经在用户配置文件中定义;
2. 对权限配置文件的修改立即生效, 不必重启 svn;
3. 一个用户组可包含多个用户, 用户间用逗号分隔;
4. 版本库目录格式:
[< 版本库 >:// 项目目录]
@< 用户组名 > = < 权限 >
< 用户名 > = < 权限 >
其中, 方括号内部分可有多种写法:
[/]: 表示根目录及以下, 根目录是 svnserve 启动时指定的,[/] 表示对全部版本库设置权限;
[repos:/]: 表示对版本库 repos 设置权限;
[repos:/sadoc]: 表示对版本库 repos 中的 sadoc 项目设置权限;
[repos:/sadoc/oldboy]: 表示对版本库 repos 中的 sadoc 项目的 oldboy 目录设置权限;
权限主体可以是用户用户组或 *, 用户组在前面加 @,* 表示全部用户;
权限可以是 wrwr 和空, 空表示没有任何权限;
authz 中每个参数都要顶格写, 开头不能有空格;
对于组, 要以 @开头, 而用户不需要;
6 重启 svn 服务:
- ]# pkill svnserve
- ]# svnserve -d -r /application/svndata/
注意:
更改 svnserve.conf 需要重启 svn, 更改 authzpasswd 文件时不需要重启;
检查 3690 端口是否处于监听状态, 至此 svn 服务器搭建完成; 下面是 svn 客户端的安装与使用;
分别说明在 windows 平台和 centos7 平台上的 svn 客户端安装和使用:
svn 客户端访问方式:
subversion 可通过多种方式访问 -- 本地磁盘服务, 或各种各样不同的网络协议, 但一个版本库地址永远都是一个 url,url 方案反映了访问方法;
- file:// 直接版本库服务 (本地磁盘或访问方法;
- http:// 通过 webdav 协议服务支持 subversion 的 apache 服务器;
- https:// 与 http:// 相似, 但是用 ssl 加密;
- svn:// 通过未认证的 tcp/ip 自定义协议访问 svnserve 服务器;
- svn+ssh:// 通过认证并加密的 tcp/ip 自定义协议访问 svnserve 服务器;
1windows 平台:
下载 svn 客户端安装即可, 都是鼠标操作, 比较容易;
主要说明后续的使用步骤:
1. 在本地创建 svn 目录: 如创建 svn-test 目录;
2. 在该目录上右击, 选择 SVN Checkout:
然后, 根据弹框, 填写 svn 服务器地址用户名等信息; 首次使用 svn 用 checkout, 会要求输入用户名和密码;
保存认证信息在缺省目录:%APPDATA%\Subversion\auth 目录下, 在运行 cmd 窗口输入:
%APPDATA%\Subversion\auth 即可,
即 C:\Users\sshss\AppData\Roaming\Subversion\auth
该目录上右击:
继续操作:
点击 ok
这样即可完成
3. 在创建的目录里, 编写代码, 然后在该目录右击, 选择 SVN Commit 提交代码即可
4. 如果要拉取, svn 服务器上的代码, 右击该目录, 选择 SVN Update 即可;
具体功能, 自行学习下, 点击鼠标就行了;
2centos7 平台:
主要步骤即 svn 命令说明:
1. 导入 svn 原始目录:
先创建 svn 目录:
]# mkdir /data/oldboy -p
在其目录下, 创建 3 个目录:
]# cd /data/oldboy; mkdir trunk branch tags -p
导入:
]# svn import /data/oldboy svn://192.168.255.12/sadoc/ -m "import tree"
2. 从 svn 库提取数据:
- ]# mkdir /data/test
- ]# svn checkout svn://192.168.255.12/sadoc /data/test --username oldboy --password oldboysecret
或简写:
]# svn co svn://192.168.255.12/sadoc /data/test --username=oldboy --password=oldboysecret
或:
]# svn co file:///application/svndata/sadoc /data/test --username=oldboy --password=oldboysecret
注意: 首次使用 svn 用 checkout; 后面再用提取数据不用再使用用户名和密码:
3. 查看 svn 中的数据:
]# svn list --verbose svn://192.168.255.12/sadoc
或:
- ]# svn ls --verbose svn://192.168.255.12/sadoc
- ]# svn cat svn://192.168.255.12/sadoc/trunk/test1.txt
4. 向 svn 中提交数据:
- ]# touch /data/test/trunk/test2.txt
- ]# svn add /data/test/trunk/test2.txt
- ]# svn ci -m "test2.txt" /data/test/trunk/test2.txt
ci 简称: commit;
co 简称: checkout;
注意: 提交时, 先 add, 再 commit;
5.svn 钩子脚本使用 (仅演示一个)
仅演示 post-commit 脚本使用:
]# vim /application/svndata/sadoc/hooks/post-commit
注释掉默认执行语句, 添加:
touch /tmp/$(date +%F).log
添加执行权限:
]# chmod 755 post-commit
在 windows 客户端上, 修改数据后执行 commit, 在 linux 命令行上查看, 是否执行了该钩子脚本;
即在 / tmp 目录下创建了一个以时间命名的. log 文件;
注意:
1 钩子脚本的权限要允许 svn 执行, 一般设为 chmod 755 post-commit;
2 写钩子脚本时, 尽可能定义变量, 主要是用过的命令的路径, 因为 svn 考虑安全问题, 不会调用系统环境变量;
3 在 svn update 之前, 一定要先手动 checkout 一份出来, 还有这里一定要加上用户和密码;
来源: http://www.bubuko.com/infodetail-2546991.html