项目中经常会使用到第三方的 git 库,直接把第三方的版本库合并到自己的库中。
目前做Node.js Koa2 时需要使用工程集成的Mongodb Models文件,所以需要将Koa2工程引用外部工程模块。
创建2个Git代码仓库。以下为例:
1.1 JS仓库:Test_git
1.2 Models仓库:Model
创建完两个仓库。
//获取代码至本地
git clone git@github.com:dlw1398287387/Test_git.git
//进入项目
cd Test_git
//引入外部工程模块
git submodule add git@github.com:dlw1398287387/Model.git
此时查看Test_git工程目录里面会多一个Model目录跟一个.gitmodules 文件。(到这里两个项目关联成功)。这里Test_git工程中的Model文件会关联 Model外部模块工程的Commit ID。
更新Model工程模块
1.1 修改Model中的文件,必须上传至Git更新 Commit ID 。
git add .
git commit -m ''
git push
更新Test_git
1.1 如果Model文件有更新,Test_git必须获取最新的Model Commit ID关联。否则Model 不会引用最新的Model模块文件。
方法一
cd project2
git pull
git submodule update
方法二
cd project/module
git checkout master
cd ..
git submodule foreach git pull
cd ..
1.2 将Test_git最新的工程上传至Github,以便保存关联的Commit ID。
部署
//获取Test_git代码工程
git clone git@github.com:dlw1398287387/Test_git.git
//注意第一次获取Test_git代码工程时Model文件夹里面不会有外部模块,需要重新更新,还需要执行下行
git submodule init && git submodule update
//替代
#下面这一句的效果和上面两条命令的效果是一样的,多加了个参数 `--recursive`
git clone git@github.com:dlw1398287387/Test_git.git --recursive
使用PM2 自动部署时
deploy : {
production : {
user : 'ubuntu',
host : ['localhost'],
ref : 'origin/master',
repo : 'git@github.com:dlw1398287387/Test_git.git',
path : '/home/ubuntu/service/',
ssh_options: ['ForwardAgent=yes', "PasswordAuthentication=no"],
'post-deploy' : 'git submodule update --init --recursive && yarn && pm2 reload ecosystem.config.js --env production'
},
}