1、本周的作业请参照此文:http://www.ruanyifeng.com/blog/2015/12/git-workflow.html 制定本组项目的GitHub版本更新流程
首先通过该链接我们可以学到git flow有两个长期分支,开发位于develop分支,master分支用来存放对外发布的版本,而几个短期分支则进行功能开发、修复补丁、预期发布等。很多项目是持续发布的,因而master分支与develop分支区别不大,维护代价高。
Github flow则是从master分支拉出新分支,新分支开发完成后,需向master发起要给pull request,相当于通知组里其他成员来审阅代码来决定是否接受进而合并到master,类比同行评审,就拿我们上周作业而言,在master分支的基础上新建了个人名字缩写的分支,当建立好以后你上传本地文件到这些分支上,github就会发出一个pull request的要求,然后由管理员和其他成员来决定是否合并进master里。
GitLab是利用 Ruby on Rails 一个开源的版本管理系统,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目。它拥有与Github类似的功能,能够浏览源代码,管理缺陷和注释。它有一个简单的聊天程序,组员可以以此作为交流平台,在对文件有分歧之后更容易解决。除此之外提供的代码片段收集功能可以实现代码复用,又会减少编码和时间。gitlab flow的最大原则是上游优先,即master作为所有分支的上游,也就是说如果要想下面的分支有变化必须从mater开始部署。对于"持续发布"的项目,开发分支是预发分支的"上游",预发分支又是生产分支的"上游",有种一条路走到黑的感觉o(╯□╰)o。
对于我们的四则运算项目而言,实现基础功能的有C#、JAVA、Python,而实现全部功能的初步决定为JAVA WEB,没必要使用,经大家商量决定使用的是git和github相结合的分支。即Github是master分支要有需求文档和各种程序版本,然后有由各个程序名字命名的分支,比如C#,JAVA等。每个人除了在本地的master分支,还要有对应的程序分支,举例来说当用到远程C#分支的时候,我们首先使用git fetch origin; git checkout -b C# origin/C# 来在本地新建C#分支,最后每个人根据实际情况而言再在本地C#分支上创建debug、feature等分支。
基于上周所做我是把以前的全部清空(名字缩写的分支合并由于接受了pull request,导致必须合并后方能删除),以wz分支为例,首先将origin/wz分支fecth后解决冲突再将其合并入本地master分支上。
1 git fetch origin 2 git checkout -b wz origin/wz 3 git merge master
再将更新的东西push到Github上:
1 git checkout master 2 git merge --no-ff wz 3 git push origin master
合并的结果如图所示:
最后再在这个基础上建立相应分支:
后续项目程序版本都是基于这些分支以及本地分支进行更新(PS:JAVA WEB本周已将登陆注册界面写好,等功能进一步完善再将其push)
2、制定本组的代码规范、GitHub提交源码的标准
本组代码规范如下:
(1)去掉没有用到的类引用
(2)注意代码的缩进和格式化,在Eclipse和VS2013上可使用Ctrl+Shift+F来实现该功能
(3)命名类、函数、变量尽量不要使用简写,可以有意义的单词代替,函数和变量推荐骆驼命名法,即混合使用大小写字母构成标示符的名字,其中第一个单词首字母小写,余下的单词首字母大写;类名则为帕斯卡命名法,与骆驼命名法类似,只不过第一个单词字母大写
(4)合理使用空行,有清晰的脉络结构,增强可读性
(5)把所有的类变量、函数变量放到对应最前面,按照用途分组
(6)注释类、函数,说明逻辑,某些特定的变量或方法,都要加以解释
(7)减少冗余无用的代码,尽力不要在多个地方出现功能完全相同或类似的代码
(8)拆分大的类与方法, 保持小单元独立
GitHub提交源码的标准:
基于代码规范,Github提交的源码还要尽力保证程序的完备性,即程序的主要功能需实现,不能上传错误代码。另外每次的commit要尽可能详细,说明改动的地方以及版本等。
3、组长组织每周例会(可以使用群微信群试验一下每天沟通项目开发进度的方法)需要有证据能够在博客上公布
(1)小组成立例会记录:
(2)第一周例会记录:
(3)第二周例会记录:
(4)第三周例会记录:
4、根据邹欣老师的教材相关内容,确定小组成员的角色,细化项目需求、时间计划、列出产品积压工作项和预计开发时间
(1)小组成员角色
小组共五名成员,每个成员的角色分工和负责任务大致如下(还可以根据进度中任务的分配进行相应的调整)
(2)细化项目需求
对本项目的相关需求作出了细化,具体可见我组github中的项目需求文档(https://github.com/TDBYWB/Calc/blob/master/RequirementDoc.md)
下图列出了本系统详细需求:
(3)时间计划和预计开发时间
我们将在现代软件工程这门课开设期间完成本系统的开发,预计用时8-7周时间,初步的时间计划如下图所示:
(根据项目的进度以及考虑到开发过程中可能遇见的问题,时间计划将会做出相应调整)
主要时间节点:
各项细分任务用时:
(4)产品积压工作项
由于本篇博文编写于第五周,所以将在此列出前三周的积压工作项
(1)系统软件需求说明书的内容还需要进一步的完善,各别地方叙述不够详尽;
(2)编码过程中发现的问题还未解决。