缘起
临近大四毕业时,要做毕业设计了。每周要会见老师,写的论文之类的材料要经由老师查看,总是用U盘烤来烤去着实麻烦。老师说就配置一个SVN服务器,上传下载,十分便捷。而后,有了这次blog的来源。
正文
软硬条件: HP2080微型计算机, Ubuntu 12.10, SVN 1.7.5
Step 1. 安装Subversion软件 : sudo apt-get install subversion
Step 2. 创建项目目录:
sudo mkdir /home/svn
sudo chown www-data:www-data -R /home/svn/
sudo chmod 770 -R /home/svn/
Step 3.创建SVN文件仓库: sudo svnadmin create /home/svn/project(注意,这里的project是任意取的,可以是其他的任何的名字)输入这个命令后,cd到相应目录下,会出现如下的文件:
Step 4.设置访问权限,修改/home/svn/project/conf 目录下的svnserve.conf,passwd和auhtz
a)编辑svnserve.conf,设置权限,将如下的几行的注释取消调,注意不要留下空格
anon-access = read
auth-access = write
password-db = passwd
authz-db = authz
其中,其中 anon-access 和 auth-access 分别为匿名和有权限用户的权限,默认给匿名用户只读的权限,但如果想拒绝匿名用户的访问,只需把 read 改成 none 就能达到目的。password-db就是用户名和密码所在的文件,默认同svnserve.conf文件处在同一目录下,authz-db为用户权限组的文件。
b)编辑passwd,添加用户名和密码,例如:
[users]
zhangsan = 123456
lisi = 123456
test = 123456
c)编辑authz设置用户权限组
[groups]
admin = zhangsan,lisi
test = test
[/]
@admin=rw
*=r (这边不太明白是什么意思,照着写就是了,看起来是给admin组的设置了rw权限,其他的设置的是只读权限)
Step 5.启动和停止SVN服务:
启动:sudo svnserve -d -r /home/svn
描述说明:
-d 表示svnserver以“守护”进程模式运行
-r 指定文件系统的根位置(版本库的根目录),这样客户端不用输入全路径,就可以访问版本库 如: svn://192.168.12.118/fitness 访问的就是主机为192.168.12.118目录下的/home/svn/fitness文件
停止: sudo killall svnserve
注意:如果ubuntu下已经开启了一个或多个svn服务器,想要开启新的svnserve时,出现“端口冲突”,此时使用sudo killall svnserve终止所有的svn服务,方可开启新的服务。只是因为因为它默认使用的端口号为3690,所以应该终止所有的svn服务,使该端口处于空闲状态。
Step 6. 测试是否好用
测试命令: svn co svn://222.192.41.13/softwaretest, 运行结果截图如下:
添加一个文件, 首先将操作文件复制到working copy(从服务器中checkout的文件目录)下,使用svn add 然后使用svn commit。 命令序列:
cp ~/Documents/WordPress.doc .
svn add WordPress.doc
svn commit -m "just for test"
运行如下:
xc-pc@xcpc:~/experiment/test/softwaretest$ cp ~/Documents/WordPress.doc . xc-pc@xcpc:~/experiment/test/softwaretest$ svn add WordPress.doc A (bin) WordPress.doc xc-pc@xcpc:~/experiment/test/softwaretest$ svn commit -m "just for test" Authentication realm: <svn://222.192.41.13:3690> 454c9d99-6de3-47e8-a830-c98172ab5aaa Password for 'xc-pc': Authentication realm: <svn://222.192.41.13:3690> 454c9d99-6de3-47e8-a830-c98172ab5aaa Username: admin Password for 'admin': Adding (bin) WordPress.doc Transmitting file data . Committed revision 1.注意:在 wc 下做文件操作时,比如删除或移动文件,不能直接用 rm, mv 来进行,这样 svn 不能追踪到文件的变化,你必须使用 svn del 或是 svn move 来完成删除或移动的操作。下面举几个命令的例子:
svn del filename # 删除文件
svn move filename foo/bar/baz #移动 filename 到 foo/bar/baz 下
svn rename filename1 filename2 #给文件改名
修改完成后,提交文件: svn commit -m "<相关注释信息>" --username <用户名> --password <密码>
当然,测试也可以使用windows机器,需要安装一个TortoiseSVN软件,图形化的处理,使用方法网关键字“SVN使用教程”一搜一大堆。
后记
在安装时,发现很多的方法中第一件事情就是添加用户和管理组(adduser和addgroup),我个人不太喜欢理解,也不喜欢给自己的系统上添加太多的用户,所以没有采用那种方法,也许那样更好的说。
另外,我发现别人写的博客没有说这些步骤做完后,怎样证明自己确实安装成功了。所以我写了这篇博客,记录了一下我是如何发现我确实安装成功了,并且在Ubuntu和window上都测试了一下。
本文主要参考了如下的这些博客:
Ubuntu搭建SVN服务器:http://blog.csdn.net/gavin_dinggengjia/article/details/7558635
ubuntu下搭建svn服务器:http://blog.sina.com.cn/s/blog_60e5f5320100e35i.html
Ubuntu搭建SVN服务器+Apache http访问:http://www.linuxidc.com/Linux/2012-06/61833.htm