第三方库管理

在项目开发过程中,经常需要引入第三方库,因此需要一套合适的方法对于第三方库进行有效管理,本文将对利用git进行第三方库管理的方式进行总结。

子模块添加

一般会在自己的工程目录下建立一个third_party目录,专门进行第三方库的管理,进入third_party,通过git submodule add命令对第三方库进行添加,例如我想添加一个名为rack的库,相应命令为:

1
$ git submodule add git://github.com/chneukirchen/rack.git rack

那么在/third_party/rack下就有了rack项目。

子模块删除

当我们弃用某一个库时,可以在当前项目目录下执行如下操作:

1
2
3
git submodule deinit -f -- third_party/submodule_name
rm -rf .git/modules/third_party/submodule_name
git rm -f third_party/submodule_name

Clone包含子模块的库

当我们克隆一个含有子模块的项目时,默认会包含该子模块目录,但是其中没有任何文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
$ git clone https://github.com/chaconinc/MainProject
Cloning into 'MainProject'...
remote: Counting objects: 14, done.
remote: Compressing objects: 100% (13/13), done.
remote: Total 14 (delta 1), reused 13 (delta 0)
Unpacking objects: 100% (14/14), done.
Checking connectivity... done.

$ cd MainProject
$ ls -la
total 16
drwxr-xr-x 9 schacon staff 306 Sep 17 15:21 .
drwxr-xr-x 7 schacon staff 238 Sep 17 15:21 ..
drwxr-xr-x 13 schacon staff 442 Sep 17 15:21 .git
-rw-r--r-- 1 schacon staff 92 Sep 17 15:21 .gitmodules
drwxr-xr-x 2 schacon staff 68 Sep 17 15:21 DbConnector
-rw-r--r-- 1 schacon staff 756 Sep 17 15:21 Makefile
drwxr-xr-x 3 schacon staff 102 Sep 17 15:21 includes
drwxr-xr-x 4 schacon staff 136 Sep 17 15:21 scripts
drwxr-xr-x 4 schacon staff 136 Sep 17 15:21 src
$ cd DbConnector/
$ ls
$

其中,DbConnector是子模块目录,但是为空,我们要运行两个命令:

1
2
$ git submodule init
$ git submodule update

或者在运行clone时加入如下后缀

1
git clone --recurse-submodules https://github.com/chaconinc/MainProject

参考文献

git官方关于子模块管理的教程

0%