本文源于转载


文章目录

  • 服务端安装及配置
  • 安装SVN服务端
  • 创建svn服务工程总目录
  • 客户端安装及开发流程
  • 配置管理人员
  • 创建工厂
  • 配置权限
  • 创建用户
  • 配置权限
  • PM创建并提交项目
  • 开发人员checkout检出项目
  • 冲突问题
  • 总结
  • Showlog
  • 误删文件后如何处理
  • 完毕



服务端安装及配置

安装SVN服务端

tortoisesvn 服务管理_开发人员

创建svn服务工程总目录

  • 创建一个根目录,这个根目录用来存储所有的svn的工厂信息(每一个工厂等于一个项目)
  • 启动svn: svnserver -d -r F:/SVN/ROOT
      对于wndows而言不支持后台模式,要添加到服务里,由手动改为自动!
      解释:我们再打开一个cmd敲入netstat -an可以看到出现了端口为3690的服务,这就是svn的
    端口,但是当我们关闭命令启动窗口的时候,3690端口服务又不不见了。
     所以要想保持服务不被关闭,我们最好加入到window启动服务里来进行启动,linux支持后台启动:
sc create SVNserver binPath= "F:\SVN\Subversion\bin\svnserve --service -r  F:/SVN/ROOT"
  • 1

异常问题- [sc] openSCManager 失败 5 拒绝 访问拒绝:
  安装svnserver服务win下安装subversion 的svnserver作为服务时遇到了这个问题。
解决方案
  建立一个新文件svnSetup.bat.输入并保存:

sc create SVNserver binPath= "F:\SVN\Subversion\bin\svnserve --service -r F:/SVN/ROOT"  
displayname= "Subversion" depend= tcpip start= auto 
sc start svnserve
  • 1
  • 2
  • 3

右键单击svnSetup.bat,选择以“管理员方式运行”即可
总结:主要原因仍是没有权限,在命令行时执行这个操作总是提示没有权限,而以管理员方式运行则避免了这个问题,相当迂回了一下吧。

客户端安装及开发流程

配置管理人员

创建工厂

svnadmin create F:\SVN\ROOT\student
  • 1

在windows也可可以:

tortoisesvn 服务管理_svn_02

配置权限

tortoisesvn 服务管理_开发人员_03


tortoisesvn 服务管理_tortoisesvn 服务管理_04

创建用户

tortoisesvn 服务管理_服务端_05


tortoisesvn 服务管理_svn_06

配置权限

tortoisesvn 服务管理_svn_07

PM创建并提交项目

  • 项目经理创建项目并提交到svn工厂中(一般是客户端TortoiseSVN,而不是命令行)
  • 安装客户端或者eclipse插件,安装成功后右键会出现两个svn菜单(有checkout)
  • 点击student文件夹

    填写项目地址,点击提交

    我们发现认证失败

    因为匿名用户是禁止访问的,我们可以修改F:\SVN\ROOT\student\conf下的svnserve.conf文件,如图


    修改Anonymous权限为可读也可写。当然匿名用户肯定不可让他访问,这里为了方便演示。注意空格。以上就完成项目经理的导入。

开发人员checkout检出项目

我们新建开发人员文件夹来模仿开发端如下:

tortoisesvn 服务管理_SVN服务器_08


tortoisesvn 服务管理_tortoisesvn 服务管理_09


点击OK会发现开发人员01下已经有了所有的项目信息。

tortoisesvn 服务管理_SVN服务器_10


开发人员02也一样。Commit与update很简单就不说了。

冲突问题

01修改了jsp,添加了第三行,然后提交到svn

tortoisesvn 服务管理_服务端_11


02修改了jsp,添加了第二行,也提交,此时

tortoisesvn 服务管理_svn_12


02提交时,提示已经过时,要先更新。

tortoisesvn 服务管理_开发人员_13


点击OK,更新

tortoisesvn 服务管理_SVN服务器_14


提示冲突。并且发现多了三个文件

tortoisesvn 服务管理_服务端_15


打开看下:

第一个index.jsp.mine: 这是我的(当前提交人02)

tortoisesvn 服务管理_tortoisesvn 服务管理_16


Index.jsp.r2:这是我的(当前提交人02)原始版本

tortoisesvn 服务管理_服务端_17


Index.jsp.r3:我们发现这个和01的一样,其实这就是01的。

tortoisesvn 服务管理_SVN服务器_18


最后我们打开index.jsp,带有感叹号的冲突文件。

tortoisesvn 服务管理_开发人员_19


上边清楚的爆出我和r3的冲突,即02和01我们修改冲突:然后删除掉多出的三个文件,然后发现index.jsp变成了红色的图标。

tortoisesvn 服务管理_SVN服务器_20


tortoisesvn 服务管理_tortoisesvn 服务管理_21


提交即可

tortoisesvn 服务管理_服务端_22


然后用01去更新一下看。

tortoisesvn 服务管理_SVN服务器_23


01也变成了刚刚02修改合并后的

总结

  • 冲突产生的条件:两个或多个开发人员共同修改了一个文件之后并且提交会产生冲突。
  • 如何避免冲突:
    1 修改代码之前先进行更新。(不能保证不冲突,但是前提)
    2 项目经理分配任务的时候需要独立考虑,为不同的人分配不同的模块,这样尽可能避免冲突。

Showlog

tortoisesvn 服务管理_svn_24


查看日志:这是我们对这个文件的修改记录。

tortoisesvn 服务管理_开发人员_25

误删文件后如何处理

问题:但01不小心删除了index.jsp后,又不小心提交了。

tortoisesvn 服务管理_SVN服务器_26


tortoisesvn 服务管理_svn_27


tortoisesvn 服务管理_SVN服务器_28


但是02此时还有index.jsp,

tortoisesvn 服务管理_服务端_29


当他执行update后发现index.jsp不见了。

tortoisesvn 服务管理_开发人员_30


可是这个index.jsp是有用的,02很生气,01交代了是自己不小心做了删除后提交的操作,导致02的文件丢失。幸好02是个有经验的人,于是他做了一下操作,找回了index.jsp。

tortoisesvn 服务管理_服务端_31


点击showlog

tortoisesvn 服务管理_svn_32


选择版本,OK。

tortoisesvn 服务管理_svn_33


02的index.jsp又回来了。但是当02进行update后发现index.jsp又不见了。于是他很郁闷。不得不重复上边的步骤找了回来。他想我提交这个文件到版本库不就OK了,于是想要提交

tortoisesvn 服务管理_tortoisesvn 服务管理_34


他惊奇的发现提交按钮变成灰色了,无法提交。

不能更新,又不能提交,这怎么办?

  • 不要进行删除后的提交操作。避免此种情况发生。
  • 添加到忽略列表中。Svn不对index.jsp进行版本管理。



    然后再-Add-Commit:

完毕

至此,如何搭建自己的svn服务器已经讲解完毕!怎么样,是不是挺好玩的!