本周的作业题目要求:
上网调查一下目前流行的源程序版本管理软件和项目管理软件都有哪些?各有什么优缺点?
初识源程序版本管理软件与项目管理软件
当看到这个题目时有点迷茫,在此之前并不知道什么是源程序版本管理软件,项目管理软件是什么。于是就进行了百度一番得到了如下的回答:源程序版本管理软件(版本控制软件)提供完备的版本管理功能,用于存储、追踪目录(文件夹)和文件的修改历史,是软件开发者的必备工具,是软件公司的基础设施。版本控制软件的最高目标,是支持软件公司的配置管理活动,追踪多个版本的开发和维护活动,及时发布软件。经过一段时间的消化才明白,这种软件会记录一个程序开发的各个版本以及其改动,帮助我们开发软件。项目管理是指管理项目计划、定义、监控、控制以及确认交付的过程,而项目管理软件顾名思义就是帮助我们进行项目管理的软件。
目前流行的源程序管理软件
SVN
SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS、CVS,它采用了分支管理系统,它的设计目标就是取代CVS。互联网上很多版本控制服务已从CVS迁移到Subversion。说得简单一点SVN就是用于多个人共同开发同一个项目,共用资源的目的。 由于其设计目的是为了取代CVS,所以比较优缺点我选择了用CVS与SVN对比,对比如下:
1、存储格式
CVS是个基于RCS文件的版本控制系统。每个CVS文件都不过是普通的文件,加上一些额外信息。这些文件会简单的重复本地文件的树结构。因此,不必担心有什么数据损失,如果必要的话可以手工修改RCS文件。
SVN是基于关系数据库的(BerkleyDB)或一系列二进制文件的(FS_FS)。一方面这解决了许多问题 (例如,并行读写共享文件)以及添加了许多新功能(例如运行时的事务特性。)。然而另一方面,数据存储由此变得不透明。
2、速度
CVS比较慢。 整体而言,由于架构实现的不同, SVN的确比CVS快很多。在网络上它只传输很少的信息并支持更多的离线模式的功能。但这也是有代价的。速度的代价就是巨大的存储(完全备份所有的工作文件)。
3、标志&分支
SVN采用标志和分支而抛弃了其他三件东西,实际上这意味着他们把这个概念替换为在档案库内部复制文件或目录以便保存日志。这样一来,无论标志创建还是分支创建都只是仓库内部的文件复制了。对分支而言:分支不过是在仓库内部的一个单独的目录而已了,不像早期还有些什么交错。对标志而言:已经不能对代码加标志了。在某种程度上说,SVN全文件编号补足了这个缺陷,SVN里整个仓库都有版本号,但不是针对单个文件。
4、元数据
CVS只允许存储文件。
SVN允许一个文件有任意多的可命名属性,功能十分完全。
5 文件类型
CVS最初是为文本文件存储而设计的。因此其他文件类型(二进制,统一码)文件的支持几乎没有,如需要的话则要有其他信息,并且客户端服务器端都要调整。
SVN会关心所有的文件类型,不需要你来手工操作。
6回滚
CVS允许任意的回滚,在任意一个已递交的版本上,尽管这要花些时间(所有的文件都要分别处理)。
SVN不允许递交后回滚。建议把版本库里好的状态版本加到末尾,覆盖掉损坏的版本。而损坏的版本无论如何也是会存在数据库里的。(SVN的滚回操作实际上是merge操作)
7事务
CVS中的“零或一”事务原则根本没有实现。如果检入几个文件的话(加到服务器上),很有可能部分文件完成了,而另几个没有。作为一个潜规则,手工纠正这些并且对余下的文件 (而不是所有文件)一一重复检入。这样这些文件将在两阶段中被检入。SVN的确支持“零或一”事务原则,这是SVN的一大优势。
GitHub
Git是一个分布式的版本控制系统,最初由Linus Torvalds编写,用作Linux内核代码的管理。在推出后,Git在其它项目中也取得了很大成功,尤其是在Ruby社区中。目前,包括Rubinius、Merb和Bitcoin在内的很多知名项目都使用了Git。Git同样可以被诸如Capistrano和Vlad the Deployer这样的部署工具所使用。
优点:
GitHub是一个非常万能的工具。对于任何大小的项目,他都是理想的工具;他也是伟大的web工作流工具。首先,他可以作为一个版本控制系统和协作工具,用它来发布工作。
利用GitHub,你可以将项目存档,与其他人分享交流,并让其他开发者帮助你一起完成这个项目。优点在于,他支持多人共同完成一个项目,因此你们可以在同一页面对话交流。
创建自己的项目,并备份,代码不需要保存在本地或者服务器,GitHub做得非常理想。
GitHub有着最大的开源社区,如果应用得当我们可以找到我们所需要的一切,同时我们也可以更好的和更多的人进行交流沟通!
学习Git也有很多好处。他被视为一个预先维护过程,你可以按自己的需要恢复、提交出现问题,或者您需要恢复任何形式的代码,可以避免很多麻烦。Git最好的特性之一是能够跟踪错误,这让使用Github变得更加简单。Bugs可以公开,你可以通过Github评论,提交错误。
在GitHub页面,你可以直接开始,而不需要设置主机或者DNS。
缺点:
如果,你是Github使用新手,首先的挑战就是摆正心态——需要不断实践和时间。
他可能不是捕捉创意过程和记录创意点子的最佳工具。对于这种特殊功能模拟可以选择LayerVault 或其他相似工具。之前,我们已经强调过Github非常适用代码跟踪,但是却不是最好的设计跟踪工具。将图片内容转化为代码,或者将设计用于产品设置,看起来依旧不是那样顺利。
这是由设计者决定的,然而,一些人发现 GUI 有点混乱,选择CLI代替。一些开发人员学习主要使用Git命令,这样可以解释为什么他们不太喜欢GUI的原因了。稍加练习,命令的学习是不太困难的。然而,你喜欢天天写命令吗?特别是跟踪项目历史或解决冲突的时候。所以就有了另外一群喜欢GUI的人们。将提交、修改、移动文件等操作可视化,会有一个更好的体验。而这些,就如之前提到的,需要时间来适应。
如果,你专门在GIthub上工作,版本控制存储库就值得你拥有,也需要你长期付出。
Coding
Coding 是一个面向开发者的云端开发平台,目前提供代码托管,运行空间,质量控制,项目管理等功能。此外,还提供社会化协作功能,包含了社交元素,方便开发者进行技术讨论和协作。 比较于其他的源程序管理软件,Coding是一个后起之秀,加之自己并未使用该平台,所以得不出过多的比较,也在网上的论坛、社区进行过寻找,所以并不是太了解它的优缺点。但是在知乎中得知国内好多的程序猿还是用着Coding和OSchina的。
Team Foundation Server
TFS是一种为 Microsoft 产品提供 源代码管理、 数据收集、 报告和项目跟踪,而为协作 软件开发 的项目。 可作为独立的软件,或 Visual Studio Team System (VSTS) 在服务器端后端平台。
TFS是个很不错的源程序管理软件。
TFS核心的,是对敏捷,MSF,CMMI等项目、过程管理、过程改善的支持。或者按微软的话,简称ALM,产品全生命周期管理。在这方面,真正了解,能应用起来的团队、公司的数量极少。多数真正用起来,也就是源代码管理这部分,这也仅仅是占TFS极小部分功能。对于小团队,绝大部分的公司,装个SVN还更实在。
GitHub注册流程
由于GitHub拥有着最大的开源社区,我选择了GitHub来帮助学习软件工程。
步骤一:
进入GitHub的官网:https://github.com/
步骤二:
进入注册页面,输入你的账户名称、邮箱、以及密码。
步骤三:
选择使用的服务标准,不同的服务有不同的收费标准。
步骤四:
完成注册!了解GitHub。
到此,本次的作业的基本要求已经完成了。接下来是附加题,使用GitHub上传代码。