01--SVN的作用
● 软件版本管理工具
● 记住开发人员的每一次修改
● 查看所有的修改记录
● 恢复到任何历史版本
● 对比任意历史版本的与当前版本的差异
● 根据岗位属性分配权限
02--SVN的基本操作
2.1--检出--checkout
红框标记的地址,根据项目的不同,选择你想要的文件到本地,
检出后如果文件夹没有绿色的勾,说明当前文件没有和服务器进行同步,需要重启电脑(同步主要是针对开发人员有读写权限,权限联系IT人员)
2.2--新增文件
创建一个文件夹“TEST”,新增一个文件“Interface.c”,
2.3--提交文件
右击文件夹内任意空白处,点击“SVN提交”,在下侧红框处选择你需要上传的文件,在上侧红框处记录本次的修改记录,后续会根据这个修建进行历史版本的查询
提交完成后,可去该网站上,看是否提交成功 网站上的内容也可以直接下载下来
网站联系IT,个人的话在SVN官方那里
2.4--网站信息
2.5--SVN更新
当你的文件需要提交时,在这之前需要进行更新,以防止造成冲突,覆盖了他人的修改文件
2.6--修改文件
打开“interface.c”文件,在36行处添加如下代码“H2sys_1ms_step;”
将该文件保存后,与该文件关联的文件夹的√都变成了感叹号
可以右击空白处进行提交,双击红框处,可以看到当前版本和上一版本的差异,确认改动是否正确
写好日志记录后确定提交,提交完成后,版本会更新,文件夹状态会同步,网站上提交记录会同步更新
2.7--查看日志
双击红框处,可查看当前版本与上一版本的差异,当该文件有多次迭代时,在日志处可以查看任意版本与上一版本的差异
03--SVN的撤销与恢复功能
3.1--撤销本地内容修改
还是以“interface.c”为例,我们在36行处增加一些错误信息
修改完成后,对该文件进行了保存,文件夹状态如下侧,此时我们发现文件内容改错了,需要撤销(此时还未提交)
按照下图方式找到“SVN还原”,或者打开“提交”选项,选择被修改的文件,双击确认是否真的是错误文件,确认后右击被修改的文件,选择“SVN还原”
选择“还原”后,之前的改动消失且文件夹状态正常
3.2--撤销提交内容修改
将下图的修改完成后,写好日志提交到服务器。
查看日志,右击当前版本,找到选项“复原此版本做出的修改”
此时文件夹又会变成感叹号,我们选择“提交”选项,点击文件对比差异,发现错误的信息已经被删除了,这一步也写好日志并确定提交
3.3--恢复到历史任意版本
查看日志,我们发现现在有了4个版本,突然发现后面的版本有问题,想恢复到初始版本30
选择版本30并右键选择“复原到此版本”
再打开“interface.c”文件,发现已经回到指定的版本,做好日志记录后,继续提交
查看日志
04--SVN的忽略和冲突功能
4.1--忽略功能
添加一个文件夹,添加一个interface.c文件,提交
提交与服务器同步后,发现文件重复,想要忽略掉
按照图示进行文件忽略,忽略后需要再次进行提交并做好日志记录
忽略功能成功应用后,该文件夹将不会显示任何状态,该功能也适用于单个文件,也可以在提交时选上文件进行忽略,当你不想忽略时,也可按原来的方法从忽略列表内进行删除
4.2--冲突解决
一旦发现在更新的过程中,有冲突,可以直接右键选择他们或者我们的文本进行解决,也可以点击“编辑”查看具体的冲突
05--SVN的分支功能
5.1--创立分支
在测试文件夹内创建3个文件夹,分别为主干trunk、分支branches、标签tags,并且把TEST内的文件挪进trunk文件夹内。提交并记录日志后确定。
Trunk主干相当于一个基础平台软件,当开发完善以后需要搭配不同的项目时,可以开通branches分支功能,进行不同项目的软件迭代管理
上述路径选择到branches分支,并新建一个项目文件夹ProjectA,记录日志,选择“版本库中最新版本”,确定后点击“SVN更新”
此时主干和分支相互独立,不会有影响,现在更改以下主干内的文件,看是否对分支有影响
将主干trunk内的interface.c文件第36行40改为55,提交并记录日志
打开branches内的ProjectA内“interface.c”文件,发现没被改动
5.2--合并分支
有时候主干的改动是平台化的,项目层面也需要改动,或者项目上的bug找到了跟其他项目都有关系,平台也需要同步更改,这时需要用到“合并分支”功能,例如把刚刚平台的trunk中代码的改动合并到branches中的ProjectA中的代码文件。
首先右击trunk文件夹,“显示日志”,找到想要合并的版本(1个或多个)
选择合并到的文件夹“branches”
那么文件夹“branches”会变感叹号,但是里面ProjectA文件夹内代码并没有被改动,仍然为40,这是因为trunk中没有ProjectA这个文件夹,我们在trunk中同样建立该文件夹,提交后再次运行,发现分支中的代码被改变了
提交时可以利用“最近信息”进行日志填写
再创建一个分支
在branches内找到ProjectA,右击找到切换,到ProjectB,也可以直接SVN更新,这样A、B就都有了
5.3--下载任意文件
可通过库浏览器下载任一版本的软件或工程文件
比如当前版本是45,想下载版本39,导出即可
06--软件版本管理方法
6.1--管理方法
基于现有的软件开发模式及模型结构,在SVN服务器端建立相应的文件结构,开发人员按照一定的操作步骤,提交软件变更至服务器,并在提交时按照既定的规则填写相关注释信息(版本信息,变更内容等),最终结合注释信息及SVN自带的版本号进行软件版本迭代管理。
Trunk:软件主干,进行平台化的软件管理
Branches:项目分支,基于项目的需求进行相关模块的变更管理(应用于不同的客户)
Tags:标签,用于软件发布管理(一般用于正式软件的发布,包括客户软件和内部软件不包含临时的测试软件)
文件夹包含完整的工程文件,下载后可以直接进行代码生成和编译
服务器管理人员:负责成员管理及权限配置
平台开发人员:trunk及branches文件夹的读写权限,负责平台相关模块变更(比如底层和通讯层,变更后同步到对应的branches层)
项目开发人员:branches目录下对应项目文件夹的读写权限
其他人员:相关文件目录的只读权限
6.2--版本分支
07--总结
基于SVN的软件版本管理
1.应用SVN可以实现软件版本迭代管理
2.SVN的版本分支图可以清晰展示软件迭代历史
3.应用SVN的日志功能可以清晰记录变更原因及内容
4.软件可以恢复到历史节点状态,可以在任意节点发布软件
难点:
1.SVN对非文本文件无法进行对比,所以软件开发人员需要确保提交的模型与预期变更一致。
2.SVN自带版本号是基于版本库根目录迭代,体现在一个项目上版本号不连续,所以开发人员提交变更时需填写日志信息,手动注释版本号及变更记录
3.SVN能够撤销和回退到任意版本,但每一步操作都会留下记录,为方便版本追溯,需尽量确保每一步操作正确,减少错误记录。