仓库
仓库(Repository)是svn版本控制的中心,以后所有被svn控制的文件都会存放在这里。
创建命令为:
svnadmin create d:\svnrepo
创建完成后其目录如下:
服务
Svn分为客户端和服务器端,创建服务后可以通过svn://地址和http://地址的方式来访问服务,其命令如下:
svnserve –d –r d:\svnrepo(仓库所在位置)
在windows控制台创建后,不能关闭(这是不足之处,linux下可以没有问题)
可以采用建立windows服务的方式,其命令如下:
sc create SVNService binpath= "D:\SVN\bin\svnserve.exe--service -r d:\svnrepo" depend= tcpip start= auto
其中=号后面一定要有空格
权限
权限可以给不同的用户不同的权限,包括读写,同时可以控制那些项目只读,那些项目可以读写,不同项目被不同人访问。其设置方式在仓库的conf目录下,找到svnserve.conf。
支持匿名方式:
# anon-access = read
# auth-access = write
支持密码方式:
password-db = passwd
配置后,表示要到passwd文件中添加用户和密码
例如添加用户u1密码为p1,只需要在其中加入u1=p1
authz-db = authz
配置后,表示可以到authz文件中定义权限。
主干(Trunk)
项目代码所在的地方,一般是正在开发的代码。这是好多人的说法,这也是正确的。我还有其他的理解,主干是一个项目或产品的主要支撑点,好比一棵树,其树干就是主干,主干出问题那么所有分支都有问题。同时每一个分支也可以称为主干,好比一棵树上大大枝杈,其上可以有较小的枝杈。
有了主干我们可以在其上分化出多个分支,每个分支有不同的作用,同时也可以对其做一些标签,标志一个个的里程碑。
分支(Branches)
分支的作用在于解决我们实际开发中遇到的多版本或分期开发问题。不能所有的代码都在主干上开发,这样一旦出现问题那么将导致整个项目维护的工作量增大甚至无法维护。例如:
当项目一期开发完毕并上线运行后,开始了项目二期的开发。假设此时都在主干上开发,在二期开发过程中一旦一期出现问题,我们虽然可以找到问题并解决但是此时已经有了项目二期的代码并完成,这个时候怎么修复一期的bug,办法有但是都是笨办法。因此当项目一期完成后可以对其建立一个分支,此时上述问题就迎刃而解,只需要拿出一期的分支修复bug并重新编译部署就可以完成,二期项目也可以同步进行开发。当一期完成后我们可以根据项目的实际特点有选择的决定是否将分支上的代码合并到主干上。
标签(Tags)
其使用不多。从网络上寻找资料如下:
是用来做一个milestone的,不管是不是release,都是一个可用的版本。这里,应该是只读的。更多的是一个显示用的,给人一个可读(readable)的标记。
tags的作用是将在branches上修改的bug的代码合并到trunk上时创建个版本标识,以后branches上修改的bug代码再合并到trunk上时就从tags的version到branches最新的version合并到trunk,以保证前期修改的bug代码不会再合并。
之后还会有对svn学习和使用其它文档,敬请大家以后欣赏。