发布时间:2018-01-10 16:15:28编辑:丝画阁阅读(1332)
1.什么是SVN
SVN: subversion 子级版本 (子级源代码版本控制管理软件)
一个项目内部的全部程序文件,基本每个程序员多少都要开发一点,造成的问题就是:大家给服务器上传程序文件的时候,后上传的要覆盖先上传的。
同一个项目有三个程序员共同开发,不可避免的情况是同一个程序文件有可能三个人都开发,这样他们在不同时间段之内给服务器上传自己开发好的文件的时候就会出现“文件覆盖”的情况,后上传的文件会覆盖先上传的文件。
SVN作用之一就是避免上述覆盖情况的发生。
svn:全称Subversion,是代码版本管理软件,管理着随时间改变的数据。这些数据放置在一个中央资料档案库 (repository) 中。 这个档案库很像一个普通的文件服务器, 不过它会记住每一次文件的变动。这样你就可以把档案恢复到旧的版本, 或是浏览文件的变动历史。 许多人会把版本控制系統想像成某种 “时光机器”。
使用svn可以很好地协调一个团队共同开发同一个项目,而不会出现代码冲突、覆盖的情况。
2. 使用svn的作用
① 多人开发同一个项目不会出现代码覆盖情况。
② 针对一个文件可以创建许多不同版本,并且可以随时查看不同版本的内容。
③ 公司领导可以通过svn查看每个人的工作情况
1. 服务器端安装
2. 客户端安装
双击安装客户端软件(安装完毕重启电脑):
(根据自己操作系统位数64/32做选择安装)
3. 创建多个svn仓库(存储代码)
给svn服务器端创建多个代码仓库,用于存储开发的不同项目的程序源代码文件。
> svnadmin create h:/svnServer/app/shop
为不同的程序项目创建对应的仓库,分别存储不同项目的程序代码文件。
4. 启动仓库服务
svnserve -d(独立端口运行) -r(仓库地址) 仓库地址
> svnserve -d -r h:/svnServer/app/shop //启动shop仓库服务
该svn服务走svn协议,端口号码是3690
5. 使得本地客户端(码农)与仓库取得联系
> 右键------> checkout(检出)
1. 给svn仓库提交第一个程序文件
步骤:
① 右键------> SVN---->Add
(本地的.svn对该文件形成管理),每个文件只需要一次add操作。
② 右键------> Commit(提交)
(本地的文件提交给svn仓库[远端])
1.1 开启仓库匿名账号权限
1.2 文件颜色标志
① 蓝色加号:本地的.svn对该文件有形成管理(远程仓库 还没有该文件记录)
② 绿色对号:本地文件、.svn管理的版本文件、仓库文件 三者内部一致
③ 红色叹号:本地文件 与 .svn和仓库文件 不一致(用户自己修改了该文件)
④ 黄色叹号:表示该文件正处于冲突状态
⑤ 蓝色问号:新建的一个文件,本地.svn 和 远程仓库 对该文件都没有记录
1.3 在仓库内部查看已经提交的文件
2. 多个程序员使用svn
首次使用svn执行 checkout,同时会把仓库最新程序文件更新到本地。
给仓库提交程序文件,执行 commit指令
把仓库最新的程序文件更新到本地,执行 update指令
后期 commit 和 update 指令要频繁使用。
3. 目录和文件的提交
新目录内部的文件不能直接提交,必须是目录本身已经提交给仓库了,该目录的文件才可以单独进行(add/)commit提交动作。
4. 一键commit同时提交多个文件
有的时候,在短时间之内修改、创建了许多文件
为了加快文件的提交速度,可以在当前文件目录点击“右键------>commit”,svn会把当前目录及内部所有子级递归目录需要提交的文件给选取上供commit操作。
(新文件会通过commit指令把 add和commit 合并起来执行)
5. 同时运行多个svn仓库服务
把所有仓库的上级目录当成服务给启动起来。
>svnserve -d -r h:/svnServer/app/
5.1 用户更换svn主机名地址
用户每次使用svn之前先执行update操作,把最新的程序文件更新到本地再进行具体开发。
更换主机名地址:
① 删除.svn文件
② 通过新的主机名地址checkout 与仓库联系
6. 同一个文件的不同版本切换
一个程序文件可以在svn仓库里边形成许多不同版本,并可以随时查看、对比。
不同版本切换:
两个程序员在短时间内对同一个文件进行修改,并进行提交,后提交的文件会尝试覆盖先提交者的文件,但是不会成功,因为有“冲突”机制避免此情况发生。
两个用户开发同一个项目,项目程序文件开发好后需要往服务器上传。
由于时间紧迫,在短时间之内两个程序员对同一个程序文件register.php进行开发。
产生的问题:10:00钟以后,服务器里边只会体现后者提交的程序文件内容,即时linken的提交内容,linken的文件会去覆盖mary的文件。
两个程序员在短时间之内开发同一个程序文件(register.php),在最后(10:00以后)服务器体现的功能只有linken用户的功能,mary开发的功能被覆盖了。
SVN的冲突:
广义角度的冲突:提交程序文件 本地版本号码 小于 仓库服务器版本号码.
狭义角度的冲突:多个程序员对同一个文件、同一处代码进行修改,在他们提交文件的时候会产生冲突。
冲突解决:
① 令牌方式解决,给每个文件设置令牌,谁获得令牌谁有权利开发该文件。
vss(visual source safe)源代码控制管理软件使用该方式
② 通过版本号码进行控制,用户commit文件,本地文件版本 与 仓库版本号码必须一致才可以提交,否则禁止提交。
(本地与服务器版本号码不一致,一定是本地的号码小于仓库的)
SVN就是通过版本号码解决冲突
1. 冲突具体形式:
1.1大家修改的代码不在同一处
解决:直接执行update操作,把仓库最新文件更新到本地,与本地文件做融合,之后继续提交给文件即可。
把仓库最新的程序文件给update更新多本地,使得本地 和 仓库的号码保持一致,
仓库的文件更新到本地,会与本地的文件进行融合(非覆盖操作),会把两个人的修改内容体现在一个文件中。
1.2 大家修改的代码在同一处(行)
解决:先执行update更新操作,把本地冲突文件打开“稍作”调整,继续提交。
1. 设置账号
1. 给账号设置权限
2.1 给具体用户设置权限
操作svn提示输入用户名和密码:
2.2 给一个组别设置权限
如果有许多程序员,他们是属于同一个小组的,
他们的针对一个项目的权限还都是一样的,权限的设置 和 取消都完全一致,管理员对这个小组全部人员进行权限控制就比较繁琐。
为了权限分配比较方便、后期维护也非常便捷,就给他们设置到一个组别里边去,给组别设置权限,就等于给每个用户设置权限了,权限操作非常方便。
2.3 开启只操作某个目录权限
步骤:
① 管理员先把该目录video给创建出来并提交给svn仓库
② 给外部团队 设置账号 和 设置工作目录、和其分支目录权限
③ 外包团队 建立与仓库分支目录 的联系(checkout)
④ 外包团队给该 目录提交文件
⑤ 管理员执行update更新操作,把该分支目录从仓库更新下来即可查看外包团队的工作情况。
给外包人员设置只可以操作Video目录的权限
把svn也做成开机启动项服务,类似apache服务:
有的系统禁止使用sc等比较底层的指令,可以把创建、删除服务的指令设置为“批处理”文件执行即可。
关键字:
本站部分内容来源网络及网友上传,本站未必能一一鉴别其是否为公共版权或其版权归属,如果您认为侵犯您的权利,本站将表示非常抱歉!
请您速联系本站,本站一经核实,立即删除。删文删帖联系【2789291421@qq.com】