在几个项目的Git中组织外部Libs

时间:2012-02-24 19:26:47

标签: git external git-submodules libs

问题

我希望我的公司将所有包含的外部库存储在源代码管理中,但我希望这些外部库位于单个仓库中(不包含在每个单独的项目中),因为有很多库,并且它们很大。

现有技术

This question addresses the problem but no one answered to it directly. (How do I organize my Git repo [better title appreciated])

This pretty well describes a similar situation, but no dice. (Git, sub-repos & external libs for web development - best strategy once and for all?)

This definitely answers the question, but uses submodules. (Best Practice for Git Repositories with multiple projects in traditional n-tier design)

Git Slave sounds great, but I'd prefer to not add another git tool to our repertoire as git is new to us.

这就是我到目前为止的想法。

my coding dir/    
    app1/
        .git/
        src/
        com/
        ...
    app2/
        .git/
        src/
        com/
        ...    
    ext libs/
        .git/
        server crap/
            apache tomcat 7.0.123/
                ...
            apache cxf versionnumber/
                ...
        util crap/
            someones really great util lib-1.0/
                ...

然后在配置或类似中会有一个$ PATH变量指向lib目录。

更多想法

  • 我们没有基础设施工程师,因为我不想 每次有人需要添加或更新lib时都要随叫随到,我很害羞 远离git子模块,因为它似乎很粗糙。我很高兴将来继续这样做,但我们只是 从git koolaid开始我们的饮料。
  • 我也很高兴现在使用子模块,如果有人可以指出我的明确的解释它是什么,清除教程如何使用它所以我可以将这些信息传递给我的同行。我不想让每个人都阅读两小时关于高级主题的文档,而我们刚刚开始使用Git。
  • 将lib repo的版本与应用程序repos的版本链接起来会很不错。

同样,我可以谈论我的反子模式情绪,但事实上,我能找到的教程已经过时和/或令人困惑,这是一个很大的问题。对于任何工程师来说,这都需要是一个简单的过程,并且易于撤消。我们不是git ninjas!

最后,我不知道它是否重要,但我们都在使用unix和所有java。

提前致谢!

更新3-1-2012

我准备让Linus Torvalds哭泣。

我一直在做相当多的研究,我的结论是子模块非常好如果你已经是一个git ninja 了。那就是说,我要做错了,在每个git项目中创建一个libs目录。为什么?它更容易,而且比我们目前正在做的事情有了很大的改进。它还假定git知识的门槛要低得多。有一天,当我们对git的基本和中间概念(补丁?重写历史?高级分支?)都很扎实时,我们可能会转向子模块。按照目前的情况,我不想让我们的工程师因为太过于咀嚼而失败。

希望从现在到现在我们准备好向“正确的方式”转移,子模块将不那么复杂。

1 个答案:

答案 0 :(得分:1)

子模块就是为此而设计的。请学习它们。 ProGit.org/book是一个很好的资源。见第6章第6节(我已将其记录在内存中)。

如果您有任何其他问题,我很乐意帮助推特/电子邮件。与我在这里使用的ID相同。