以前用过几天CVS,一方面是不太好用,另一方面没这个需要,结果一真没有正式地用上。
这次更新我的QQ农场计时器程序,发现不进行版本控制实在容易搞混。于是初衷是弄一个本地服务器。后来由于把数据这部分交给别人帮忙做了,所以又把SVN服务器架设到远程主机上去了,小记一下。
1.下载软件
SubVersion:http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=8100
客户端TortoiseSVN:http://tortoisesvn.net/downloads
Eclipse插件Subclips:http://subclipse.tigris.org/servlets/ProjectProcess?pageID=p4wYuA(在线安装)
2.安装
服务器端:先装Subversion,然后是TortoiseSVN,然后重启
客户机端:Eclipse->Help->software updates...->Add site...
3.创建仓库
我是这样管理的,在服务器上D盘新建两个文件夹Sources(放以前的源代码FarmTimer)、SVN(仓库所在)。在SVN中新建FarmTimer,右键点击,选择TortoiseSVN->Create Repository Here,很快完成。接着在Sources/FarmTimer上右击,选择TortoiseSVN->Import...,在对话框中输入file:///d:/SVN/FarmTimer,很快导入完成。
现在在服务器本地就可以看到代码文件了:TortoiseSVN->Repo-Browser,输入(会自动填上)file:///d:/SVN/FarmTimer,即可。file:///是本地协议。
4.远程
我的服务器的外网IP是11x.2xx.9x.x3x。SVN要想供远程使用必须要安装服务:在CMD窗口运行svnserve -d -r D:/SVN
(我这里没有用svnserve -d -r D:/SVN/FarmTimer,所以下面在客户机上的连接地址要注意一下),运行后保持窗口打开。
现在TortoiseSVN->Repo-Browser,输入svn://11x.2xx.9x.x3x/FarmTimer,就可以了。(如果刚才是svnserve -d -r D:/SVN/FarmTimer的话,现在的地址就是svn://11x.2xx.9x.x3x)。
不过现在是匿名登陆,只能read。
5.配置
打开服务器端D:/SVN/FarmTimer/conf/svnserve.conf
找到:
# anon-access = read
# auth-access = write
# password-db = passwd
这三句的含义分别为:匿名的只有读的权限、通过认证的可以写(当然也可以读)、用户名和密码在passwd文件中
接着打开D:/SVN/FarmTimer/conf/passwd
在末尾加上
thy38 = thy
即用户thy38的密码为thy。
这样就行了,其它还有什么组权限什么的设置,暂时先不管它了,以后要用再说吧。
6.连接
在客户机上TortoiseSVN->Export,SVN地址还是svn://IP/FarmTimer,本地地址D:/FarmTimer,就可以导出了。
现在到D:/FarmTimer就可以看到很多文件,比方我对uiApp.py做些修改,然后保存,退出编辑,在文件上右击选择SVN commit...,这时会让你写一小段注释,点OK之后就会要你输入认证,这里是thy38、thy。就OK啦!
7.Subclipse
在Eclipse中安装完成Subclipse后,选择Windows->Show View->Other...,找到SVN->SVN资源库,点OK。下方会有SVN资源库视图,右键 新建->资源库位置...,输入svn://IP/FarmTimer,就可以浏览文件。接着在根上右键 检出为...,导出为一个项目,在项目的任一文件上右键 Team,可以找到相关的SVN设置。
好了,到这里吧,就到这里吧。SVN还有不少要学习的,我一定会回来的!
PS:2012-03-26
好吧,我又回来了。在公司要架一个SVN服务器,这跟以前在本机用不一样了,按网上教程多的是,可还是要注意一些要点。
1. 把SVN安装为系统服务
sc create svn binpath= "C:\Programs\Subversion\bin\svnserve.exe --service -r C:/SVN" displayname= "Subversion Server" depend= Tcpip start= auto
-r 的路径用/比较好,用\出现过服务无法启动
2. SVN目录结构
比较好的一个结构是:
SVN-
-Repo1
-Repo2
每个Repo*是一个版本库
而SVN就是root。对应在Apache中就是:
<Location /repos> DAV svn SVNParentPath "d:/svn" </Location> |
3. SVN协议和http协议访问同一个版本库时的地址不同,以上述为例:
SVN://IP/Repo1
http://IP/repos/Repo1
4. 两个password不同
AuthUserFile /etc/svn/passwordfile这个是Apache中的,是打开 http://IP/repos/Repo1的用户名、密码
而每个版本库中的passwd文件是该版本库的用户名、密码