各位老铁们好,相信很多人对40 图 | SVN 开发流程优化-svn开发流程都不是特别的了解,因此呢,今天就来为大家分享下关于40 图 | SVN 开发流程优化-svn开发流程以及的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!
大家好,我是悟空~
本文主要内容如下:
前言
最近和一个研发团队打交道比较多,了解到他们使用SVN工具进行代码管理,而不是Gitlab。
SVN(Subversion):集中管理的版本控制系统。很多操作需要连接到公共SVN服务器才能进行操作。如果网络断开,则无法提交代码。简单易用。在SVN中创建分支实际上就是复制目录,这是非常昂贵的。
SVN集中管理示意图
Git:它是一个分布式管理版本控制系统。许多操作可以在本地完成。即使网络断了,也可以将代码提交到本地分支。强大而复杂的功能。很多操作都支持离线操作。
Git分布式管理示意图
他们长期以来一直使用SVN来管理代码仓库,并且只有一个代码分支。为了优化自己的开发流程,悟空编写了一套基于SVN的多版本控制开发流程,借鉴了Git版本控制的思想。
有的同学可能会问:为什么不改用Gitlab呢?
由于当前部署、安全等多重因素,我们暂时不会切换到GitLab,需要一个过渡期。
接下来我们就来看看如何使用SVN进行版本管理,以及如何优化开发和测试流程。
一、分支管理
SVN 服务的目录管理
分支目录:存放非主干分支的目录。其中有一个develop目录作为开发分支,其他与develop同级的目录作为日常开发分支、bug修复分支、hotfix分支。
因为SVN的多个版本实际上都是原文件目录的副本,因此版本不宜过多,代码包整体大小不宜太大,应控制在100M以内。
trunk目录:用作存放trunk分支代码的目录
测试环境部署develop分支。测试环境验证通过后,将develop分支合并到trunk分支。
另外,为了降低前期流程的复杂度,我们没有使用Tags的概念。
分支命名
由于SVN没有类似Gitlab的issue功能,因此分支命名时没有issue id,并使用日期作为标识符。
trunk:主干分支,不可重命名或删除。
develop: 开发分支,不能重命名或删除。
功能分支:feature_2024-11-22_{feature}。例如:feature_20220809_login。
错误修复分支:fix_2024-11-22_{feature}。例如:fix_20220809_login。
Hotfix分支(修补程序):hotfix_{日期}_{修复函数}。例如:hotfix_20220801_loginBug。
二、日常开发流程
开发流程和基于Gitlab的流程类似,但是SVN的功能没有Gitlab强大,所以一些细节上有所不同。
整理了两种风格的发展过程,方便查看。
列表形式
流程图形式
三、热修复流程
当生产环境遇到紧急Bug时,可以考虑在trunk分支的基础上分支出一个hotfix分支。修改完成后,先提交到hotfix分支,然后将hotfix分支合并到trunk分支,在生产环境中部署并验证。通过后,将trunk代码合并回develop分支,保持develop分支和trunk分支一致。
热修工艺
四、特殊流程
4.1 冲突解决
当两个开发人员修改同一文件并覆盖彼此的代码时,称为冲突。在短时间内,如果两个程序员对同一个文件开发相同的代码,后上传的就会覆盖先上传的。
分两种冲突情况:
(1)对同一文件不同的代码处进行修改迟到的提交者,先更新自己本地的开发分支,然后合并到自己的开发分支。其他人的代码和您的代码将被保留。然后提交自己的分支代码,并将该分支合并到develop分支。
(2)对同一文件的相同代码处进行修改与发生冲突的同事讨论是否使用他的或你的。
如果您使用自己的代码,请先备份代码,然后恢复更改,获取最新代码,然后覆盖所有更改。
如果您使用他的,请先备份您自己的代码,然后恢复您的更改以获得最新的代码。然后更新其他更改。 (需要手动更改,不要更改冲突)
五、开发流程演示
SVN中常用的概念和操作如下:
Repository(源代码库):统一存放源代码的地方。 Checkout:该操作用于将Repository中的源代码提取到本地。 Commit:该操作用于将修改后的代码提交到Repository。 Update:该操作用于将本地源代码与Repository中的源代码进行同步。 SVN客户端工具:TortoiseSVN
5.1 准备工作
准备阶段一般由项目的开发负责人负责。
需要做的就是在远程仓库创建一个trunk分支,并将项目的初始代码上传到这个分支。
5.1.1 初始化 svn 项目
首先在svn服务器上创建仓库,
这里我使用docker命令创建仓库:crm-repo
docker exec -it svn-server svnadmin 创建crm-repo
然后您需要添加用户名和密码。进入svn-server容器,修改/var/opt/svn/crm-repo/conf目录下的passwd、authz、svnserve.conf文件。
我们可以通过TortoiseSVN登录SVN服务器查看仓库的目录状态:
5.1.2 clone 仓库到本地
使用TortoiseSVN工具进行SVN Checkout操作
选择一个本地目录来存储此存储库。仓库地址路径为svn://192.168.56.11/crm-repo,本地路径为:E:\crm。
5.1.3 准备 trunk 目录和 branchs 目录
拉取的项目是一个空项目。我们需要在根目录下创建trunk目录和branch目录。
创建trunk 目录和Branches 目录。
trunk目录是trunk的顶级目录,可以直接把项目代码放在里面。 trunk目录名为trunk,是标准命名,与Gitlab的master含义相同。
5.1.4 提交初始代码到主干
5.1.4.1 添加源代码我们可以将项目的初始代码复制到trunk目录下。比如我在trunk目录下创建了一个src文件夹来存放源代码,并在其中添加了member.java文件。
可以看到我们做了三处修改,添加了trunk 目录、添加了src 目录、添加了member.java 文件。
添加成功后,会提示您具体更改的项目。
5.1.4.2 提交改动到远程仓库当然,这个添加是本地磁盘操作,并没有上传到SVN服务器。我们可以通过TortoiseSVN Commit更改到服务器。
5.1.4.3 查看远程仓库的版本提交到SVN服务器后,我们可以通过TortoiseSVN工具查看远程仓库的版本。
5.1.5 创建 develop 分支
首先我们需要将之前创建的分支提交到远程仓库。
基于trunk分支创建一个develop分支,存放在branches目录下。
如果创建失败,可以尝试检查创建中间文件夹。
之后就会在远程仓库中创建develop分支。本地没有/branchs/develop 目录。 SVN远程仓库的目录如下图所示。
如果想在本地看到develop分支,只需执行SVN更新操作即可。
5.2 开发新功能或修复 bug
基于develop分支新建本地开发分支feat_20220922_登录
远程仓库会创建一个feat_20220922_Login分支,SVN更新会获取这个分支。
修改代码,将代码提交到当前分支feat_20220922_Login。
开发分支的更改也可以在远程存储库中看到。
5.3 Code Review
方式:自己分支开发完成后,开发组长到组员座位上进行Code Review。
如果审核没有问题,则继续下一步。
5.4 合并开发分支到 develop 分支
开发者自己将develop分支合并到develop分支。开发分支将用于部署测试环境。
首先选择develop分支,然后使用SVN Merge进行合并。
可以选择将远程仓库的feat_20220922_Login分支合并到develop分支中。该操作只会修改本地的develop分支。我们还需要执行一个SVN Commit操作,将更改提交到远程仓库的develop分支。
将开发更改提交到远程存储库。
远程存储库开发已经可以看到更改。
5.5 部署 develop 分支到测试环境
该测试人员在测试环境中拉取develop分支的最新代码并将其部署到测试环境中。
5.6 合并 develop 分支到主干分支
测试环境验证通过后,将develop分支合并到trunk分支
5.7 收尾工作
删除远程存储库上的开发分支。
六、总结
本文仅使用SVN来优化项目中的开发和测试流程,以及如何在SVN上进行相关操作。不涉及SVN底层原理,也不涉及SVN的其他功能。有兴趣的同学可以去官网查看一下,或者也可以等我更新~
参考资料:
https://subversion.apache.org/docs/
https://svnbook.red-bean.com/
https://www.php.cn/tool/git/484903.html
好了,本文到此结束,如果可以帮助到大家,还望关注本站哦!
本文采摘于网络,不代表本站立场,转载联系作者并注明出处:https://www.iotsj.com//kuaixun/7897.html
用户评论
终于有人整理了SVN开发流程的图解,看了一下感觉挺直观易懂的啊。
有14位网友表示赞同!
对于新手来说,这个图应该能很好的讲解SVN的工作原理吧。
有13位网友表示赞同!
这么多步骤,看来SVN还真是一门技术呐!
有16位网友表示赞同!
学习了这40个图之后,相信我对SVN开发流程就更了解了
有7位网友表示赞同!
分享这种文档真的很棒,可以让更多人更容易理解 SVN。
有18位网友表示赞同!
感觉这个优化方案挺实用的,可以提升团队协作效率吗?
有16位网友表示赞同!
这40个图看起来很专业,作者一定非常熟悉SVN吧!
有8位网友表示赞同!
希望这些优化方法能够真正提高开发效率,减少冲突问题。
有5位网友表示赞同!
看完以后感觉SVN确实离不开它在这开发过程中扮演的角色啊
有6位网友表示赞同!
对于使用SVN的开发人员来说,这个文档绝对是必备学习资料!
有12位网友表示赞同!
之前对SVN的概念一直不太明白,看这些图解终于明白了。
有7位网友表示赞同!
40个图描述得非常详细,涵盖了大部分的关键点应该吧?
有8位网友表示赞同!
这真的是一个很好的教程,简单易懂,值得推荐!
有17位网友表示赞同!
感谢作者分享如此实用的资源,方便我们学习和理解SVN开发流程!
有7位网友表示赞同!
看起来很有用,有机会一定要尝试一下优化后的流程。
有7位网友表示赞同!
希望能更详细地讲解一些关键步骤的要点,比如冲突处理等等。
有6位网友表示赞同!
希望未来还有更多关于SVN优化的文章分享给大家。
有11位网友表示赞同!
这个图解帮助我更深刻地理解了 SVN 的功能和作用!
有15位网友表示赞同!
有了这个文档,我就可以自信地使用 SVN 开发项目啦!
有9位网友表示赞同!
真的很棒的资源!推荐给所有想了解SVN开发流程的朋友!
有14位网友表示赞同!