我应该克隆我的依赖项吗?

时间:2014-06-12 20:20:08

标签: git code-organization

假设我有一个将使用某些Google API的项目。为了让我更容易使用API​​,我想使用Google提供的PHP库(https://github.com/google/google-api-php-client)我应该将它克隆到我当前的项目中,并将其添加到.gitignore中吗?我应该克隆它,并开始使用git模块,还是应该只复制我需要的文件,并将它们添加到.gitignore?

另一种情况是我正在使用我创建的库,而且我在本地工作。我应该将它们克隆到当前项目中吗?我应该为我需要的文件创建符号链接吗?

最后,有些库除了在github中托管代码外,还提供“独立”文件。想想jQuery的例子。在这些情况下,最好只下载他们提供的文件吗?或者将存储库克隆到当前项目中是否更好?

我猜这一切都与软件架构有关。该主题中的任何书籍推荐?

2 个答案:

答案 0 :(得分:1)

为这个用例制作了包管理器。

在PHP中,主包管理器是Composer,可以在Packagist.org上找到包。根据Google API PHP客户端存储库中的composer.json文件,其包为https://packagist.org/packages/google/apiclient

Composer会将这些库(以及自动加载文件)安装在名为vendor的目录中,您可以将其添加到.gitignore,这样它们的内容就不会被提交。 Composer根据您的composer.json文件处理依赖项的安装和更新。

对于JavaScript库,经常使用http://bower.io/(尽管许多JS库也可以通过Composer / Packagist获得)。

这两个工具都允许使用任意和/或私有存储库。

答案 1 :(得分:0)

我的方式:

  • 将您要修改的所有代码安装为“可编辑”(git / hb / bzr clone)。
  • 所有其他库都作为包安装
  • 每个系统都有自己的linux用户(用户名方案:coreapp_customer_stage)
  • 每个linux用户都有自己的virtualenv(Python)
  • 如果您使用该帐户,将自动输入virtualenv。
  • 自动设置新的开发帐户。
  • 如果所有测试都通过(pip冻结),则执行版本固定。

对于你的例子:jquery:你想修改jquery吗?我猜不是:不要克隆它。