第一步:在服务器创建SVN仓库
点击创建目录结构然后点击确定
然后你会看到服务器上的SVN仓库文件如下所示,其中conf文件夹存放着该仓库的设置,我们打开它:
然后打开svnserve.conf:
将以下注释放开,意思是在该文件之中配置匿名访问权限和账号访问权限,以及指定密码配置文件位置:
改为如下,注意,如果不允许匿名读取,则像下面这样将匿名访问的权限设置为none:
然后,再以文本编辑的方式打开passwd文件编辑账号密码:
格式:账号=密码
好了,至此,服务器上面的svn仓库就搭建完毕了。
第二步:本地检出
在本地要进行检出的位置右键,输入指定SVN仓库的URL,将其检出到本地硬盘:
输入之前创建的SVN仓库的url
点击确定之后会让你输入账号密码,输入之前设置的账号密码即可,别忘了点上保存认证,不然的话每次进行svn操作都要输入账号密码:
检出之后,你会发现本地的文件结构如下:
.svn
是一个隐藏文件夹,保存着你这个本地副本的svn信息,比如说保存着最为关键的仓库id信息。
branches
分支文件夹,开发时并非直接操作主干,而是要从主干分出分支之后进行开发,然后在测试无误之后再将分支合并至主干,分支就是存在此文件夹之内。
tags
快照文件夹,或者说标记文件夹,这是一个用来保存阶段性项目版本的文件夹,每次一个阶段性的项目版本出来之后,要在此文件夹作一个快照备份,该文件夹一般svn只读。
trunk
主干文件夹,项目的主干部分,所有的开发都是在以此为根本的分支上进行的,然后再将分支合并至该主干。(除非是特殊的客制化开发,无法合并到主干之上。)
第三步:上传项目
上传项目可以直接将项目文件夹复制到trunk文件夹之内然后再直接进行提交,也可以如下,右键trunk:
然后再右键列表,选择加入文件或者加入文件夹,上传时可选择写上备注信息:
第四步:进行开发工作
关于使用什么样的方案进行svn的开发工作,这位博主总结的非常到位使用SVN开发模式和流程,我这里只讲一下关于分支、合并的相关操作点。
在开始之前,我们先在trunk文件夹之上进行右键,然后查看他的svn属性,注意其url地址是在主干之上:
然后,我们再右键选择分支/标记。
选择分支文件夹,然后点击确定:
然后经过下列操作,再点击确定:
创建该分支之后,你再次在trunk文件夹之上右键查看svn属性,会发现:
trunk指向的url已转移到刚才我们所创建的分支之上,这是因为我们在创建分支时点选上了“切换工作副本至新分支/标记”选项,现在我们对trunk的任何改动,都是在对刚刚所创建的svn分支进行操作,并未影响主干。
我们再在branches文件夹之上右键进行更新:
更新成功之后就会看到我们刚才创建的分支,我们再查看此分支的svn属性,会发现他指向的url和我们之前trunk创建分支并切换后的url相同:
我们在rb-1.0之下创建一个新文件并右键提交:
右键trunk文件夹进行更新,会发现在rb-1.0下创建的文件被同步过来了,因为这两个文件夹所指向的是同一分支地址。那么我们怎么把trunk的url地址再度指向主干呢,要用到svn的切换操作:
选择切换回trunk并确定:
切换之后会发现我们刚才在分支之下创建的文件消失不见了,因为切换会伴随着同步功能,我们将url切换到主干,就会将主干下面的文件给同步过来,而主干与分支是相互隔离的,所有在分支上面进行的修改不会影响到主干。
所有我们才需要合并操作:
选择要向主干合并的分支并确定:
指定范围如果不填的话则默认为合并该分支的所有版本,如果要合并指定的版本请参照给出的写法进行版本书写,或者直接通过“显示日志”按钮进行开窗选择,之后点击下一步。
你可以选择点击测试合并看是否存在冲突,不过我觉得这个操作有点多余,因为无论有无冲突,该合并还是要合并的,有冲突再解决冲突就是了:
合并成功之后,就会发现分支创建的文件被合并过来了,我们此时就要对项目再次做下完善的测试,确保没有问题,就进行提交。这一次的提交,就影响的是主干了:
关于合并时的冲突解决:
假设我们遇到了最常见的源代码冲突,那么点击编辑按钮:
会进入到以下界面:
右键选择你决定选用的文本,或者直接自己编辑下方的最终选用代码,然后点击标记为已解决,保存并关闭此窗口: