源代码管理工具
认识源代码管理工具
出现源代码管理工具的原因
为了解决软件开发过程中,由源代码引发的各种繁琐的问题
同时也是小作坊开发的局限性——硬盘坏了,欲哭无泪;无法做到多个人开发一个项目;无法对比两个版本的差异;代码改坏了,想回退也麻烦;command + z有局限性,关闭再打开就没法了
备份+备注也可以解决,然而依旧存在很多问题:
(1)如果备份不及时代码仍然会有部分丢失;
(2)版本备份:废空间和时间
(3)版本混乱:因版本备份过多造成混乱,难以找回正确的想要版本
(4)代码冲突:多人操作听一个文件(团队开发过程中常见的问题)
(5)权限控制:无法对源代码进行精确的权限控制
(6)追究责任:出现了严重的BUG,无法得知是谁干的,容易耍赖费空间,费时间
源代码管理工具的应用
正规的开发团队使用源代码管理(SourceControl)工具,源代码管理工具主要作用:代码版本管理和多用户并发修改管理。
源代码管理工具可以判断每一行代码里面每一个字符是谁写的。
能够追踪一个项目从诞生到一直定案的过程,记录一个项目所有内容的变化,方便查阅特定版本的修订情况
同时,由于源代码管理工具使用简单,不会增加工作量,不会对现有工作造成任何损害(坏的影响),因此成为了合格的软件开发人员必须掌握的技术。
源代码管理工具的应用
优缺点汇总和对比
源代码管理工具 | 优点 | 缺点 |
---|---|---|
SVN(Subversion) | 管理方便,逻辑明确,符合一般人思维习惯;易于管理,集中式服务器更能保证安全性;代码一致性非常高。 | 占用存储容量大,关心所有的文件类型;如果不能连接到服务器上,基本上不可以工作;不适合开源开发 |
Git | 对程序源代码进行差异化的版本管理,代码库占极少的空间。易于代码的分支化管理。 | 不支持中文,图形界面支持差,使用难度大。不易推广 |
ClearCase | 功能完善,安全性好,可以支持复杂的管理 | 学习曲线和学习成本高,需要集成ClearQuest才能完成完整的配置管理功能 |
VSS | 简单易学,使用费用较低;是微软产品可以得到稳定技术支持 | 基局域网,效率低,VSS自身安全性较差,只支持widows平台下 |
TFS(Team Foundation Serve) | TFS适合大团队,不仅包含源代码管理,还支持Bug管理、文档管理、持续构建 | 价格,安装较复杂(但一旦安装,TFS非常易于使用) |
TFS
TFS是一种为 Microsoft 产品提供源代码管理、数据收集、报告和项目跟踪,而为协作软件开发的项目。它不再只是面向开发人员或者是测试人员角色,而是要提供一个平台来有效协调和支持开发过程中各个角色,并使他们能够彼此紧密联系进行协作。 TFS可作为独立的软件,或 Visual Studio Team System (VSTS) 在服务器端后端平台。TFS是设计用于大规模团队,因而有两种拓扑结构供选择:双server和单server。
CVS & SVN
CVS
CVS是最早的开源、免费的集中式版本控制工具,但自身设计有问题,会造成提交文件不完整,版本库莫名其妙损坏的情况(开启版本控制之门1990年诞生,"远古时代"的主流源代码管理工具
SVN
SVN是集中式版本控制之王者,是CVS的接班人,修正了CVS的一些稳定性问题,是目前用得最多的集中式版本库控制工具,速度比SVN快,功能比CVS多且强大。在国内软件企业中使用最为普遍。
要想利用SVN管理源代码,必须得有2套环境:
服务器:用于存储客户端上传的源代码,可以在Windows上安装Visual SVN Server,大部分情况下,公司的开发人员不必亲自搭建SVN服务器
客户端:上传本地代码到服务器,或者跟新服务器的代码到本地,保持同步,可以在Mac上使用命令行、Versions、Cornerstone,开发人员就属于客户端这个角色
比较
SVN | CVS | |
---|---|---|
对重命名、删除文件的支持 | 支持文件重命名提交系统会提示删除旧文件,创建新文件;删除本地文件提交 库中文件也被删除 | 不支持本地文件重命名提交;删除分remove和erase两种前者把本地和库中文件都删除,后者只是删除本地文件;不能删除文件夹 |
对中文路径名的支持 | 要将权限控制文件保存为svn支持的UTF-8格式 | 支持的比较好 |
本地文件与库的对应关系 | 一个库可以有多个工作目录但一个工作目录只能对应一个库(虽然可以更改库位置但是要求很严格) | 可以多对多 |
库中文件存放方式 | 与vss相似,看不到文件真正的内容 | 完全用户可见方式与客户端文件夹结构完全一致(cvs生成文件除外) |
权限 | 只有read、write、none三种权限 | 有read、write、creat、none这四种权限,任何人不能删除文件夹 |
用户、权限管理 | 查看、修改配置文件即可 | 只能用分组的方式管理用户而且密码和权限还是不清晰 |
VSS
VSS主要致力于维护文件更改历史记录、审核跟踪日志以及对源代码文件进行灾难恢复。它在以下场合下最为有效:团队的规模较小,各个成员之间的地理距离比较近,通常在高度可靠的环境中通过高速、低延迟的局域网 (LAN) 工作,并且共享的开发资产不大可能超过 4 GB。Visual SourceSafe 是一种仅用于客户端的文件服务器应用程序,不需要服务器端处理或代码执行。
VSS虽然是微软公司的产品,但微软内部却很少使用它。微软内部使用一个名为SLM的版本控制系统,直至1999年。之后,微软内部改以使用修改自Perforce SourceDepot。
VSS提供了完善的版本和配置管理功能,以及安全保护和跟踪检查功能,同 Visual Basic、Visual C++、Visual FoxPro 等开发环境以及 Microsoft Office 应用程序集成在一起
ClearCase
ClearCase有时候缩写为CC。
它是IBM Rational 出品的大型商用软件配置管理工具。其核心是版本控制。尽管能够听到对ClearCase的很多抱怨,比如昂贵、复杂、不好用(安装比Windows还大运行比蜗牛还慢),但它仍然是收费的版本控制系统中市场份额最大的。
学习ClearCase可能要学习一下它的一些术语,可能需要从创建一个VOB开始,VOB:versioned object database,这个就是类似其他版本管理工具中称为仓库的东西,但是又一些微妙的差别。学习ClearCase需要从很多类似的术语开始理解它的做法。
它有两个版本:Base ClearCase和ClearCase UCM(Unified Change Management)
Base ClearCase
提供文件、目录、版本、标签、分支、触发器和链接等“裸露”的环境,在此基础上,可以比较自由的进行设置和二次开发,以满足实际项目的需要,它的优点是灵活。
ClearCase UCM
开箱即用(Out of the box),提供了基于Base ClearCase的一套封装,只要做一些简单的设置,就可以在实际项目中直接使用了,它的一些性能指标也比Base ClearCase优异。
VSS、SVN、Clearcase的区别
VSS 的使用简便易学,但 VSS 的功能和安全性较弱,且只对 windows 平台进行支持,建议作为项目配置管理的入门时采用的工具;
SVN 的安全性和版本管理功能较强,可以实现异地开发的支持,但 SVN 安装和使用多采用命令行方式,学习曲线高,同时不提供对变更管理的功能,对于小型团队,可以采用 SVN 进行管理
ClearCase 功能完善,安全性好,可以支持复杂的管理,但学习曲线和学习成本高,需要集成 ClearQuest 才能完成完整的配置管理功能。大公司如果采用异地多研发中心同时开发的模式,一般推荐使用ClearCase。
git
git是一款开源的分布式版本控制工具,在世界上所有的分布式版本控制工具中,git是最快、最简单、最流行的,在国外已经非常普及,国内并未普及(在慢慢普及),越来越多的开源项目已经转移到git
git的起源作者是Linux之父:Linus Benedict Torvalds,当初开发git仅仅是为了辅助Linux内核的开发(管理源代码)
团队选择
由于团队项目是基于unity3D的,且在win10环境下,开发的脚本语言为C#,由于unity3D会附带VS,也可以自定义到VS Code中,所以选择GitHub+VS和VS Code + Git + Github的模式
github + VS
unity3D的下载中默认同时安装VS(也可以手动取消)
配置环境
第一步,下载vs github插件
下载完成后,需要关闭所有vs2019窗口,之后会弹出下面的窗口,点击modify,完成之后,重新打开vs就安装好了
我们是在团队资源管理器里进行连接和管理的,然后在vs里登录github
创建
连接成功后,我们进行创建
创建成功之后,github网站上就可以看到项目,然后在团队资源管理器,找到项目,然后在解决方案项中,新建项目
分支
分支通常是在团队合作开发时才会使用的。一个项目的master分支通常由老大(项目经理)创建,组长有将其他分支合并到master的权限。用于开发的分支通常是develop分支,而我要实现某项功能时,是从master/develop分支拉取项目,自己用于开发的分支以-feature为后缀,开发完毕后请求合并(merge request),由组长审核代码,审核通过后再合并到master分支。对于单人开发来说,不必拉取各种分支,也不必考虑合并时的冲突问题,在master分支上尽情折腾
更改
在团队资源管理器,选择更改
填写说明,然后全部提交,提交之后,还要再同步里,选择推送,然后刷新github网站已经可以看到提交的代码文件
VS Code + Git + Github
配置环境
安装好git后,选择Git Bash Here,设置用户名和邮箱:
git config --global user.name 用户名
git config --global user.email 邮箱
ssh-keygen -t rsa -C "邮箱"
将id_rsa.pub里的秘钥复制到github-设置-SSH中
在git bash 里输入
将GitHub项目的code的SSH复制下来
在git bash 里输入
'''
git clone 复制的SSH
''
在本机就下载下来了该文件,用VSCode打开
推送
完成后在github上刷新,即可看到提交的代码
拉取
在VSC中打开控制终端,在终端中cd到存放文件夹下面,然后输入
git clone https://github.com/xxxxx
有一种可以加快拉取的方法,语句换成 git clone https://github.com.cnpmjs.org/xxxxx
小结
系统地对源代码管理工具进行了初步的了解和认识,至少对大概的应用(适合的团队模式或项目模式)和名字进行了了解,在之前大作业时只配置了VS + 码云,这次将本机的git+GitHub+VS Code的环境也完成了配置,虽然和大型团队的开发仍有很大差别,但是为日后的学习和应用打下了基础