目录
1.前言2.SVN服务端设置3.开始使用SVN (1)新建版本库(2)迁入项目到SVN服务端(3)检索项目/拉取项目check out(4)提交代码commit(5)更新代码update4.SVN版本依赖冲突5.如何降低冲突解决的复杂度6.总结1.前言
本章介绍SVN版本控制工具使用的图文教程。上一章介绍https内网SVN服务端+SVN客户端安装配置。下一章,介绍外网访问内网的SVN服务器。传送门链接:
(SVN)https协议外网IP端口映射内网IP端口访问SVN服务端
CSDN链接:/qq_39038178/article/details/119249137
上一章SVN服务端和SVN客户端的安装配置,传送门链接:
(SVN笔记)SVN服务端+SVN客户端Tortoise——安装配置
CSDN链接:/qq_39038178/article/details/119139775
2.SVN服务端设置
说明:服务器端需要提供IP、端口、帐号、密码供客户端使用。
(1)打开SVN服务端管理器
(2)打开参数设置选项
(3)查看当前IP:windows+R键,键入ipconfig,按回车。
服务端访问Url地址操作工程项目:192.168.0.100
(4)VisualSVN Server Properties服务器属性——Network网络
先Apply——再OK
server name的值可以设置为:
——127.0.0.1(只能本地自己访问)
——电脑用户名(只能本地自己访问)
——当前IP(能够拼通IP的用户均可访问)
——Server port(使用默认值443即可)
(5)新建账号和密码:右键左侧菜单User,选择Create User
用户设置:
(6)用户分组Groups:右键左侧选择Groups,选择Create Group...
组名:First_Group
(7)访问URL登录服务端,右键左侧选择菜单Repositories,选择Browse
若提示不是安全链接,页面下方点击高级——选择继续访问就能正常跳转了
登录成功:内容是空的,但是已经确保通过账号密码能正常访问SVN服务器端
3.开始使用SVN
(1)新建版本库——仓库:左侧选择菜单Repositories,选择Create New Repository...
创建新仓库
选择默认设置,选择下一页,设置仓库名称
设置仓库名称:ZS_Project
设置仓库目录结构
设置仓库账户访问权限——这里设置所有svn用户都有读/写权限
选择Create,开始创建仓库——ZS_Project
选择Finish
(2)迁入项目到SVN
选择Copy URL to Clipboard,拷贝URL地址
选择迁入的工程项目:MyMavenProjects
开始导入工程项目
工程项目导入成功,版本号自增1
导入工程项目时另外一种方式,选择自选导入工程目录,就得永久授权,还
需要输入用户名和密码
输入用户名和密码,然后单击OK
在SVN服务器端查看导入的工程项目
(3)检索项目/拉取项目——check out
在需要拉取项目的目录中,右键选择SVN Checkout...
拉取信息
拉取结果:记得刷新一下,项目就会出现绿色打勾图标,代表最新版本
(4)提交代码commit
新建文件,右键选择TortoiseSVN,选择Add,将文件添加到版本库列表
再次右键文件,会出现SVN Commit...,选择SVN Commit...
记得刷一下,文件会出现一个蓝色+号的图标,代表待提交共享状态
输入备注信息,进行提交
提交成功——SVN服务端和SVN管理器也会同时更新提交
SVN服务端commit后
SVN管理器commit后
(5)更新代码update
如果当前资源不是最新版本,则在项目中空白地方右键,选择SVN Update
这里为了演示效果,另外新建文件夹OtherPerson,拉取SVN服务端最新项目版本
并“待commit提交的文件.txt”重命名为“OtherPerson的更新了该文件.txt”,来进
行SVN更新代码的效果演示
然后,执行步骤(4),右键文件,会出现SVN Commit...,选择SVN Commit...
commit结果
commit后SVN服务端实时变更到最新版本4
此时此刻,OtherPerson目录下的工程与SVN服务端是保持最新版本的项目、
OtherPerson的更新了“OtherPerson的更新了该文件.txt”,而MyMavenProjects
目录下的依旧是“待commit提交的文件.txt”,应在MyMavenProjects执行空白地
方右键,选择SVN Update,更新最新版本
更新成功
4.SVN版本依赖冲突
(1)版本冲突原因
假设A、B两个用户都在版本号为10时,A用户修改旧文件“OtherPerson的更新了该文 件.txt”,A用户首先修改完成后执行“SVN Commit...”提交新文件“A用户修改的新文 件.txt”到SNV服务器中,此时提交成功后SVN服务器中的旧文件“OtherPerson的更新 了该文件.txt”已被A用户修改为“A用户修改的新文件.txt”,同时文件版本号已经自增 为“11”了。
半小时后...
B用户在A用户提交完成之后“才”在版本号为10的旧文件“OtherPerson的更新了该文 件.txt”上修改结束,修改新文件为“B用户修改的新文件.txt”,修改完成之后执行“SVN Commit...”提交当前版本号为10的新文件到SVN服务器时,由于不是在当前最新的版
本号11上完成的修改,所以导致提交失败,提示版本过期。此时用户B执行“SVN Commit...”提交新文件,如果B用户和A用户修改了文件的同一行代码或文件,就会出
现冲突。
(2)版本依赖冲突现象
通俗理解:同时提交更新同一段代码,本机工程项目版本号<SVN服务端工程项目版本号
冲突发生时,SVN工具会在当前工作目录中保存所有的目标文件版本[上次更新版本、当
前获取的版本(即别人提交的版本)、自己更新的版本、目标文件]。
(3)解决版本冲突三种方式
方式一:
放弃自己的更新,使用svn revert (回滚),然后提交。在这种方式下不需要使用
svnresolved (解决),相当于自己辛苦几小时敲的代码,不要了,重新再来敲一次,
当然不需要解决冲突。
方式二:
放弃自己的更新,使用别人的更新。使用最新获取的版本覆盖目标文件,执行resolved filename并提交(选择文件—右键—解决)。
方式三:
手动解决:冲突发生时,通过和其他用户沟通之后,手动更新目标文件。然后执
行resolved filename来解除冲突,最后提交。
(4)解决版本冲突步骤
参考如下其他人写的博客文章,不是本人创作,如有侵权,联系删除!!!
参考地址:/jose-Lee/p/4896088.html
5.如何降低冲突解决的复杂度
(1)当文档编辑完成后,尽快提交,频繁的提交/更新可以降低在冲突发生的概率,以及发生
时解决冲突的复杂度。
(2)在提交时,写上明确的message,方便以后查找用户更新的原因,毕竟随着时间的推
移,对当初更新的原因有可能会遗忘。
(3)养成良好的使用习惯,使用SVN时每次都是先提交,后更新。每天早上打开后,首先要
从版本库获取最新版本。每天下班前必须将已经编辑过的文档都提交到版本库。
6.总结
仅自己学习记录,如有错误,敬请谅解~,谢谢~~~