简介 {#简介}
SVN是代码版本管理工具,它能记住每次的修改、查看所有修改记录、恢复到任何历史版本和恢复已经删除的文件。
SVN比起Git的好处就是使用简单,上手快;具备目录级权限控制,用户只能访问指定目录下的文件;且子目录就可以检出(Checkout),减少不必要的文件检出。
SVN的基础操作:检出(checkout)、新增(add)、提交(commit)和更新(update)。
冲突 {#冲突}
产生冲突的原因:当多个人修改了同个文件的同一行或者是修改无法合并的二进制文件。
避免冲突的方法:
- 经常更新(update)同步下他人的代码,保证自己的代码是最新版本,避免跟他人的代码差别越来越大;
- 二进制文件不要多个人同时操作。
分支 {#分支}
什么情况下需要开分支?
- 隔离线上版本和开发版本;
- 大功能开发时,不想影响到其他人,自己独立开个分支去开发,需要时再合并回去。
SVN的目录结构:
- trunk(主干) 主要用来存放开发中的文件,平常开发都在主干上
- branches(分支) 当要开发另外一个版本时,就可以开一个分支出去
- tags(标签)
如果分支越来越多,则要更新的东西就会越来越多。所以可以把分支单独checkout一份出来。
正确的理解是这样的:
在SVN中,主干和分支的区别如下:
- 使用场景:主干(trunk)通常用于主开发目录,而分支(branches)则用于各种特定用途,例如版本发布维护、新特性开发或缺陷修复等。分支比较灵活一些,可以存放一些历史版本或者一些文档,这些不用更新到主干上。
- 稳定性:在开发过程中,持续集成通常验证的是分支上的稳定性和正确性,而主干在发布完成后往往没有进行集成验证,因此主干可能存在一定的风险。(每次测试,会将某个分支或几个分支集成去测试,测试没问题就会往主干上去合并,所以测试是可以保证分支是没问题的。但是主干是多个分支合并上去的且没有去把主干拿出来去验证,所以相对来说主干是可能存在一定的风险的)
- 更新速度:主干的更新速度通常比分支快,因为主干是主开发目录,包含了最新的开发成果。而分支的更新速度根据具体使用场景而定。
- 重要性:主干上的代码通常是核心功能或主要功能,因此其重要性较高。而分支上的代码则根据具体使用场景而定,如果是用于修复缺陷的分支,其重要性可能较低。
总结 {#总结}
-
SVN使用的注意事项:
使用SVN管理代码之前最好的顺序是先更新,再修改再提交,这样做可以避免发生冲突。 -
遇到的问题:
为什么"SVN在提交之前要先更新修改,为什么这样做就可以避免冲突"?
经过反复研究后发现,当自己本地的代码没有先更新的情况下,这时自己修改完自己的代码,而SVN服务器上的代码恰好别人又已经更新了另外的版本时,这时要是点提交就会发生冲突,所以当我们要修改代码之前最后就是先更新一下自己本地的代码,确保本地的代码是最新版本,这时修改完再去提交就比较能避免冲突。