Git的学习
以前使用Git进行代码管理,都是使用TortoiseGit和SVN进行源码的拉取、推送、合并。在小型的项目里面,一般只用一个master分支即可,没有深究Git其他功能。最近的项目比较大,需要注意代码安全,因此对项目进行了模块划分,同时对各开发人员分配了不同的权限,配合不同分支使用,下面记录使用的学习心得。
一、模块
根据不同功能,可以对不同的代码划分模块。整个项目是父模块,内部再划分子模块。
如:
项目根目录作为父模块,其内部给lib库文件夹加一个子模块;给debug文件夹加一个子模块;
另外根据功能划分,建立不同子模块;
每个子模块都有自己的工程文件,.vcxproj文件;
各开发人员只能访问自己的模块代码和公共模块代码,不可查看他人的模块代码;
各模块如果需要引用,则编译成dll引用;
二、分支
为了确保代码可用,推送到master分支的代码必须由管理员合并推送,其余开发人员在master主分支上的权限仅为拉取,不可推送。
因此,需要创建一个developer分支,各开发者都有权推送代码到此分支上。
子模块的分支和父模块的分支是两个独立的分支树,如下图:
父模块:
父模块有三个远端分支,主分支master,开发者分支developer,自动编译的分支jenkins
而到子模块,其分支树为:
子模块中,主分支为master,开发者分支developer_map_symbol;
此模块为无管理员权限的普通开发人员负责的子模块,由于没有master的推送权限,必须新建一个分支用于推送代码。【但实际上我觉得,可以给子模块负责人当前模块的管理员权限,就不用再建立一个分支。反正也是本人负责管理自己的模块】
子模块和父模块是有不同的分支的,在拉取代码时,需要对父模块和子模块依次拉取。