要做新项目了,需要搭建服务器开发环境。oracle数据库和SVN Server是必不可少的。
svn的版本控制很好和强大,一般我们说的都是客户端,服务端一般是VisualSVN Server或者Subversion.
开始之前还是简单的了解一下这个东东到底是什么吧。
百科:
http://baike.baidu.com/view/9636511.htm
VisualSVN
VisualSVN Serve集成了Subversion和Apache,简化了手工配置Subversion的繁琐步骤。
VisualSVN Server是免费的,而VisualSVN是收费的。VisualSVN是SVN的客户端,和Visual Studio集成在一起, VisualSvn Server是SVN的服务器端,包括Subversion、Apache和用户及权限管理,优点在上面已经说过了。
1.为什么要用VisualSVN Server,而不用Subversion?
SVN 分为服务端和客户端,就服务端而言分为 Subversion和VisualSVN Server
因为如果直接使用Subversion,那么在Windows 系统上,要想让它随系统启动,就要封装SVN Server为windws service,还要通过修改配置文件来控制用户权限,另外如果要想以Web方式【http协议】访问,一般还要安装配置Apache,如果是新手,岂不是很头痛?而VisualSVN Serve集成了Subversion和Apache,省去了以上所有的麻烦。安装的时候SVN Server已经封装为windws service,Apache服务器的配置也只是在图像界面上,指定认证方式、访问端口等简单操作;另外,用户权限的管理也是通过图像界面来配置。
2.为什么不用TFS?
因为我们一开始就是用Subversion和TortioseSVN,所以就没有更换其他的软件。至于TFS至今没有用过,其实,我只是看了一些的文章而已,对它也不了解。
3.VisualSVN Server是免费的吗?
是的,VisualSVN Server是免费的,而VisualSVN是收费的。VisualSVN是SVN的客户端,和Visual Studio集成在一起, VisualSvn Server是SVN的服务器端,包括Subversion、Apache和用户及权限管理,优点在上面已经说过了。
--------------------------------------------------------------------
如果你使用过apache服务器,你就知道VisualSVN Server的基本原理了。
下载地址 http://www.visualsvn.com/server/
现在开始搭建。
安装步骤很简单,基本上都是下一步,没什么好讲的,就算是有些需要设置的东西也可以在
安装完成后再去修改,所以安装我就不说了。
安装完成后,我们打开VisualSVN Server的manager
Repositories是库的意思,结构很简单,就是server,库,用户,组。
右击VisualSVN Server(local)查看属性,general和network比较重要。
general可以从新选定库的位置,network可以设置VisualSVN Server的网络地址。
注意,作为服务器,IP肯定是要固定的。这里的IP就是这台机器的实际IP。
端口一般是443或8443.
修改完以后,我们再看看首页的信息。
可以看见这个Server URL已经变了。
下面该创建用户来控制权限了,这个是必须的,不然svn就没什么意义了。
在设置之前,我们先看看库的目录下的文件结构。
在库的根目录下,我们看到了3个文件。
打开看看内容:
--- authz文件 # Default authorization settings [/] * = rw --- authz-windows文件 # Default authorization settings [/] S-1-5-32-545=rw --- htpasswd 文件 里面没有任何内容
好,现在开始权限控制的设置:
右击Reposities,查看属性
可以看到,默认是有一个EveryOne用户的,他的权限是读写。
permission是允许的意思,下面有4个,分别是 继承父节点,没有访问权限,只读,读写。
我们需要把这个改成只读的,必然所有人都可以修改svn上的东西了。
保存后我们在看看authz文件:
[/] *=r
现在开始添加用户:
右击Users,点击添加用户。
我们添加2个测试账户,2个开发账户。
现在我们开始添加Groups组,这个组把用户分成组,方便控制权限,其实也可以不用的,用户多的话,这样很好管理。
右击Groups:
我们添加2个组,一个测试组,一个开发组。
现在往组里添加用户,右击组,现则编辑:
添加完用户和组后,authz文件
[/] *=r [groups] dev=dev2,dev1 test=test2,test1
同时,htpasswd 文件
test1:$apr1$ibg$JdsC/khoavJ8bfu88KViW/ test2:$apr1$id1$SJQ2HQgQoFxfTE7xu2kKf0 dev1:$apr1$ief$K3bq.t7EZFhbo.CHN3dEq1 dev2:$apr1$ifj$fjjGB6xxKZcttFNx5dJFn.
可以看出visualsvnserver自动把秘密加密了。
现在只是建立好权限关系而已,这些关系必须和实际的代码库关联才会起作用。
右击Reposities:
这就是刚才控制对库的权限控制的地方,在这里要把我们刚才建立好的权限关系添加进来。
在Security弹出框中,add组,并设置权限,也可以按照用户添加,
权限管理的东西都是差不多一样的。
修改完权限后,在查看authz文件:
[/] *=r @dev=rw @test=r [groups] dev=dev2,dev1 test=test2,test1
现在我们对这个文件的功能和数据结构就很清楚了。
它就是管理用户和权限的。
[/]
*=r //everyone游客只有只读权限
@dev=rw //dev组中的用户有读写权限
@test=r //test组中的用户只有只读权限
[groups]
dev=dev2,dev1 //dev组的成员有dev2,dev1
test=test2,test1 //test组的成员有test2,test1
清楚了这些,我们就可以直接修改这些文件来修改用户和权限了
好,到此为止,权限已经设置好了,可以开始建立库了。
刚才的Reposities只是库的根目录,我们需要在这个目录下建立库和目录结构,管理项目。
结构你随便建,一般分两大部分,代码和文档。然后在这下面再分结构。
右击库可以看到有个Copy URL to Clipboad(拷贝到剪贴板)就是复制url多的意思,
内容如下:
https://10.55.15.66/svn/ccbank/
在这个库下,我们需要建立目录来管理项目:
修改完server的东西后,记得要重启服务器。
在这里要说一下:
我们在右击刚才库下的目录也可以设置权限的!所以权限的设置起始是可以精确到那个用户对哪个目录的读写。
一般我们只是这样简单的赋予读还是写的权限,在一些大的公司做大的项目,起始都是精确到目录的,也即是
一个用户只可以对某些目录下的东西进行读写,其他的可以使只读,或者没有权限读取。这样的管理才是
真正的管理,才能保证项目的安全。
/****************************************************svn客户端tortoiseSVN****************************************************************/
服务端构建好了,现在需要在客户端来上传和下载代码,客户端当然是用tortoiseSVN了。
这个很好用,我强烈建议用tortoiseSVN 1.6!!!
为什么呢?因为我在使用1.7时总是出现一些错误,我的操作系统是win7,使用时遇见过非法的参数,或者干脆svn无响应直接程序死了。
在网上查半天也没有一个解决方案,后来我重新安装了1.6,什么问题都没有出现!!!
看来1.6还是很稳定的版本,最新的版本不一定就是最好的!
安装完成后,右击一个文件夹,会看到:
在这里,我要说说Export和Import;Checkout和Checkin命令(这里没有Checkin)。
Export是把服务器上的东西下载到本地,但是不受svn版本控制,就是没有那个.svn文件夹。
Import是把本地文件上传到服务器,同样也不受svn版本控制。
而Checkout是把服务器上的东西下载到本地,并且有svn版本控制,目录下会有.svn文件夹。
Checkin这里没有,svn的插件会有这个命令。也是有版本控制的。
我们想往服务器上传,可以选择Import,把文件直接上传。
或者我们先Checkout把svn的目录下载下来(没有内容),这样有了版本控制后,
在往这个文件夹添加东西,然后右击这个文件夹选择SVN Commit命令吧文件提交上去。
1,Import
在本地建立一个文件夹,并吧需要上传的文件放在里面。
在服务器上刷新一下就可以看到,文件已经上传了。
但是本地的那个文件目录是不受svn控制的。
2,Checkout-----Commit
在本地建立一个文件夹,右击选择Checkout
这时这个文件夹已经受版本控制了,我们可以添加文件并提交。
这样服务器上就有文件了。