团队作业8——第二次项目冲刺(Beta阶段)5.27
1、当天站立式会议照片
会议内容:
本次会议为第七次会议
本次会议在陆大楼2楼召开,本次会议内容:
①:检查总结上次任务完成情况
②:安排今天的分工
③:对昨天的问题进行讨论
2. 每个人的工作 (有work item 的ID)
工作中遇到的困难:
随着beta计划的进行,到现在已经七天了,渐渐的我们的项目越来越完善,虽然项目还存在一些不足,但相信随着用户的体验提出的建议,并加以完善,会成为一个很棒的查重系统。
3. 发布项目燃尽图;请用专业的工具完成
横坐标:工作日,以天为单位,一共七天,代表着beta冲刺阶段的时间一共为7天
纵坐标:剩余卡片数,以卡片数为单位,代表着每一个任务。
黄线:代表设置的卡片数在规定的工作日内的理想的完成情况。
蓝线:表示我们实际完成的卡片数。
4. 代码签入记录:
https://coding.net/u/hts-technology/p/CodeManagement/git/tree/master
部分代码:
public void putFirstCommitIntoDB(Git git, SqlSession session, String userName, int projectId) {
//得到firstCommit
List<RevCommit> commitList = new ArrayList<>();
Iterable<RevCommit> commits;
RevCommit firstCommit = null;
RevCommit secondCommit = null;
try {
commits = git.log().all().call();
for (RevCommit commit : commits) {
commitList.add(commit);
}
firstCommit = commitList.get(0);
secondCommit = commitList.get(1);
} catch (GitAPIException | IOException e) {
e.printStackTrace();
}
String commitId = firstCommit.getId().name();
String timeStamp = getDateByMsec(firstCommit.getCommitTime());
int codeNumber = session.selectOne("com.team.userSql.getCodeNumber", projectId);
int addLine = codeNumber;
int subLine = 0;
session.insert("com.team.userSql.saveCommitInfoIntoDB",new CommitInfo(userName, projectId, commitId, timeStamp, codeNumber, addLine, subLine));
session.insert("com.team.userSql.saveLastCommit",new GitInformation(projectId, userName, secondCommit.getId().name(), codeNumber, timeStamp));
}
@Override
public void initPutCommitInfoIntoDB(int projectId, String userName) {
try {
SqlSession session = MyBatisUtil.getSqlSession();
String repositoryPath = session.selectOne("com.team.userSql.getProjectPath", projectId);
Git git;
git = Git.open(new File(repositoryPath));
putFirstCommitIntoDB(git, session, userName, projectId);
session.close();
} catch (IOException e) {
e.printStackTrace();
}
}
十个问题
-
你的团队的源代码控制在哪里?用的是什么系统?如何处理文件的锁定问题?
答:我们团队的源代码控制用的是git,项目开发用的是eclipse,远程代码管理平台是coding
场景: 程序员果冻正在对几个文件进行修改,实现一个大的功能, 这时候,程序员小飞也要改其中一个文件,快速修复一个问题。怎么办?一个代码文件被签出 (check out)
之后,另一个团队成员可以签出这个文件,并修改,然后签入么?
答:主分支master,果冻要实现一个大的功能,可以在当前master分支开一个新的分支guodong对文件进行改写。程序员小飞也开在当前master分支开一个分支xiaofei进行bug的修复,修复完成之后与master进行合并,果冻完成了功能的实现之后再与master分支进行合并。 -
如何看到这个文件和之前版本的差异? 如何看到代码修改和工作项 (work item),缺陷修复 (bug fix) 的关系。
场景: 程序员果冻看到某个文件被修改了,他怎么看到这个文件在最近的修改究竟改了哪些地方? (例子)
coding上直接查看:
-
如果某个文件在你签出之后已经被别人修改,并且签入了,那么你在签入你的修改的时候, 如何合并不同的修改(merge)? 你用了什么工具来帮助你?
答:如果文件被队员修改了并提交,你也修改并要提交的时候,在eclipse上将队员修改的地方pull下来,然后手动解决冲突
这个图的左边是你现在文件的内容,右边是队员提交当远程仓库的内容,然后手动进行冲突的解决,最后再提交到远程的仓库
-
你有20个文件都是关于同一个功能的修改,你要如何保证这些文件都同时签入成功(修改的原子性),或者同时签入不成功?
答:队友们在进行功能是开发的时候都是开各自的分支进行功能的开发的,在完全完成了一个功能的开发之后才会合并到master分支,这样别的队员都是从master分区将代码载入的,分支开发的好处就是我的代码没有完善的写完,也可以push到远程的仓库,别人只从master分支pull下来,所以不会有冲突 -
你的PC 上有关于三个功能的修改, 但是都没有完成,有很多文件处于半完工的状态,这时你要紧急修改一个新的 bug,如何把本地修改放一边,保证在干净的环境中修改这个 bug, 并成功地签入你的修改 --- changelist management。
答:在当前master分支开一个新的分支brach对文件进行改写。当前master分支开一个分支bug进行bug的修复,修复完成之后与master进行合并,完成了功能的实现的brach分支之后再与master分支进行合并。 -
规范操作和自动化
-
如何给你的源代码建立分支?
场景:你们需要做一个演示,所以在演示版本的分支中对各处的代码做了一个临时的修改, 同时,主要的分支还保持原来的计划开发。 你们怎么做到的? 在演示之后,演示版本的有些修改应该合并到主分支中,有些则不用,你们是怎么做到的?
答:在master分支上新建一个brach分支,将要合并到master分支的修改在这个branch实现,commit之后在brach分支在开一个分支进行不合并到主分支的修改,
-
一个源文件,如何知道它的每一行都是什么时候签入的,为了什么目的签入的 (解决了哪个任务,或者哪个bug)?
答:coding上可以查看文件的每次commit与上一次的不同,不同的地方也会用不同的颜色显示出来
-
如何给一个系统的所有源文件都打上标签,这样别人可以同步所有有这个标签的文件版本?
答:git是有打标签的功能的,切换到某个分支,然后进行打标签,标签的名字自己写,所以可以标记有用的信息
-
你的项目的源代码和测试这些代码的单元测试,以及其他测试脚本都是放在一起的么? 修改源代码会确保相应的测试也更新么?你的团队是否能部署自动构建的任务?
答:测试和源代码是放在一起的,修改源代码,相应的测试修改是认为保证的