三个仓库分别是 sui,wqui,qnui。其中 wqui 和 qnui 都是从 sui 复制来的,可以理解为 fork ,因为在github上无法在同一个organization中fork,所以我们用复制。
每个仓库中的主分支都是dev。 build分支包含所有编译出来的代码,用来在官网服务器上部署。
假设把三个仓库都clone到本地之后分别是**/sui**,**/qnui**,和**~/wqui**。
下一步就是要设置remote,每个仓库中现在都有一个默认的remote叫 origin ,指向github上的同名仓库,这个不要修改。
进入sui仓库,执行 git remote -v
会发现已经存在一个 origin,那么我们还需要添加一个 gitlab 来发布代码。
执行命令 git remote add gitlab [email protected]:sj/sui.git 即可
进入qnui仓库,执行 git remote -v
会发现也已经存在一个origin,然后和sui中的一样 我们也需要添加gitlab用来发布代码。
- 执行命令
git remote add gitlab [email protected]:sj/qnui.git
。 - 为了能同步sui上的更新,我们还需要把sui也加入自己的remote:
- 执行命令
git remote add sui [email protected]:sdc-alibaba/sui.git
。
这样如果我们 git fetch sui
就可以把sui仓库的分支全部更新到qnui中。
全部的remote关系如下图所示
假设A开发一个组件ac。
- A从dev新建一个分支ac,并开发代码,
git checkout -b ac
。 - A提交代码并push到github,然后在github上向dev发pull request,指定给另一个人B。
- B review之后同意merge,此时ac分支上的代码就进入了sui的dev分支。
下一步是要把ac组件同步到qnui和wqui。
- 切换到本地的qnui仓库,切换到dev分支,然后
git fetch sui
,此时会看到一个sui/dev的更新 - 然后git merge sui/dev,如果有冲突可能要手动解决下
- 解决完冲突并提交之后,执行 git push origin dev就可以了。
wqui的操作和上面一样。
经过上面的操作,三个仓库中的dev分支中都包含了ac组件。
发布包含两部分,一是把代码发布到CDN上,二是更新官网。
- 以sui为例,切换到分支daily/1.0.0,如果没有就从dev上新建一个。
- 然后merge dev分支
- 删除上次发布的tag,
git push gitlab :publish/1.0.0
git push gitlab daily/1.0.0
,发布到daily环境- 本地重新打一个tag,并push
git tag -d publish/1/0.0
git tag -d publish/1/0.0
git push gitlab publish/1.0.0
因为官网服务器没有安装node,所以需要我们本地构建好代码
- 切换到build分支,
git checkout dev
git merge dev
- 执行
grunt
- 提交并push。
git commit -a
git push origin build
最后在官网服务器上对应仓库执行git pull 即可。