团队作业 week 14

时间:2024-09-11 21:37:44
0. 在吹牛之前,先回答这个问题: 如果你的团队来了一个新队员,有一台全新的机器, 你们是否有一个文档,只要设置了相应的权限,她就可以根据文档,从头开始搭建环境,并成功地把最新、最稳定版本的软件编译出来,并运行必要的单元测试? (在这过程中,不需要和老队员做任何交流)
    我们团队用github进行任务和代码管理。只要新队员加入我们团队的Organization,并将master分支的代码clone到本地,他就可以非常简单的运行我们当前的版本。
1. 你的团队的源代码控制在哪里?用的是什么系统?如何处理文件的锁定问题?
     由于我们团队比较特殊,前后端划分明确,并且前端开发两人,后端一人,所以基本是以结对编程的模式进行开发。也就是说,代码的签入和签出基本都是在本地整合过后再进行的,不存在多人同时修改代码的问题。
2. 如何看到这个文件和之前版本的差异? 如何看到代码修改和工作项 (work item),缺陷修复 (bug fix) 的关系。
     同1中所述,我们团队采用结对编程模式进行开发。所以在对代码进行修改时,前端的两人是同步的,不存在找不到被修改的文件的问题。而且在任务完成时,我们会将对应的work issue关闭,并且对其描述进行更新。在描述中我们会详细阐述完成此任务时,我们的代码中有哪些修改。
3. 如果某个文件在你签出之后已经被别人修改,并且签入了,那么你在签入你的修改的时候, 如何合并不同的修改(merge)? 你用了什么工具来帮助你?
     结对编程不存在此类问题。
4. 你有20个文件都是关于同一个功能的修改,你要如何保证这些文件都同时签入成功(修改的原子性),或者同时签入不成功?
     同上
5. 你的PC 上有关于三个功能的修改,但是都没有完成,有很多文件处于半完工的状态,这时你要紧急修改一个新的 bug,如何把本地修改放一边,保证在干净的环境中修改这个 bug, 并成功地签入你的修改 --- changelist management。
    只需要将待修改分支的代码clone到本地不同的位置,进行修复后同步到原分支就可以。
6. 如何给你的源代码建立分支?
    使用github建立临时分支。对于想要保留的功能,在本地进行整合后,再整合到原分支。
7. 一个源文件,如何知道它的每一行都是什么时候签入的,为了什么目的签入的 (解决了哪个任务,或者哪个bug)?

结对编程,两人同步开发,不会出现以上问题。

8. 如何给一个系统的所有源文件都打上标签,这样别人可以同步所有有这个标签的文件版本?
   代码每天都在变, 有时质量变好,有时变差,我们需要一个 Last Known Good (最后稳定的好版本) 版本, 这样新员工就可以同步这个版本, 我们如果需要发布,也是从这个版本开始。那么如何标记这个 Last Known Good 版本呢?
    我们的master分支上,保留最新的正确版本。
9. 你的项目的源代码和测试这些代码的单元测试,以及其他测试脚本都是放在一起的么? 修改源代码会确保相应的测试也更新么?你的团队是否能部署自动构建的任务?
    在签入之前,程序员能否自动在自己的机器上运行自动测试,以保证本地修改不会影响整个软件的质量?
    在程序员提交签入之后,服务器上是否有自动测试程序, 完成编译,测试,如果成功,就签入,否则,就取消签入?
    团队是否配置了服务器,它自动同步所有文件,自动构建,自动运行相关的单元测试,碰到错误能自动发邮件给团队
    在签入之前,两名程序员会确保正确性后,再把代码push到under-test分支。当天或第二天由测试员进行测试,测试合格后再整合到master分支。我们没有配置任何服务器。