项目
这个作业属于哪个课程 2023北航敏捷软件工程
这个作业的要求在哪里 团队项目-代码管理准备
我们在这个课程的目标是 学习并实践软件工程开发的方法论。在把握整体流程和内容要素的基础上实践细节,培养开发技术、开发思维、团队协作等能力。
这个作业在哪个具体方面帮助我实现目标 进行团队代码管理的规范化实践,为后面的开发做好准备

零、团队代码仓库地址

Fork主仓库的仓库地址:Agile - TVC

删除敏感数据后新建的代码仓库地址:Agile - TVC - Delete

一、情况说明

任务看板与团队协作

本次任务的Maintenance是PM——Enqurance。

我们使用Notion实现了一次规模较大、周期较长、任务量不大的团队合作任务,团队成员对这一管理方式感到满意。我们在Notion上进行任务的布置、签到和完成情况的展示,同时附有一些比较困难的操作的说明。在后续的开发中,或许可以布置一个QA表和技术交流区以提高合作的效率。

团队代码管理任务布置链接:Agile - 代码管理任务

删除开发分支

我们在处理完一个PR后,通常会把额外检出的分支删除。在实际开发中,我们不一定会删除每一个额外分支,可能会保留一些比较重要的分支以便于代码回滚和检查。

HotFix

我们使用bfg.jar作为删除敏感信息所用的工具。在修复之前,我们在main分支的commit历史记录下找到了助教插入的SUPER-SENSITIVE-DATA.txt文件。

随后,我们clone了一份远程仓库代码并使用bfg脚本对该敏感文件进行删除。经检查后发现commit信息当中的确不存在该文件了。

误操作

在本次任务当中,由于对Git工具不熟悉,我们出现了一些误操作的情况:

  • Commit信息格式有误。部分团队成员(记不清了)在提交commit信息的时候出现了格式错误
  • 代码复审不严格。xkslttt同学疏忽了任务要求,发起了一个半对半错的PR,PM在合并的时候并没有发现,还是合并了这个PR,最后xkslttt同学修复了这个bug并且重新发起了一个PR
  • 修复冲突失误。wzy2001wzy同学在进行feature/game-2任务时忘记更新dev分支,把qmy同学的代码丢弃了,并发起了一个错误的PR。好在PM发现并及时解决了
  • 不会发布版本。PM在发布Task.1版本的时候不知道Release操作,在Task.2版本才想起来。
  • 部分issue忘记和PR直接关联。

这些错误可能会导致Git仓库的历史信息和助教所的期望不符,故而在此说明。

二、团队代码管理安排

DevOps选择以及分工

我们计划选择Github作为代码托管平台和CICD平台,选择腾讯云作为远程部署平台。各个小组的成员将会共同提前商议好开发环境以及主要工具,并且对开发时下载的各种工具包进行记录,便于在CICD和云服务器上进行部署。

对于代码版本管理,我们计划选择三名成员进行Pull Request的维护(PM,以及一名前端成员和一名后端成员),以便能够“小步快跑”地维护main分支。

Name Obligator
PM Enqurance
前端 Xu Kai
后端 WAN

团队代码管理方案

我们的团队代码管理方案采取课程组推荐的方案,并且布置在团队仓库当中。我们一致认为这是一个比较好的方案,并且对其中的一些可能造成理解偏差的内容进行了修改。

Agile - 代码管理方案

代码审查与发布

PM和PR的负责人员在合并PR之前需要对代码进行复审。此时,需要围绕新提交的代码考虑以下的问题:

  1. 代码质量:如可读性、可维护性、可扩展性、性能等方面。
  2. 安全性:代码审查可以帮助团队发现潜在的安全漏洞和风险,并采取措施来修复它们。
  3. 一致性:代码审查可以确保团队中所有成员都遵循相同的编码规范和指南,从而实现代码的一致性。

另外,其他的开发人员也要及时了解代码的变动与修改内容,以便他们维护自己的分支和代码功能。

代码在发布之前,需要经过一以下的步骤

  1. 代码审查:代码通过团队内部的审查流程,确保质量、安全性、一致性等方面。
  2. 功能测试:对代码的基本功能进行测试。
  3. 部署:代码部署到目标环境中。
  4. 后期维护:代码发布后,需要对上线的服务进行维护,及时修复错误。

代码风险管理

团队成员操作失误

虽然本次任务每一步操作都不难,PM在实践中发现,大家对Git工具的熟悉程序不尽相同,从而产生了各种各样的问题。几个比较关键的问题是:

  • 合并分支时操作错误。有的同学合并操作出现错误,没有rebase就进行操作,导致别人写的代码丢失了
  • 合并PR时不规范,代码审查不够严格。PM犯了一次这样的错误,导致有一些PR产生的顺序不符合要求
  • commit信息不规范。这里包括描述格式不规范、commit内容说不清变动等问题

当然,多踩了几次坑之后,大家对操作的熟悉程度逐渐提高了。有部分同学操作经常出现错误的情况下,需要额外的帮助。

这一类问题可以通过培训、检查减少,并且通常不会产生致命的错误。为了降低管理风险,在开发到一定程度时也需要整理一下开发分支,确保分支的简洁。

代码安全漏洞

如果提交历史记录中出现了敏感数据和信息,需要通过bfg等工具删除历史信息,同时更换关键信息,及时止损。

开发人员在编码的时候,也要注意不要引入关键的信息和危险的第三方库,避免代码安全从内部被攻破。

代码托管平台和云服务器都有可能被黑客攻击。在这种情况下,保本地备份是最好的办法;设置更强的服务器密码也会有帮助。

三、心得

  • git rebasegit merge

    git merge 会为合并的目标分支创建一个新的提交节点,这样的好处是合并的信息“有迹可循”;当然,坏处就是分支历史记录会变得多而杂乱。

    git rebase 可以将一条分支的更改应用到另一条分支的顶部,而不是创建一个新的合并节点。这种方法可以保持分支历史记录的简单和清晰(多出来的分支被嫁接到主分支之上),但可能会丢失一些合并信息。相较于git mergegit rebase操作需要使用者更加专注于操作的规范性。

    在进行rebase操作的时候,最好是将最新的公共分支rebase到自己的开发分支上,并且遵循rebase的黄金法则,不要再在公共分支上执行rebase操作。

  • PR(Pull Request)

    经查询资料后,在处理PR的时候(尤其是多个PR),要遵循一些原则。

    1. 按照紧急程度处理PR。按照提交的信息,优先处理紧急程度高的PR。
    2. 根据复杂程度处理PR。尽早合并易于合并的PR,这可以减小合并时发生错误的成本
    3. 在发起PR和处理PR的时候相互告知
    4. 在处理完PR后,可以删除不重要的分支

    PR的处理由三位同学负责,这样能够覆盖更多的时间,而不需要一位同学每隔一小时就刷新一次Github。

    在所有成员都发起PR后,我们经过讨论,认为应当先处理新增文件的PR、再处理BugFix的PR、最后处理风格修改的PR,这样可以减少冲突发生的可能性。不过在实际开发中,先处理新功能的PR还是先处理BugFix的PR取决于具体情况。

BUAA-2023软件工程团队项目——代码管理相关推荐

  1. vs 移除项目代码管理

    1.删除 vssscc 和 .vspscc文件. 2.将工程文件夹的只读属性去掉. 3..sln文件用记事本打开  找到GlobalSection 里面有SccTeamFoundationServer ...

  2. 现代软件工程团队项目贝塔阶段_大规模测试结果_2018.02.08

    现代软件工程团队项目贝塔阶段_大规模测试结果_2018.02.08 经过课程全班同学测试后,将收集到的所有BUG和建议汇总如下 BUG按照状态.严重程度.优先级进行了基本的分类 目前打算的BUG修改顺 ...

  3. 怎样在群晖中安装GitLab用于项目代码管理

    一.问题说明 ①需要在自己家里的群晖中安装gitLab用于项目代码管理: ②能够实现外网环境下访问家里群晖上的gitLab项目. 二.实现思路 ①在群晖应用商店中直接安装gitLab软件: ②通过ze ...

  4. [个人博客作业Week7]软件工程团队项目感想与反思

    在阅读了推荐阅读的材料之后,我想了很多东西.最终还是决定,以团队项目的经历为主线,叙述我关于软件工程的一些思考与体会. 凤凰涅槃,浴火重生 如果要我来概况这几周团队项目的经历的话,那么句话是我所能想到 ...

  5. 如何使用git等工具进行项目和项目代码管理

    一: 代码管理工具,将本地项目同步至新建的git仓库 对于一个使用过SVN, TFS, GIT等多种常用代码管理工具的开发者来说,个人还是更钟情于GIT. 其中基于git的平台又有很多,gitButk ...

  6. 软件工程团队项目Alpha版本产品介绍

    经过完整的用户场景定义.功能设计.开发和测试,耗时一个月,我们软件工程的团队项目"Academic search Conference helper"的alpha版本总算在近日出炉 ...

  7. 北航 2012 秋季 现代软件工程 团队项目要求

    同学们的小组要在下次课上 (10/15) 决定做哪一个项目 (按次序挑选),  确定之后写团队博客描述他们要做的究竟是什么系统 (不懂的地方可以在博客上提问). 这次课程有10 个学生团队,  我们有 ...

  8. 使用coding进行项目代码管理(全程可视化操作!)

    第1步 下载并安装git 下载地址:https://git-scm.com/  下载及安装过程略. 第2步 注册coding帐号 coding官网:https://coding.net  注册完毕之后 ...

  9. 软件工程团队项目——subway

    目录 零.分工 一.GitHub地址 二.PSP表格 三.控制台程序解题思路 1. 建模思路和文本信息 2. Dijkstra算法--/b功能 3. /c功能实现 4. /a功能实现 5. 换乘优化 ...

最新文章

  1. 测量角速度_锡膏的粘度如何正确鉴别和精确测量?
  2. 关于mysql数据库插入数据,不能插入中文和出现中文乱码问题
  3. mysql 硬盘空间不够_mysql磁盘空间不足的查排
  4. asp.net viewstate 数据过大 导致错误
  5. css unchecked,详细介绍CSS中的伪选择器
  6. 利用自定义注解实现权限验证
  7. 年薪 80w 的程序员被鄙视了!
  8. Linux上,最常用的一批命令解析
  9. 简单测试.NET开源的PDF文档生成器QuestPDF
  10. zabbix自定义监控之声音报警、用户和组权限
  11. 常用企业管理工具介绍
  12. laravel实现短信验证码功能
  13. ssrf漏洞修复(ssrf漏洞修复方式)
  14. Orthogonal greedy algorithm降维
  15. esim工业路由器,爱陆通4G工业路由器5G工业路由器全网通工业路由器
  16. 抖音专业运营方案及策略技巧
  17. 锐捷网络:校园网基于802.1x无感知认证
  18. PS避免图片多次放大或缩小造成的模糊问题?
  19. atto软件测试速度,评测平台介绍及HD Tune、ATTO性能测试
  20. 计算机软件系统崩溃,系统崩溃了怎么办 如何快速还原崩溃的系统【步骤方法】...

热门文章

  1. 木马核心技术剖析读书笔记之木马通信与防火墙穿透
  2. idea破解方法,目前在用
  3. 同底数幂比较大小方法_初一下学期,巧用幂的有关法则比较大小,这些题目不再是难题...
  4. 股票解禁是好事还是坏事?
  5. 原生态创业者,及社交想象力
  6. protobuf string类型_Protobuf 使用指南
  7. UNIX/LINUX 平台可执行文件格式分析
  8. 我用Python做了个毕业合照的照片墙~
  9. Mybatis的配置XML
  10. BUG 终结者,现场抓获!|颠覆认知