在 Window 系统中想用 SVN 服务器,只需要安装 VisualSVN-Server 即可,这是带有图形操作界面的,那么创建仓库,新建用户,修改密码,修改权限等操作很简单,动动鼠标就可以了。
那么在 Linux 系统中,如何进行这些操作呢?这里假设已经安装好了 SVN 服务器,具体安装过程这里就不再写了。
查看 svn 版本:
svn --version(包含版本信息、编译信息、版权信息等)
svn --version --quiet(只查看版本号)
1)在 svn 根目录下建立版本仓库:
svnadmin create product3dl
如果找不到刚创建的仓库,可以用 find 命令来查找:
find -name product3dl
其中,product3dl 就是仓库名,仓库建立好以后会出现一个仓库名的文件夹,文件夹下面有 conf 等几个目录和文件。
查看仓库下的所有目录及文件:
cd product3dl/
ll -a
结果:
total 32
drwxrwxr-x. 6 svn svn 4096 Dec 15 09:44 .
drwx------. 26 svn svn 4096 Dec 15 09:44 ..
drwxrwxr-x. 2 svn svn 4096 Dec 15 09:44 conf
drwxrwsr-x. 6 svn svn 4096 Dec 15 09:44 db
-r--r--r--. 1 svn svn 2 Dec 15 09:44 format
drwxrwxr-x. 2 svn svn 4096 Dec 15 09:44 hooks
drwxrwxr-x. 2 svn svn 4096 Dec 15 09:44 locks
-rw-rw-r--. 1 svn svn 229 Dec 15 09:44 README.txt
2)新建用户
修改 conf 文件夹下的 authz 文件:
vi authz
修改后如下:
- [groups]
- # harryharry_and_sally = harry,sally
- # harryharry_sally_and_joe = harry,sally,&joe
- study = mll,cz,ldp,ly
- admin = qzg,mll
- [/home/svn/product3dl]
- @admin = rw
- @study = rw
- * =
- # [/foo/bar]
- # harry = rw
- # &joe = r
- # * =
- # [repository:/baz/fuz]
- # @harry_and_sally = rw
此配置文件采用“基于路径的授权”策略,中括号里指定路径,以下列出对各用户的授权。
包括只读 r,读写 rw。没有列出的用户,则不允许访问。还可以对用户分组,其中,1 个用户组可以包含 1 个或多个用户,用户间以逗号分隔。
/ 表示根目录(仓储目录)及以下,根目录是 svnserve 启动时指定的,我们指定 /opt/svndata。这样,/ 就是表示对全部版本库设置权限。
权限主体可以是用户组、用户或 *,用户组在前面加@,* 表示全部用户。权限可以是 w、r、wr 和空,空表示没有任何权限。
在 [groups] 下增加你的用户组(记得等号前后留空格)。
3)修改用户密码
添加了用户以后就需要给用户设置密码了,打开conf/passwd文件:
vi passwd
取消 [users] 的注释,并在下面加上你的用户的密码设置(记得等号左右的空格),如下:
- [users]
- # harry = harryssecret
- # sally = sallyssecret
- qzgqzg = qzg
- mllmll = mll
- czcz = cz
- ldpldp = ldp
- lyly = ly
4)启动 svn 对用户权限、密码的控制
需要启动SVN对用户权限、密码的控制,不然的话你就只能读而不能写了。
修改svnserve.conf文件:
vi svnserve.conf
各参数功能在配置文件的注释中有说明, 此处配置如下(取消下面几条前面的 # 号注释就 OK 了):
- anon-access = read
- auth-access = write
- password-db = passwd
- authzauthz-db = authz
5)给仓库分配写权限
需要给仓库提供读写权限,不然不能提交文件:
chmod 777 -R product3dl/
6)重新启动 svn 服务
启动 svn 服务命令:
svnserve -d -r /svn
如果报错如下:
svnserve: Can't bind server socket: Address already in use
解决办法:
使用“ ps -e|grep svnserve ”找到服务对应进程编号,使用 kill 命令后,再使用启动命令重启服务。
Good Luck!