Tag Archives: git

tig真好用

tig是git的浏览器,我一直用来看代码库的commits历史,今天仔细看了下manual发现很多有意思的功能, 视图切换: 在主界面按大写S可以察看当前分支的状态,按t打开文件树,在文件树上按B可以察看blame界面,按H显示本地分支,按l显示log summery,在commit上按d显示commit内容。 显示选项: 在察看commit的界面里按.可以切换行号。 在主界面按大写D可以调整commit日期显示。 主界面按A选择显示committer的方式 其他: 方便的cherry-pick,用H切换到别的分支,选中commit然后按大写C就能完成cherry-pick了!

Moving to Git

如果一切顺利的话,Moodle会在这周把主代码库从cvs换到git,之前已经有几个子项目在用git协作了,这次迁移之后,标志着核心开发团队彻底抛弃了cvs。换版本管理工具绝对不是闲的蛋疼才干的事,工作将近三年实在是吃够了cvs的苦,缓慢的diff,古怪的$id:$,作为协作工具却没有解决团队开发的协作问题。 今天我们团队花了一整天研究git,发现迁移到git最大的难度是图形化工具的匮乏,Netbeans和Eclipse还没有正式发布的git插件,SmartGit算是最好的图形化工具的,但竟然不支持添加远程代码库(git remote),最后还是不得不通过命令行完成。对于初学者来说git那一大坨命令有点吓人,所以当我说用命令行做更快时,被人狠狠鄙视了,然后我用git命令,另一个同事用netbeans+smartgit比了下,任务是创建原始项目的clone,添加远程代码库,合并并推送。结果在他研究Netbeans测试版蹦出的那一坨Java异常的时候,命令行就搞定了,超级简单。虽然命令行的学习曲线比较陡,但利于开发人员彻底理解Git的工作方式,且不会被锁定到某个特定的GUI工具。

简单总结一下 Git 的使用

前段时间折腾Moodle的Quesion/Quiz模块,最大的难点不是开发,而是怎么跟另一个维护该模块的同事讨论,这哥们远在大不列颠,每次在tracker上留言都不得不等到第二天起床才能看到他的回复,更烦的是要review一个个patch,小点还好说,这动辄一万多行的大patch真不好一行行的解释。 然后决定把战线延伸到GitHub。对小项目来说Git相对CVS的优势不明显,徒增学习曲线,但对于Moodle这种庞大的开源软件,Git却是大大降低复杂程度,最重要的一点是创建分支的成本为零,我可以单独创建新分支以开发某特性,开发过程中可以方便的与上游代码合并,之前的cvs是无法享受这种便利的,我们不得不checkout多份拷贝进行测试。另一个很重要的特点是Git在本地保存全部改动历史,这样可以极其快捷的进行diff和blame 再说说GitHub,对于项目管理来说,GitHub肯定是不如Jira,但细化到编码这个层次,GitHub比Jira好很多,首先Jira没有官方的Git支持,无法追踪相关的Git提交,然后Jira不便于Code review(可能有好的插件会支持,说错了请指正)。GitHub在这方面做的很好,可以在git commit做inline note,代码浏览比viewvc强出一个世纪。 转到GitHub后,工作效率提高了很多,我白天把改动push到我的在GitHub的分支上,然后同事做Code review,提交改动,第二天我把他的改动合并到我的分支上,然后继续昨天的工作…… Git实际上是个新的开发模型,从编码到项目管理都不同于cvs时代。 简单总结一下Git的使用以 Moodle在GitHub的mirror为例。 打开 http://github.com/moodle/moodle,然后Fork,这个并不是必须的,之后可以通过git remote添加新的上游代码库 git clone 我自己的代码库 我不喜欢origin这个默认远程代码库名,所以重命名一下:git remote rename Continue Reading →