一、使用命令行模式访问 SVN 服务器
1. 检出(checkout)
(1) 首先进入自己的工作目录,例如:D:svnSpace
cd D:svnSpace
(2) 运行 svn checkout 命令,命令格式如下
# svn checkout svn://SVN 服务器主机地址/具体仓库目录 保存检出内容的目录 svn checkout svn://localhost/OA MyOA
运行 checkout 命令后进入 MyOA 目录,里面有一个隐藏目录.svn,用来保存与服务器交互的重要信息,其中包括从服务器端取回的最新版本信息、文件状态、更新时间等。SVN 正是以此为依据判断当前目录中文件的状态。这个隐藏目录千万不要删除或修改其中的内容。如果服务器端保存的文件可以视为一个“正本”,那么每个开发人员检出到本地目录的文件可以视为“副本”,通常称为工作副本。
2. 提交(commit)
svn add test.txt
- 使用-m 参数附加日志信息
- 开启访问权限
svn commit -m "My first commit" test.txt
- 进入对应的版本库目录下的 conf 目录:D:svnDepOAconf
- 打开 svnserve.conf
- 将第 19 行的# anon-access = read 改为 anon-access = write,也就是去掉“# ”,将 read 改为 write。注意前面不要留空格,一定要顶格写。
- 不需要重启 SVN 服务,甚至命令行窗口都不需要重新打开。
其实 svn commit 命令最后可以不指定具体文件,此时表示提交当前工作副本中的所有修改。
3. 更新(update)
执行 svn update 命令
4. 将工作副本整体回复到某一个历史版本
svn update --revision 想要取回的版本号 #svn update --revision 1
5. 将某个文件恢复到某个版本中的状态,同时不涉及其他文件
svn update 文件名 --revision 想要取回的版本号 #svn update pp.txt –revision 10
二、单一版本库权限配置
(4) 将第 27 行注释打开:password-db = passwd,表明使用同目录下的 passwd 文件保存用户信息
(5) 将第 36 行注释打开:authz-db = authz,表明使用同目录下的 authz 文件保存权限信息
2. 打开 passwd 文件创建用户
# 用户名=密码
userWrite01 = 123456 userWrite02 = 123456 userRead = 123456 userOther = 123456
3. 打开 authz 文件:#后面注释的是例子
(1) 创建用户组[groups]
# 组名称=成员列表 # harry_and_sally = harry,sally # harry_sally_and_joe = harry,sally,&joe canWrite = userWrite01,userWrite02
(2) 指定路径,给用户和用户组授权
# [/foo/bar] # harry = rw # &joe = r # * =屏蔽那些未设定的用户,让它们没有任何权限
# 指定路径:根目录 [/]
# canWrite组具有读写权限 @canWrite = rw
# userRead用户具有读权限 userRead = r
# 除了上面设置的,其他的用户或组没有任何权限 * =
(3) 权限的继承性:父目录设置的权限,对子目录同样有效——除非子目录进行更为具体的设定
[/subDir] userOther = rw * =
三、多版本库共享配置
1. 在版本库根目录 D:svnDep 下创建 commConf 目录2. 将未修改的 authz 和 passwd 文件拷贝到 commConf 目录下
3. 修改需要设置权限的版本库的 svnserve.conf 文件
- password-db = ../commConf/passwd
- authz-db = ../commConf/authz
[users] # harry = harryssecret # sally = sallyssecret userERP = 123456 userCRM = 123456 userOA = 123456
5. 在 authz 中针对不同版本库为不同用户授予权限
# [repository:/baz/fuz] # @harry_and_sally = rw # * = r [ERP:/] userERP = rw * = [OA:/] userOA = rw * = [CRM:/] userCRM = rw * =