版本控制报告
作业要求【https://edu.cnblogs.com/campus/nenu/2018fall/homework/2380】
一、回答问题
1. 你的团队的源代码控制在哪里?用的是什么系统?如何处理文件的锁定问题?
场景: 程序员果冻正在对几个文件进行修改,实现一个大的功能, 这时候,程序员小飞也要改其中一个文件,快速修复一个问题。怎么办?
回答:团队项目的代码在coding.net上托管,采用git的方式进行控制,这个是老师在项目开始时统一规定的。
本项目开发用的系统是Windows10。
文件没有锁定,便于组员间的及时沟通。提交代码前要先更新代码,在本地处理好冲突之后,再推送至服务器。
2. 如何看到这个文件和之前版本的差异? 如何看到代码修改和工作项 (work item),缺陷修复 (bug fix) 的关系。
场景: 程序员果冻看到某个文件被修改了,他怎么看到这个文件在最近的修改究竟改了哪些地方? (例子)
回答:我们在安装git的时候同时安装了TortoiseGit,TortoiseGit中有与上一版本比较差异的功能,可以很方便的看到两个版本间的变化;也可以使用git log --stat 查看每次提交的内容差异 ,并显示两条类容。
我们还可以通过git log语句查看日志,通过查看日志中的提交说明,及代码中对修改作出的相应注释可以看到代码修改和工作项,缺陷修复的关系。
3. 如果某个文件在你签出之后已经被别人修改,并且签入了,那么你在签入你的修改的时候, 如何合并不同的修改(merge)? 你用了什么工具来帮助你?
回答:需要先从coding.net上pull下新的本地仓库,更新本地服务器代码,如果有冲突则对比解决冲突。使用工具是TortoiseGit。
4. 你有20个文件都是关于同一个功能的修改,你要如何保证这些文件都同时签入成功(修改的原子性),或者同时签入不成功?
场景: 程序员果冻要签入 20 个文件,他一个一个地签入, 在签入完5 个 .h 文件之后, 他发现一些 .cpp 文件和最新的版本有冲突,他正在花时间琢磨如何合并... 这时候, 程序员小飞从客户端同步了所有最新代码, 开始编译, 但是编译不成功 - 因为有不同步的 .h 文件和 .cpp 文件! 这时候, 别的程序员也来抱怨同样的问题,果冻应该怎么办?
回答:如果是与较多文件有关的修改,在进行签入前我们会尽量在群里沟通一下,尽量把这种事情的发生,或者可以在签入前将所有文件锁定。我们的项目进项到现在还未出现这种情况。
5. 你的PC 上有关于三个功能的修改, 但是都没有完成,有很多文件处于半完工的状态,这时你要紧急修改一个新的 bug,如何把本地修改放一边,保证在干净的环境中修改这个 bug, 并成功地签入你的修改 --- changelist management。
回答:保持原有内容不变,新建一个分支,在新分支上进行修改bug。
6. 规范操作和自动化
你的团队规定开发者签入的时候要做这些事情:
9. 如何给一个系统的所有源文件都打上标签,这样别人可以同步所有有这个标签的文件版本?
代码每天都在变, 有时质量变好,有时变差,我们需要一个 Last Known Good (最后稳定的好版本) 版本, 这样新员工就可以同步这个版本, 我们如果需要发布,也是从这个版本开始。 那么如何标记这个 Last Known Good 版本呢?
回答:在good known版本的时候就可以新建立分支good known,需要的时候就从分支good known中导出。
10. 你的项目的源代码和测试这些代码的单元测试,以及其他测试脚本都是放在一起的么? 修改源代码会确保相应的测试也更新么?你的团队是否能部署自动构建的任务?
回答:本小组没有进行单元测试和其他的测试脚本。
作业题,分析比较各种软件构建环境:
- github
- https://gitee.com/education
- coding.net
- code.csdn.net
- gitcafe.com
- www.visualstudio.com
- code.taobao.org
- Visual Studio Team Foundation Server
- gitblit, 在Windows系统下构建 git 服务,带网页端管理…
- Visual Source Safe (VSS)
- 自己搭建系统
回答:
git hub | coding.net | Visual Source Safe | |
优点 |
1、GitHub 只支持 Git 格式的版本库托管,而不像其他开源项目托管平台还对CVS、SVN、Hg 等格式的版本库进行托管。GitHub 的哲学很简单,既然 Git 是最好的版本控制系统之一(对于很多喜欢 Git 和 GitHub 的人没有之一),没有必要为兼顾其他版本控制系统而牺牲 Git 某些独有特性。因此没有支持其他版本控制系统的历史负担,是 GitHub 成功的要素之一。 2、GitHub 对 Git 版本库提供了完整的协议支持,支持 HTTP 智能协议、Git-daemon、SSH 协议。 3、GitHub 提供在线编辑文件的功能,不熟悉 Git 的用户也可以直接通过浏览器修改版本库里的文件。 4、将社交网络引入项目托管平台是 GitHub 的创举。用户可以关注项目、关注其他用户进而了解项目和开发者动态。 5、项目的 Fork 和 Pull Request 构成 GitHub 最独具一格的工作模式。对提交代码的逐行评注及 Pull Request 构成 GitHub 特色的代码审核。 6、GitHub 通过私有版本库托管、面向企业的版本库托管和项目管理平台、人员招聘等付费服务获得了商业上的成功,这种成功使得 GitHub 不必以页面中嵌入广告的方式维持运营,最大的受益者还是用户。 7、GitHub 网站采用 Ruby on Rails 架构,在 Web 设计中运用了大量的JavaScript、AJAX、HTML5 等技术,支持对使用 Markdown 等标记语言的内容进行渲染和显示等。关注细节使得 GitHub 成为了项目托管领域的后起之秀。 |
Coding.net用的是目前最流行的版本控制系统。 基于云主机云存储的基础支撑下的产物—— Coding.net 是一个“云中云”平台。 coding.net 速度快。 coding.net安全性高。 |
微软的VSS版本控制软件,简单,上手快。 软件支持Windows系统所支持的所有文件格式,兼容Check out-Modify-Check in(独占工作模式)与Copy-Modify-Merge(并行工作模式)。VSS通常与微软公司的Visual Studio产品同时发布,并且高度集成。 VSS的项目组织管理使得开发小组的协调变得简单容易且很直观。 |
缺点 | 国内偶尔访问困难,有时访问速度堪忧 | 稳定性差 |
VSS遇到奇怪的问题,提交大的文件(30MB左右),总是崩溃,显示延缓写入错误,英文提示是error from reading file. VSS(6.0d及较早版本)最广受垢弊的缺点是需要快速大量的信息交换,因此仅适用于快速本地网络,而无法实现基于Web的快速操作,尽管一个妥协的办法是可以通过慢速的VPN。 |
二、报告
1.α阶段代码矩阵
刘莹莹 | 潘世维 | 周昊 | 王玉潘 | 赵美增 | 祝玮琦 | 孙韦男 | 朱珅莹 | |
2018.10.17 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 |
2018.10.18 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
2018.10.20 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
2018.10.21 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
2018.10.22 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
2018.10.23 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
2018.10.24 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 1 |
2018.10.25 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 |
2018.10.26 | 0 | 2 | 0 | 0 | 0 | 0 | 0 | 0 |
2018.10.27 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
2018.10.29 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
2.β阶段第一周代码矩阵
刘莹莹 | 王玉潘 | 潘世维 | 周昊 | 赵美增 | 孙韦男 | 祝玮琦 | 范靖璇 | |
2018.11.13 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
2018.11.14 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
2018.11.15 | 1 | 0 | 1 | 0 | 0 | 1 | 1 | 0 |
2018.11.16 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 0 |
2018.11.17 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 0 |
2018.11.18 | 1 | 0 | 1 | 0 | 0 | 1 | 1 | 0 |
2018.11.19 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 0 |
3.check in log
时间 | 人员 | message | 所属功能 |
Oct 17 21:27:10 2018 | wangyp(王玉潘) | init | 基本框架 |
Oct 18 23:18:55 2018 | KamiForever(潘世维) | 添加播放音乐功能 | 音乐播放功能 |
Oct 20 19:30:43 2018 | liuyy0817(刘莹莹) | 音乐加强 | 改进音乐播放功能 |
Oct 21 21:42:25 2018 | zhushenying(朱珅莹) | 增加了文件的读取功能 | 增加了文件的读取功能 |
Oct 22 20:27:52 2018 | doubanjiang73(祝玮琦) | 视频功能增加 | 视频功能增加 |
Oct 23 20:23:59 2018 | KamiForever(潘世维) | 添加提示功能 | 添加提示功能 |
Oct 24 18:56:59 2018 | liuyy0817(刘莹莹) | liu | 音乐功能 |
Oct 24 19:29:18 2018 | zhushenying(朱珅莹) | zhu | 文件读取功能 |
Oct 24 19:53:08 2018 | sunsss(孙韦男) | zenjiatishikuang | 增加提示框 |
Oct 24 21:11:37 2018 | doubanjiang73(祝玮琦) | zhu | 视频功能 |
Oct 25 17:46:22 2018 | doubanjiang73(祝玮琦) | 储存缓存 | 储存缓存 |
Oct 25 20:15:39 2018 | sunsss(孙韦男) | sun | 提示框 |
Oct 26 21:07:52 2018 | KamiForever(潘世维) | 补充题目 | 补充题目 |
Oct 27 22:01:24 2018 | KamiForever(潘世维) | 添加音量设置和活动结束控制 | 添加音量设置和活动结束控制 |
Oct 29 23:40:08 2018 | KamiForever(潘世维) | alpha发布 | alpha最终版 |
Nov 14 22:11:55 2018 | KamiForever(潘世维) | 更新界面 | 更新界面 |
Nov 15 18:54:09 2018 | doubanjiang73(祝玮琦) | update | 更新 |
Nov 15 19:16:57 2018 | sunsss(孙韦男) | work | 更新 |
Nov 15 20:29:30 2018 | liuyy0817(刘莹莹) | ido | 更新 |
Nov 16 15:14:29 2018 | sunsss(孙韦男) | friday | 更新 |
Nov 16 17:00:48 2018 | doubanjiang73(祝玮琦) | i do | 更新 |
Nov 16 17:43:51 2018 | liuyy0817(刘莹莹) | dd | 更新 |
Nov 17 18:26:39 2018 | sunsss(孙韦男) | three | 更新 |
Nov 17 19:19:31 2018 | doubanjiang73(祝玮琦) | 11.17 | 更新 |
Nov 17 20:56:44 2018 | liuyy0817(刘莹莹) | 8 | 更新 |
Nov 17 23:23:26 2018 | KamiForever(潘世维) | 更新背景和接口 | 更新背景和接口 |
Nov 18 14:59:14 2018 | sunsss(孙韦男) | four | 更新 |
Nov 18 20:12:41 2018 | doubanjiang73(祝玮琦) | 11.18 | 更新 |
Nov 18 21:40:32 2018 | liuyy0817(刘莹莹) | 18 | 更新 |
Nov 19 17:51:46 2018 | sunsss(孙韦男) | monday | 更新 |
Nov 19 20:15:56 2018 | doubanjiang73(祝玮琦) | 11.19 | 更新 |
Nov 19 21:35:22 2018 | liuyy0817(刘莹莹) | up | 更新 |
4.每位队员的代码贡献量比例,以数据和饼状图给出