目前流行的源程序版本管理软件和项目管理软件都有哪些?各有什么优缺点?

目前流行的源程序版本管理软件和项目管理软件:Microsoft TFS,Github, SVN, Coding,Trac,Bugzilla等。

Microsoft TFS

 TFS(Team Foundation Server )是一个工作流协作的引擎,它允许一个团队使用他们自定义的流程,并使用在项目历史中实时收集起来的一个集中的数据仓库。

优点:集成性。版本控制系统和工作项存储器在注册时集成在一起。当注册时,可以将其与一个或多个工作项关联。个人用起来一般也就主要用其源码管理功能。
 
GitHub
Ruby社区的程序员使用Git以后,找不到好的Git托管网站,于是就开发了Github出来。
优点:重视社区活动,在GitHub,用户可以十分轻易地找到海量的开源代码。速度快、灵活。
缺点:可能不是捕捉创意过程和记录创意点子的最佳工具。对于这种特殊功能模拟可以选择LayerVault 或其他相似工具。资料少(起码中文资料很少)。如果英文不好的人看不懂不知道说的啥。
SVN
 优点:性能提高。SVN不管文件是文本还是二进制类型,在内部都是以二进制差异比较算法来表示文件的更新部分。这表示所有的文件在文件库中都是以差异的形式储存。而且在网络上传输的,都是较小的文件差异部分。这也使创建分支、打标签、合并等操作可以非常快地完成.对目录的组织的管理更加方便。SVN不光对文件做版本跟踪,也会对目录做版本跟踪。因此可以根据项目的需要,对目录结构随时进行修改,可以把现有的目录移动到新的地方。保证提交操作的完整性。SVN对提交操作的处理方式类似数据库的事务处理,要么全部成功,要么全部无效,保证了原子性。
缺点:由于代码库不是分布式,而是集中在一个地方的。所以导致跨国访问的时候速度很慢。文中举的例子是代码库在美国,一部分人在中国频繁提交的情况。在这种场景下,速度不容乐观。由于代码库只有一份,特别是元数据都存在服务器上,所以当服务器崩溃的时候损失严重。
Coding
Coding 是一个面向开发者的云端开发平台,目前提供代码托管,运行空间,质量控制,项目管理等功能。此外,还提供社会化协作功能,包含了社交元素,方便开发者进行技术讨论和协作。
项目管理分为公开和私有项目,单个账号可以创建总共1000个项目,包括公开和私有项目。
私有项目只对项目成员可见,并不会公开展示于项目成员的个人页面上。只有项目创建者才能添加项目成员,项目的所有内容和更新都只有项目上的成员可以进行操作和查看。主要功能如下:
  1. 文档管理:支持所有格式文件的上传,单个文档不超过50M,同时支持预览文档:Txt,md,html 等和图片:jpg,jpeg,png 等。
  2. 项目成员:只有项目创建者才有权限添加或删除项目成员。
  3. 任务功能:团队成员可以完成查看、编辑任务内容,推送任务给其他成员等交互操作,项目成员可以对所有任务进行评论。此外,任务优先级符号表示了一个任务的紧急程度,有三个叹号,两个叹号,一个叹号和没有叹号四种级别。每个公司,都可能对不同的优先级有不同的定义。
  4. 项目讨论:只有项目成员可见的互动交流区域。该项目上的所有成员都可以在讨论区创建新的讨论帖,评论或者回复讨论。只有项目创建者和该讨论发起者可以编辑或删除已存在的讨论。
公开项目是完全公开的,包括源码,项目讨论,质量控制等,只有项目成员可以编辑该项目,但任何用户都可以进行 fork,关注,收藏等操作。