我在框架的基础上编写了一个PHP框架和一个CMS。CMS依赖于框架,但框架作为CMS文件中的一个独立文件夹存在。我希望在GitHub上将它们作为单独的项目来维护,但我不希望每次更新框架时都会出现更新CMS项目的混乱。理想情况下,我希望CMS能够以某种方式将框架文件提取到预定义的子目录中,而不是物理地提交这些文件。
Git/GitHub有这个可能吗?如果是这样的话,我需要知道什么才能使它发挥作用?记住,我对Git的体验是非常非常基本的--我可以使用创建存储库并提交,连接到GitHub,仅此而已。我目前正在单独研究这些项目,所以到目前为止,我还不需要了解更多关于Git的知识,但是我想在将来向其他人开放它,我想确保我做得对。
另外,对于有依赖关系的项目,我理想的工作流应该是什么?关于这一问题的任何建议也将不胜感激。如果你需要更多关于我的设置的信息,只需询问评论。
发布于 2011-05-01 05:30:31
首先,如果您真的想为此使用git,那么请考虑使用它的子模块功能:
Git的子模块支持允许存储库作为子目录包含外部项目的签出。子模块维护自己的身份;子模块支持只存储子模块存储库位置和提交ID,因此其他克隆包含项目("superproject")的开发人员可以轻松地在同一修订版中克隆所有子模块。超级项目的部分签出是可能的:您可以告诉Git克隆任何子模块、部分子模块或所有子模块。
链接的页面包含详细的讨论,包括如何准确使用它的示例。
尽管如此,我建议不要将版本控制系统用于依赖关系管理,而应该开始使用可以为您处理这些事情的构建工具,例如Maven或蚂蚁。在开发中甚至有一个名为Phing的特定于PHP的构建工具,但我还没有亲自使用它。在一篇讨论您的问题的文章中提到了这个问题:版本控制!=依赖关系管理。
从长远来看,构建工具可能更适合使用,因为它们通常也支持不同的存储库类型、外部库(和不同的位置)和广泛的检查。但是,如果您只想集成这两个库,并且不需要任何额外的麻烦,那么子模块方法可能就足够了。
发布于 2012-07-18 17:10:06
Git子模是管理git项目依赖关系的一种很好的方法。
如果你在寻找另一种方法:
作曲家可以为你做这一切。作曲家是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
或从包装工:composer.phar create-project acmeproject
创建特定项目
发布于 2011-05-06 09:17:12
最近,我开始使用一个叫做俯卧撑的工具来管理我的项目的依赖关系。它支持PHP版本、PEAR包、Git存储库和SVN存储库,并允许通过"Pundlefile“轻松地指定它们。
您还应该配置您的依赖项,以便将Git/SVN签出放到一个不在版本控制(例如“供应商”)下的目录中,这样您就可以重新开始每次签出,并保持项目存储库的简洁性。
https://softwareengineering.stackexchange.com/questions/72750
复制相似问题