Before you develop a marketing strategy, you should ask yourself what your business strategy is. Your marketing strategy should be based on your business strategy and brand strategy. Your marketing strategy is not equal to your business strategy.
为dminorstudio引入新的项目管理系统GitLab(上)
从2005年诞生至今,Git在软件开发领域早已不是一个新鲜的事物了,但直到半年前,我们对这个领域还是非常陌生的。这一方面是因为dminorstudio一直非常谨慎地控制团队的增长,以致协作开发和版本控制的需求一直没有真正凸显出来(我们一直在用Trello做为团队协作平台,用donedone作为问题追踪平台);另一方面,也是更主要的原因还是,作为技术团队领头人的我,对Git庞大而复杂的结构望而生畏,以致一直止步不前。总之,在经历了几次代码管理混乱的痛苦之后,我们还是决定痛定思痛,要引入Git来管理我们的代码和项目开发了。
所以这篇文章(以及它的后续文章)与其说是经验分享,倒不如说是我们学习过程的一个记录和总结。简而言之,就是现学现卖了。所以不足之处,还请读者不吝赐教。
版本控制系统和Git
在电子编辑时代,任何存储在可擦写设备上的数据都是可自由更改的,而且一旦更改被保存,便无任何踪迹可循。这造成了很多问题:比如不同版本的文件在不同用户不同设备上的拷贝很难管理(版本众多时尤其如此),团队协作时会发生自己的更改被他人覆盖等等。这些问题都是版本控制系统需要解决的。
比如,为了解决版本众多的问题,可以给每一次确定的更改编上唯一的编号,即产生一个版次(Revision),并记录各个版次的先后顺序,从而形成变更历史。历史可以回滚和还原,以便将文件恢复到任何一个已记录的状态(版次)下。
而为了解决团队协作的问题,一个自然的解决方法是给正在被更改的文件上锁,由管理员集中分配权限,以保证同一时间只有一个人在更改同一个文件。采用这种方式工作的版本控制系统叫做中央式版本控制系统(Centralized Version Control System)。这类系统典型的有大名鼎鼎的Concurrent Versions System(CVS)和Subversion(SVN)。
中央式版本控制系统要求所有参与者必须随时联网,而且由于同一时间只能有一个人在更改一个文件,团队协作的优势难以体现。所以一个更好的方法是,让参与者在主版本的基础上产生一个分支和本地拷贝,每个人可以自由更改自己的本地拷贝,并将更改提交到自己的分支,最终将自己的分支合并到主分支。只有在分支和分支之间存在冲突(比如多个人同时更改了同一行代码)的情况下才需要手工处理,否则系统负责自动合并各个分支。采用这种方式的版本控制系统叫做分布式版本控制系统(Distributed Version Control System)。最终,经过一段时间的淘洗,Git在多个同类产品中脱颖而出,成为今天应用最广泛的分布式版本控制系统。
分布式版本控制系统
(图片来源:Wikipedia.org)
各种Git产品比较
目前Git标准的制定团队发布的协议有local、http、ssh和git四种,除了第一种,后面三者都需要有运行Git服务进程的服务器做支持。
迄今为止,提供Git产品或服务平台(或两者兼有)的公司已经不在少数了,而且大部分Git产品都是开源的,这意味着你可以将它获取过来,安装架设在自己的服务器上。经过多年的发展和演进,Git服务平台逐渐形成了包含:Git核心(即分布式版本控制)功能,问题追踪(Issue Tracking)、里程碑(Mile Stones)、知识库(Wiki)等等一系列功能在内的综合性的软件开发项目管理系统。
GitHub
GitHub可以说是目前最权威、最正宗、也是应用最广泛的Git系统,主要功能是提供代码库托管服务。一些重量级的客户(如Ruby on Rails、jQuery、twitter bootstrap、NASA等)的入驻,使得GitHub声名大振,稳坐于行业老大的位置。GitHub上面海量的用户和项目使得它还兼具社交和推广的功能,很多公司和个人在上面发布和推广自己的软件产品、承接项目、或是笼络优秀的同行。目前几乎所有Git服务平台提供的功能都或多或少受益于GitHub的不断创新和发展,GitHub为Git世界的贡献是无人可替代的。
GitHub的logo和它的“章鱼猫(Octocat)”吉祥物形象早已深入人心
(图片来源:http://orcid.org/)
尽管如此,GitHub还是有它的局限,这主要体现在它的价格策略上。比如,GitHub的免费托管服务仅限于公开的项目,私有项目均需收费;另外,尽管GitHub是开源的,它却不是免费的,它的源程序价格不十分透明,而且据说并不便宜。
GitLab
如果有这么一个Git产品,它几乎具备GitHub的所有特性,但却比GitHub更便宜,甚至可以完全免费,是不是听上去“Too good to be true”?幸运的是,GitLab正是这样一款可爱的产品。
GitLab的Logo是一只“狸”(日文发音“Tanuki”)
(图片来源:http://about.gitlab.com)
(未完待续,敬请期待)