版本控制:回答问题

此作业要求参见:https://edu.cnblogs.com/campus/nenu/2020Fall/homework/11435

一,问题回答

 0. 在吹牛之前,先回答这个问题: 如果你的团队来了一个新队员,有一台全新的机器, 你们是否有一个文档,只要设置了相应的权限,她就可以根据文档,从头开始搭建环境,并成功地把最新、最稳定版本 的软件编译出来,并运行必要的单元测试?

回答:我们还没有创建相应的文档,我们的功能实现比较简单,只要阅读相关博客园就可以理解项目进展情况。

1. 你的团队的源代码控制在哪里?用的是什么系统?如何处理文件的锁定问题?

回答:项目GitHub上,使用git进行版本控制。使用的是win10系统。由于我们没有对文件进行加锁,所以没有遇到锁定问题。

2. 如何看到这个文件和之前版本的差异? 如何看到代码修改和工作项 (work item),缺陷修复 (bug fix) 的关系。

回答:每次提交不同的版本,会添加备注,标明修改的地方。通过查看备注,就可以看到与之前的差异,也可以看到代码修改和工作项 (work item),缺陷修复 (bug fix) 的关系。

3. 如果某个文件在你签出之后已经被别人修改,并且签入了,那么你在签入你的修改的时候, 如何合并不同的修改(merge)? 你用了什么工具来帮助你?

回答:没有遇到过这个问题,因为每个人负责不同的功能,如果修改别人写好的代码,会在群里通知,然后在签入时手动合并不同的修改。

4. 你有20个文件都是关于同一个功能的修改,你要如何保证这些文件都同时签入成功(修改的原子性),或者同时签入不成功?

回答:每两个人负责同一个功能,如果修改同一个功能会相互通知,保证这些文件同时签入成功

5. 你的PC 上有关于三个功能的修改, 但是都没有完成,有很多文件处于半完工的状态,这时你要紧急修改一个新的 bug,如何把本地修改放一边,保证在干净的环境中修改这个 bug, 并成功地签入你的修改 --- changelist management。

 

回答:先保存半完工的修改文件,然后建立一个新的分支,在新的分支上修改这个紧急的bug。

6. 规范操作和自动化

你的团队规定开发者签入的时候要做这些事情:
    - 运行单元测试,相关的代码质量测试。
    - 代码复审 (要有别的员工的名字)
    - 和这次签入相关的issue 编号, 任务/task, 缺陷/bug 编号,等等, 以备查询。
    请问你的团队有这样的自动化工具让开发者方便地一次性填入所有信息然后提交么?  (高级功能, 代码提交之后, 相关bug 的状态会改动为  “fixed”, 并且有链接指向这次签入。)
    例子
回答:我们团队暂时还没有用到这样的自动化工具。
 
7. 如何给你的源代码建立分支?
回答:在master上建立分支。找到历史版本,安装到本地,然后重现这个问题。
 
8. 一个源文件,如何知道它的每一行都是什么时候签入的,为了什么目的签入的 (解决了哪个任务,或者哪个bug)?
回答:在GitHub上暂时还不能知道具体到每一行的签入签出记录,后期可以在每个人改代码的时候加上注释,何时修改,修改目的。
 
9. 如何给一个系统的所有源文件都打上标签,这样别人可以同步所有有这个标签的文件版本?
   代码每天都在变, 有时质量变好,有时变差,我们需要一个 Last Known Good (最后稳定的好版本) 版本, 这样新员工就可以同步这个版本, 我们如果需要发布,也是从这个版本开始。  那么如何标记这个 Last Known Good 版本呢? 
回答:在向GitHub提交时,将自己所写的内容标记好,然后建立一个新分支,把最好的版本提交到这个分支上,新员工就可以在这个版本开始工作。
 
10. 你的项目的源代码和测试这些代码的单元测试,以及其他测试脚本都是放在一起的么? 修改源代码会确保相应的测试也更新么?你的团队是否能部署自动构建的任务?
    在签入之前,程序员能否自动在自己的机器上运行自动测试,以保证本地修改不会影响整个软件的质量?
    在程序员提交签入之后,服务器上是否有自动测试程序, 完成编译,测试,如果成功,就签入,否则,就取消签入?
    团队是否配置了服务器,它自动同步所有文件,自动构建,自动运行相关的单元测试,碰到错误能自动发邮件给团队
回答:目前这个阶段我们还没有配置服务器。
 
作业题,分析比较各种软件构建环境:
 
GitHub:
优点:
  1. pull request,issue都是杀手级的feature
  2. 强调个人,符合hacker更看重名誉/成就感的天性

缺点:

  1. 国内访问速度太慢,经常出现connect time-out(非GFW所为)
  2. 不能很好的解决GB2312/GBK,对中文不够友好
  3. wiki功能太弱,直接导致文档(对于开源项目很重要)经常被分离到一个独立站点

codingnet:

优点:

         1.支持创建、编辑、筛选代码分支,并可将特定分支设为保护分支,方便版本管理。

         2.可选择不同的分支版本进行对比,查看代码改动前后版本差异和文件改动。

         3.国内访问速度和代码同步速度快。

缺点:

         国内使用人数多,不能与国外交流。

 

vss:

优点:

可同时开发产品的多个版本,

缺点:

由于VSS 没有服务器组件,因此涉及将数据从客户端传输到数据库的操作是非事务性的。这意味着如果发生问题,操作就无法回滚

posted @ 2020-11-04 16:05  板砖组  阅读(95)  评论(0编辑  收藏  举报