土地布局(简体):

我拥有回购/项目Fuzzy。 Fuzzy依赖于另一个项目Zazzy(假设它是某种类型的库)。两者都是商业仓库。目录树的外观如下:

-+- Fuzzy /* root repo */
  \
   +- something_fuzzy_related.c
   |
   +- Zazzy /* that other repo */
    \
     +- a_rather_zazzy_library.so


现在,假设某个可怜的人决定签出我的Fuzzy项目。他或她将不会自动结帐Zazzy。

我该怎么做?在大型项目中如何解决此类问题?我是否必须使用自定义脚本(我对此没有问题)来处理结帐(许多项目中有这些奇怪的脚本用于更新源,例如Chromium,W​​ebKit)?

最佳答案

人们有时使用subrepositories来处理此问题。

注意它们有一些锐利的边缘,我们不建议将Zazzy项目放在Fuzzy项目中。这是因为它在两个项目之间创建了一个非常tight coupling的位置。如果外部存储库(Fuzzy)确实取决于Zazzy中的确切变更集,则这可能是适当的。

但是,过度耦合不同组件通常是一个不好的做法。有专用的工具来管理依赖关系:在Java世界中,Maven对此很受欢迎。我不知道广泛用于C项目的东西,尽管如果最终遇到很多复杂的依赖项,则始终可以使用包系统(RPM,APT等)来处理此问题。

09-18 07:25