SVN:Subversion 子级版本(子级源代码版本控制管理软件)
是代码版本管理软件,管理着随时间改变的数据。这些数据放置在一个中央资料档案库(repository)中。 这个档案库很像一个普通的文件服务器, 不过它会记住每一次文件的变动。这样你就可以把档案恢复到旧的版本, 或是浏览文件的变动历史。许多人会把版本控制系統想像成某种 "时光机器"。
使用SVN可以很好地协调一个团队共同开发同一个项目,而不会出现代码冲突、覆盖的情况。
SHAPE * MERGEFORMAT |
上图是多人共同开发同一个项目,内部最大的问题是,在比较短的时间内如果有多人同时开发同一个文件,会造成彼此代码覆盖的情况发生。A的代码在最后会把B的代码给覆盖掉,10点以后就只体现A程序员的功能效果。
SVN其中的作用一个就是避免上述情况发生。
Windows下SVN 服务端推荐 VisualSVN(https://www.visualsvn.com);
Linux下SVN 服务端推荐SubVersion(http://subversion.apache.org/);
客户端用得最多的应该非TortoiseSVN莫属(https://tortoisesvn.net/)
(1)避免了多人开发同一个项目出现代码覆盖情况。
(2)针对一个文件可以创建许多不同版本,并且可以随时查看不同版本的内容。
(3)公司领导可以通过SVN查看每个人的工作情况。
> svnadmin create h:/svnServer/app/shop |
> svnserve -d(独立端口运行) -r(仓库地址) 仓库地址 > svnserve -d -r h:/svnServer/app/shop //启动shop仓库服务 |
该svn服务走svn协议,端口号码是3690
> 右键------> checkout |
操作步骤:
① 蓝色加号:本地的.svn对该文件有形成管理。
② 绿色对号:本地文件、.svn管理的版本文件、仓库文件 三者一致。
③ 红色叹号:本地文件 与 .svn和仓库文件不一致(用户自己修改了该文件)。
④ 黄色叹号:表示该文件正处于冲突状态。
SHAPE * MERGEFORMAT |
把所有仓库的上级目录当成服务给启动起来。
· svnserve -d -r d:/svnServer/app/ 主机名:svn://localhost -------->app目录 svn://localhost/student---------->与student仓库取得联系 svn://localhost/book------------->与book仓库取得联系 svn://localhost/shop-------------->与shop仓库取得联系 |
删除.svn文件,断开与仓库的联系
重新checkout通过SVN新主机名建立与仓库的联系
一个程序文件可以在svn仓库里边形成许多不同版本,并可以随时查看。
(1)安装SVN的服务器、客户端软件
(2)创建仓库(根据不同的项目创建对应的仓库)
> svnadmin create 仓库地址 |
(3)使用SVN( checkout update commit )
(4)启动SVN仓库服务
> svnserve -d -r 仓库地址 |
上图两个程序员在短时间之内共同开发同一个程序文件(goods.php)
10点以后系统只会体现linken开发的功能(mary开发的功能被linken给覆盖了)
(1)给每个文件分配一个"令牌",谁拿到令牌谁就有权利开发该文件
(同一个程序文件同一个时间点只允许有一个人开发)
(2)给每个文件设置一个版本号码,提交的时候如果服务器的版本等于本地版本号码就允许提交,否则不允许提交(本地号码 小于 服务器版本)
广义角度的冲突,提交程序文件 本地版本号码 小于 服务器版本号码
狭义角度的冲突,多个程序员对同一个文件同一处代码的修改再共同提交文件的时候回产生冲突。
(1)冲突具体形式:
解决:
执行update操作,把仓库最新的文件更新到本地,并和本地文件做Merge融合操作。
继续提交文件即可。
无论什么样子的冲突:解决就是通过update把最新的版本更新到本地,文件稍作修改后继续提交。
操作步骤:
(1)管理员先把该目录给创建出来并提交给svn仓库
(2)外包团队给该 目录提交文件
(3)管理员删除本身创建的目录,执行update更新操作,即可查看外包团队的工作情况
类型:大家修改代码在(不在)同一处。
解决:统一执行update操作,服务器文件会和本身文件做融合(大家的版本号码统一),文件代码做适当调整继续提交。
(把匿名账号设置为none)
权限设置:
(1)具体用户权限设置
(2)给组别统一设置权限
(3)给用户设置只操作某个目录的权限
> sc create 名称 binpath= "服务执行文件 -r 服务仓库地址 --service" start= auto >sc delete 名称 |
如果大家想浏览我的下一篇文章,请留言
版权声明:此文章属于原创,不准随意转载:https://blog.csdn.net/LYQ2332826438