项目 | 内容 |
---|---|
这个作业属于哪个课程 | 2020春季计算机学院软件工程(罗杰 任建) |
这个作业的要求在哪里 | 个人博客作业 |
我在这个课程的目标是 | 完成一次完整的软件开发经历 并以博客的方式记录开发过程的心得 掌握团队协作的技巧 做出一个优秀的、持久的、具有实际意义的产品 |
这个作业在哪个具体方面帮助我实现目标 | 通过邹欣老师的《构建之法》 在开始团队项目前先了解清楚“团队”和“项目” |
学会提出问题
问题零:课程的打分是否合理/h3>
参见《构建之法》—— 给任课老师和助教的建议
这堂课如何打分简单:把每次作业的表现分为N档,最优秀的几个同学得满分,第2档的同学得1/2的分数,第3档的同学得1/3的分数,依次类推下去,这就是1/N的打分体系。迟交作业0分,不交作业倒扣分。就像下图实线显示的那样。虚线是传统的“大家都能及格”的分数分布,如此分布看似皆大欢喜,其实是对优秀学生的极大不公。
Git 是 Linus 为了更好的控制自己的 Linux 源代码的管理而创新出来的管理工具,其核心思想是充分的分布式,特性之一是允许离线操作。Git 通过将工作区分为三棵树的方式来管理自己的代码进度。
第一棵树是自己的 工作空间,修改代码肯定首先是在自己的工作空间发生变化;
第二棵树是 暂存区,是一个临时保存的区域,需要通过 的命令来将自己的工作空间中的修改保存到暂存区;
第三棵树是 HEAD, 始终指向最后提交的结果,运行 来讲暂存区下的修改提交到 HEAD上;
三棵树保证了Git是一个可以本地离线运行的源程序管理工具,开发者可以随意回到之前的任意一个 commit 的版本中去。
最后在在线的状态下,可以通过 将本地的HEAD提交到远端的仓库中,保存本地的修改。这种思想对于初学者来说简直就是灾难。我在一年前学习面向对象和操作系统的时候才开始接触Git,一开始上手太难理解为什么要构建三棵树了,觉得为什么不直接本地保存然后同步到线上呢随着使用的时间的推移也发现了这种构建的好处,特别是可以回到任意一个commit是开发者的福音。还有 Git 的 branch 也是对于项目开发特别友好的设计,可以生成 Debug、Release、Develop 等等分支,在分支上进行随心所欲的操作,都不会对主分支造成任何的影响。
今年有幸担任了面向对象课程的助教,在第一周的上机实验中,从学弟学妹们的身上看到我自己的身影。没有经历过 不被允许的 警是不完整的很多人一个实验两个小时也完不成基本的 Git 操作,要么在分支上出现了问题,要么在关联的远端仓库上出了问题,要么在ssh_key 上出了问题,等等等等。
如果单纯能够使用 Git 的话,学习并且使用一段时间就熟练了,但要是想彻底弄懂 Git,估计需要 Linus 的智商吧。Mercurial(hg)
既然 Git 这么劝退,我们就尝试一下据说门槛低,较易上手的 Mercurial。
关于 Git 和 hg 的对比,为什么 hg 比 Git 好上手,这个博客是我找到的最完整的介绍。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8YDxtxBb-1648546001083)(https://i.niupic.com/images/2020/03/08/6Z3y.png)]尝试了一会儿 hg,注册了 BitBucket 的账 ,但发现貌似 BitBucket 现在全面支持 Git 了,半天愣是没有找到如何使用 hg 初始化仓库,于是从 hg Guide 中 clone 了一个hg说明书的仓库使用。
在已经对 Git 熟悉之后,对 hg 上手是特别快速的,要说有什么特别的地方,hg 也有自己的 和 非常相似,两者的 都是一样的,但是经过我的查阅之后发现,是因为我现在的仓库规模不够大所以感受不到 hg 的方便之处。
hg 的优势经过总结有以下几点:
hg 给用户的信息较为友好、轻便。比如 查看日志的功能就特别简单清新,比如:
与 Git 的 SHA-1 编码制作的 commit_id 相比显示简单,但这里 Git 里面蕴含了 Linus 的个人的执念——“通过SHA编码可以让你未来任何时候都能回到你想要的任意一个版本”。
hg 提供了很多继承的命令,比如 , , 等等,可以直接使用,其中我尝试了以下 ,如果仓库是 站,可以直接部署到 localhost 上,如果不是 站则可以来显示这个仓库的有关信息,比如可视化的 branch 和 commit 等等。
![]()
可能对于每个人的习惯不一样选择的工具也是不一样的,在查阅hg 和 git 的对比和优缺点的时候,既有放弃hg转向git的,也有从git到hg的,但现在总体的大趋势是更多的源代码管理仓库偏向git,比如 bitbucket、github、gitlab,而hg已经被 Atlassain 收购,主要和 Atlassain下的工具进行集成。总之选择自己喜欢的就行,也不是有很多喜欢 Git 的死对头 CVS 吗/p>
参考链接
- 邹欣 | 现代软件工程讲义
- 周舜钦:学习金字塔的误解
- Grading by Category
- 维基百科 | 没有银弹
- 《There is a Silver Bullet》
- 《Biting the Silver Bullet》
- Assessment and Control of Software Risks
- 所谓的敏捷开发是一个坑吗- vczh的回答
- 微软的program manager主要要求什么样的核心素质
- 常用的四大绩效考核方法以及优缺点
- Git 有哪些缺点/li>
- 一不留神 这对兄弟搞出了全球第一个电脑病毒
- Linus 在 2007 年 Google Talk 上介绍 Git
- 就是她,写出了让阿姆斯壮成功登陆月球的代码!
- Wikipedia | Comparison of source-code-hosting facilities
- git – 简明指南
- 為什麼比 GIT 更好--理解 Mercurial 版本管理系統
文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树首页概览91985 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!