SVN如何管理多项目

  1. SVN独立运行时的权限配置 
  2.  
  3. 完成SVN的快速配置后,版本库之间的权限变成了一个重要的问题!如果没有定义版本库的权 
  4. 限,每个有权限的人都可以修改版本库,很容易造成混乱。 
  5.  
  6. 假设: 
  7.  
  8. A项目: 
  9.     A1  实际在用的版本库      
  10.     A2  开发使用的版本库 
  11.  
  12. B项目: 
  13.     B1  实际在用的版本库 
  14.     B2  开发使用的版本库 
  15.  
  16. 以其中的一个项目为例: 
  17. 用户tom:可能读写A2,B2的版本库,只能看A1的版本库 
  18. 用户jim:只能读A1,A2的版库,可以读写B1,B2的版本库 
  19. ..... 
  20. 用户cheng:要能读写所有的版本库 
  21. (更多的权限,用户可以自行添加,本例只以cheng,tom,jim三个用户做测试) 
  22.  
  23.  
  24. 如何配置权限?每个版本库都有一个权限控制文件authz,密码文件passwd,全局配置文件 
  25. svnserve.conf 。要实现上面的需求,我们需要让他们进行统一的认证和权限分配,这样才 
  26. 会不出问题!好在,他们可以指定authz,passwd文件,所以我们只需要将他们的路径指向同 
  27. 一个地方,才不会出问题! 
  28.  
  29. 实施的思路如何? 
  30.  
  31. SVN_HOME 
  32.    |project1    project2 
  33.     |           | 
  34.       A1  A2      B1  B2 
  35.  
  36. 1、首先建立project1,project1这两个版本库 
  37. 2、配置projectA,projectB认证及权限 
  38. 3、配置cheng的权限 
  39. 4、建立A1,A2,B1,B2的目录 
  40.  
  41. 5、建立相关的用户 
  42.  
  43.  
  44. 具体操作: 
  45. # svnadmin create /home/svn/project1 
  46. # svnadmin create /home/svn/project2 
  47. # mkdir /home/svn/conf 
  48.  
  49. # cp /home/svn/project1/conf/{authz,passwd} /home/svn/conf 
  50. # ll /home/svn/conf 
  51. total 8 
  52. -rw-r--r-- 1 root root 1080 Feb 24 11:35 authz 
  53. -rw-r--r-- 1 root root  309 Feb 24 11:35 passwd 
  54.  
  55. # rm -rf /home/svn/project{1,2}/conf/{authz,passwd} 
  56.  
  57. 配置版本库的全局文件  
  58. # grep  -Ev "^$|#|sasl" /home/svn/project1/conf/svnserve.conf  
  59. [general] 
  60. anon-access = none 
  61. auth-access = write 
  62. password-db = ../../conf/passwd 
  63. authz-db = ../../conf/authz 
  64. realm = project1   --> 在认证时,会有该信息出来 
  65.  
  66.  
  67. # cat /home/svn/project2/conf/svnserve.conf 
  68. [general] 
  69. anon-access = none 
  70. auth-access = write 
  71. password-db = ../../conf/passwd 
  72. authz-db = ../../conf/authz 
  73. realm = project2 
  74.  
  75. 建立密码文件: 
  76. # grep -v "^#"  /home/svn/conf/passwd  
  77.  
  78. [users] 
  79. cheng = 123456 
  80. tom = 123456 
  81. jim = 123456 
  82.  
  83. 建立权限配置文件: 
  84. # grep -Ev "^$|#|alias" /home/svn/conf/authz  
  85. [groups] 
  86. adm = cheng 
  87. user = tom,jim 
  88. [project1:/] 
  89. @adm = rw 
  90. * = r 
  91. [project1:/A1] 
  92. @adm = rw 
  93. tom = r 
  94. jim = r 
  95. [project1:/A2] 
  96. @adm = rw 
  97. jim = r 
  98. tomrw 
  99. [project2:/] 
  100. @adm = rw 
  101. * = r 
  102. [project2:/B1] 
  103. @adm = rw 
  104. jim = rw 
  105. [project2:/B2] 
  106. @adm = rw 
  107. @user = rw 
  108.  
  109. 启动svn(关于这个服务脚本,请http://myhat.blog.51cto.com/391263/787116) 
  110.  
  111. (运行时,请指定SVN目录为/home/svn,脚本请根据SVN实际情况做修改,否则目录不正确的 
  112.  
  113. 话,会造成用户认证失败) 
  114. # /etc/init.d/svn start 
  115. Starting svnserve... 
  116. Finished! 
  117.  
  118. 此时,可以通过Windows或是linux客户端连接svn服务器checkout了。 
  119. 服务启动后,我用windows客户端使用checkout时,project1/project2里面都是空的,我使 
  120. 用cheng这个账户登入,新建了A1,A2,B1,B2,并且在windows下,客户端的权限已经生效了, 
  121. 都是按照我之前的规划进行着!。 具体的,我会找一台Linux机器演示并确认,顺便熟悉一 
  122. 下命令行! 
  123.  
  124. # svn --version  
  125. svn, version 1.6.11 (r934486) 
  126.    compiled Jun  8 2011, 16:22:13 
  127.  
  128.  
  129. 先用账户cheng来checkout并确认一下,目录是否建好了。 
  130. # svn co svn://192.168.10.9/project1 --username=cheng --password=redhat 
  131. A    project1/A1 
  132. A    project1/A2 
  133. Checked out revision 1. 
  134. # ll project1/ 
  135. total 8 
  136. drwxr-xr-x 3 root root 4096 Feb 24 21:01 A1 
  137. drwxr-xr-x 3 root root 4096 Feb 24 21:01 A2 
  138.  
  139. # svn co svn://192.168.10.9/project2 --username=cheng --password=redhat 
  140. A    project2/B1 
  141. A    project2/B2 
  142. Checked out revision 1. 
  143.  
  144. 两个版本库都OK了,现在我们用其他用户来试试!清除缓存 
  145. # rm -rf project* 
  146.  
  147. # svn co svn://192.168.10.9/project1 --username=tom --password=redhat 
  148. A    project1/A1 
  149. A    project1/A2 
  150. Checked out revision 1. 
  151. # svn co svn://192.168.10.9/project2 --username=tom --password=redhat 
  152. A    project2/B1 
  153. A    project2/B2 
  154. Checked out revision 1. 
  155.  
  156. 使用tom用户,在A1中提交文件失败! 
  157. # cd /root/project1/A1/ 
  158. # touch 123 
  159. # svn ci -F 123 -m "new file 123" --force-log 
  160. Authentication realm: <svn://192.168.10.9:3690> project1 
  161. Password for 'tom':  
  162. Store password unencrypted (yes/no)? no 
  163. Adding         A1/123 
  164. Transmitting file data .svn: Commit failed (details follow): 
  165. svn: Access denied 
  166.  
  167. 使用tom用户在B2中,提交文件成功! 
  168. # cd /root/project2/B2/ 
  169. # touch file1.txt 
  170. # svn add file1.txt  
  171. A         file1.txt 
  172.  
  173. # svn ci -F file1.txt -m "my file" --force-log 
  174. Authentication realm: <svn://192.168.10.9:3690> project2 
  175. Password for 'tom':  
  176. Adding         B2/file1.txt 
  177. Transmitting file data . 
  178. Committed revision 2.

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值