用ECS在云端搭建SVN服务

应用环境: ECS 云端系统:Ubuntu 14.04-x64 本地系统:window 使用工具:cygwin + ssh 原版文档: http://www.shayanderson.com/linux/install-and-setup-subversion-server-on-ubuntu-1210-server-with-multiple-repositories.htm 一、安装及目录配置 1. 登录云端服务器 ssh xxx@[IP] 2. 安装subversion apt-get install subversion 检查是否安装完成 svn --version 3. 先建立一个Repositories 目录放置工程 mkdir /home/repos 在目录底下再建立工程 svnadmin create /home/repos/project1 svnadmin create /home/repos/project2 注:删除则用 svnadmin deltify 4. 修改目录组权限让一用户组都可管理此目录 chmod -R g+rws /home/repos //设置组权限 sudo groupadd svn //添加组 chgrp -R svn /home/repos //修改group ownership usermod -a -G svn [username] //添加用户进组 groups // 检查用户是否被添加进组 二、云端上测试SVN服务 1. 新建一个文件夹 mkdir /home/tmp svn checkout file:///home/repos/project1 /home/tmp // checkout到目录tmp 2. 在tmp目录新建文件,commit到服务 echo 'this is test' > /home/tmp/test.txt svn commit -m "initial test commit" /home/tmp success! 三、远端接入SVN服务,需开启SVNServe服务 1. 编辑对应svn工程下的conf/svnserve.conf 文件 vi /home/repos/project1/conf/svnserve.conf [general] anon-access = none auth-access = write password-db = passwd realm = Development Team 注意:每行前不要有空格 2. 配置svn用户组及权限:(这里可以配置不同组的读写权限及访问目录权限) vi /home/repos/project1/conf/authz [gourps] Developers = Developer1, Developer2 readers = reader1, reader [/] Developer = rw reader = r 3. 设置用户密码 vi /home/repos/project1/conf/passwd Developer1 = 12345 Developer2 = 23456 … 这里也可以使用原参考文档里的方式,单独用一个passwd-users文件来设置用户和密码。 4. 开户svn服务 sudo svnserve -d -r /home/repos -d 表示daemon,用后台服务方式 -r 表示指定root路径为 /home/repos 注: 若已开启过svnserve,可以用killall svnserve 将其关闭。查询svn相关进程可以用:ps aux | grep svn。 在云端测试: mkdir /home/tmp2 svn checkout svn://[server IP address]/project1 --username [username] 在本地window测试,使用TortoiseSVN。 1.新建文件夹 2.右键checkout, 填入路径svn://[server IP address]/project1,填写用户名和密码。 complete! 成功! 配置过程中遇到许多的问题都在“注”里说明并解决了! 附其它知识: SVN在服务器端的存储方式和客户端是不一样的,所以在服务器端是看不到源文件的。服务器端有两种存储方式FSFS和BDB,目前默认都是FSFS。 要导入文件有两种做法: 1、用import指令,将客户端文件夹导入到服务器端。重新在其它地方建立文件夹再checkout下来。 2、先checkout空库到客户端,然后将要导入的文件夹放入客户端checkout产生的空文件夹,然后执行add将这些文件夹纳入SVN控制,最后执行commit上传到服务器 建议用后一种方法,因为前一种方法如果操作失误容易导致文件夹层次混乱