我正在开发一个项目,我们使用 git 管理外部库/ header 和质量检查。以下是每个开发人员的目录结构:
~/dev/proj
~/dev/ext
~/dev/qa
proj、ext 和 qa 是不同的 git 存储库。在 svn 下,这些目录的同步很简单:在 ~/dev 下的单个更新将递归地更新所有目录。使用 git,我们需要为每个目录单独执行“git pull”。这不好;有人总是会忘记更新(git pull)其中一个目录,他的项目将不同步(例如,新的 qa 不会通过旧代码)。我查看了“git submodules”,它没有为“git pull”提供一个点来同时更新这三个独立的模块[更正:我在这里错了,但请阅读我的回答below] .
您可能会争辩说我们应该将 proj、ext 和 qa 放在同一个 git 存储库下,但我认为这违背了将不同概念保存在不同存储库中的 git 理念。
有没有人有解决这个小问题的方法(除了编写脚本对 ~/dev 下的每个目录执行 git pull)?
谢谢,
阿尔坦
最佳答案
我的理念是:如果我总是需要将 X 和 Y 放在一起,那么从逻辑上讲,它们属于同一个存储库。只有在适当隔离的情况下才使用子模块才有意义——想想外部供应商库,你不想随意引入更新,也不希望你的团队能够直接编辑它们——这是有道理的。但是,无论您如何切片,它都会增加步骤。我坚持“如果它是一个项目,就把它放在一个存储库中”,不管我理论上如何将它分解成更“像 git”。
关于git 多仓库管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12700575/