GitHub上的Git项目依赖项


14

我已经在该框架之上编写了一个PHP框架和一个CMS。CMS依赖于框架,但是框架作为CMS文件中的自包含文件夹存在。我想将它们作为单独的项目维护在GitHub上,但是我不想在每次更新框架时都有更新CMS项目的麻烦。理想情况下,我希望CMS以某种方式将框架文件包含在预定义的子目录中,而不是物理地提交这些文件。

Git / GitHub有可能吗?如果是这样,我需要知道什么才能使其正常工作?请记住,我对Git有非常非常基础的经验-我可以使用Eclipse的Git插件制作存储库并提交,连接到GitHub,就这样。我目前正独自从事这些项目,因此到目前为止,我还不需要了解更多有关Git的信息,但是我希望将来向其他人开放它,我想确保自己做对了。

另外,对于具有依赖性的项目,理想的工作流程应该是什么?任何有关该主题的技巧也将不胜感激。如果您需要有关我的设置的更多信息,请在评论中提问。


查阅git subtree(在这里谈论过):blogs.atlassian.com/2013/05/…–
尼克

Answers:


11

首先,如果您真的想为此使用git,请考虑使用其Submodule功能

Git的子模块支持允许存储库包含外部项目的签出作为子目录。子模块保持自己的身份;子模块支持仅存储子模块存储库的位置和提交ID,因此其他克隆包含项目(“ superproject”)的开发人员可以轻松地克隆相同版本的所有子模块。可以对超级项目进行部分检出:您可以告诉Git不克隆任何,部分或全部子模块。

链接的页面包含详细的讨论,包括有关如何正确使用它的示例。

就是说,我建议不要使用版本控制系统来进行依赖性管理,而应该开始使用可以为您处理这些事情的构建工具,例如MavenAnt。开发中甚至有一个特定于PHP的构建工具,称为Phing,但我自己还没有使用过。在讨论您的问题的文章中提到了它:版本控制!=依赖管理

从长远来看,构建工具可能更适合的原因是,它们通常还支持不同的存储库类型,外部库(和不同的位置)以及广泛的检查。但是,如果您只想集成这两个库而又不希望有任何其他麻烦,则子模块方法可能就足够了。


+1-感谢Deckard。我发现Git有类似Submodules之类的东西,我只是不知道它叫什么。我一定会仔细研究Phing。我一直想要一个PHP生成工具来管理依赖项,运行单元测试,然后部署到我的站点。看来Phing可以完成所有这些工作。看起来还需要一些时间才能学习。您是否知道Phing的任何出色的电视广播(在这方面Google并不友善)?
VirtuosiMedia

到“子模块功能”的链接已断开,并且到“版本控制!=依赖性管理”的链接也已断开
Ferrybig

6

Git子模块是管理git项目依赖项的好方法。

如果您正在寻找另一种方法:

作曲家可以为您做这一切。Composer是php的依赖管理器。它的语法是json。它相当容易使用且便宜。

有关作曲者的更多信息:

Composer是用于PHP中的依赖项管理的工具。它允许您声明项目需要的依赖库,并将其安装在项目中。

文档页面上,您可以找到如何构建composer.json文件的示例:

// Composer.json    
{

    "name": "acme/blog",
    "repositories": [
        {
            "type": "vcs",
            "url": "https://github.com/composer/hello-world"
        }
    ],
    "require": {
        "acme/hello-world": "dev-master"
    }
}

为项目创建composer.json和composer.lock文件后,即可轻松安装依赖项:

composer.phar install 或更新它们: composer.phar update 或从packagist创建一个特定项目: composer.phar create-project acmeproject


1

最近,我开始使用名为Pundle的工具来管理项目的依赖项。它支持PHP版本,PEAR软件包,Git存储库和SVN存储库作为依赖关系,并允许通过“ Pundlefile”轻松指定它们。

您还应该配置依赖项,以便将Git / SVN检出放入不在版本控制下的目录中(例如,“供应商”),以便您在每次检出时都有全新的开始并保持项目存储库的精简。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.