源代码管理工具

认识源代码管理工具

出现源代码管理工具的原因

为了解决软件开发过程中,由源代码引发的各种繁琐的问题
同时也是小作坊开发的局限性——硬盘坏了,欲哭无泪;无法做到多个人开发一个项目;无法对比两个版本的差异;代码改坏了,想回退也麻烦;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的环境也完成了配置,虽然和大型团队的开发仍有很大差别,但是为日后的学习和应用打下了基础

原文地址:https://www.cnblogs.com/Eirlys/p/14793115.html