源代码管理工具

提到软件开发过程中的代码管理工具,必然绕不开GitHub。因为仅支持Git作为唯一的版本库格式进行托管,故名GitHub。而Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。分布式相比于集中式的最大区别在于开发者可以提交到本地,每个开发者通过克隆(git clone),在本地机器上拷贝一个完整的Git仓库。

下图是经典的git开发过程。

从一般开发者的角度讲,Git可以提供以下功能:

1、从服务器上克隆完整的Git仓库(包括代码和版本信息)到单机上。

2、在自己的机器上根据不同的开发目的,创建分支,修改代码。

3、在单机上自己创建的分支上提交代码。

4、在单机上合并分支。

5、把服务器上最新版的代码fetch下来,然后跟自己的主分支合并。

6、生成补丁(patch),把补丁发送给主开发者。

7、看主开发者的反馈,如果主开发者发现两个一般开发者之间有冲突(他们之间可以合作解决的冲突),就会要求他们先解决冲突,然后再由其中一个人提交。如果主开发者可以自己解决,或者没有冲突,就通过。

8、一般开发者之间解决冲突的方法,开发者之间可以使用pull 命令解决冲突,解决完冲突之后再向主开发者提交补丁。

而从主开发者的角度(假设主开发者不用开发代码)看,git有以下功能:

1、查看邮件或者通过其它方式查看一般开发者的提交状态。

2、打上补丁,解决冲突(可以自己解决,也可以要求开发者之间解决以后再重新提交,如果是开源项目,还要决定哪些补丁有用,哪些不用)。

3、向公共服务器提交结果,然后通知所有开发人员。

以上对主开发者和一般开发者所提供的功能使它更适合分布式开发,强调个体;同时公共服务器的压力和数据量也可以保持在较低的水平。对任意两个开发者,他们之间也可以很容易的解决冲突。但同时,Git的代码保密性也非常差。任何一个开发者都具备克隆整个库并完全公开所有代码和保密信息的能力和权限,一旦用作商业用途的代码遭到泄露,带来的后果对于软件开发者可以说是毁灭性的打击。正因为如此,GitHub上的项目通常都选择使用某种类型的开源许可,而对于用作商业用途的代码,通常不会使用GitHub进行代码管理,而转向使用SVN或VSS等相对更加安全的代码管理工具。但在我们所要建立的项目中,仍然选择使用GitHub。由于疫情的原因,我们无法集中开发,而GitHub对于分布式开发更为友好,同时各成员的开发也不易互相干扰,因此从开发体验的角度,我认为GitHub是更优秀的选择。

posted @ 2020-05-28 12:43  MrCrystalJoker  阅读(187)  评论(0)    收藏  举报