zhangsanshi / issue-blog

It's a blog rather than issue
0 stars 0 forks source link

git 仓库拆分方案对比 #53

Open zhangsanshi opened 6 years ago

zhangsanshi commented 6 years ago

前言

git 拆分仓库在网上已有的案例上来看,分为 submodulesubtree。 还有基于这两个方案进行改进的 subrepogit-repo 等,当然还可以使用 npm 去管理。

准备工作

  1. 可以先阅读之前的 submodulesubtree 以及 subrepo 的文章

  2. git-repo 可以阅读 https://code.google.com/archive/p/git-repo/https://source.android.com/source/developing 以及网上其他内容

  3. https://www.atlassian.com/blog/git/git-project-dependencies 这里推荐了很多工具。

仓库拆分

无论是最终使用哪种方式,首先是要把代码拆开放到新仓库里。

看起来方案3好用很多。

方案选择

  1. submodule 在代码频繁更新的时候,需要处理的冲突会比较多,而且一开始会比较迷惑,实际上还算简单。但是在频繁的冲突处理的过程中,无疑增大了时间消耗。submodule 本质上是子仓库自身做修改推送合并,而主仓库获取的是子仓库的最新的 commitid,对子仓库的更新仅仅是更新其 commitid

  2. subtree 可以向正常使用 git 仓库一样操作子仓库,成员感知不到子仓库的存在,复杂度被隐藏在了维护主仓库和子仓库的同步的人那里。

  3. subrepo 需要安装相关程序,且还在发展中,虽然解决了一些 submodulesubtree 的问题。

  4. npm 在只是引用仓库的情况下,不失为是一种好办法,但是实际上更改频率会很高,故不考虑。

  5. git-repo 增加了学习成本,需要学习 repo 的用法,同时需要寻找安装 Windows 版本的方法,以及用于管理 Android 项目,看完官网说明就准备舍弃这个方案了。

参考

  1. https://services.github.com/on-demand/downloads/submodule-vs-subtree-cheat-sheet/

  2. https://stackoverflow.com/questions/359424/detach-move-subdirectory-into-separate-git-repository