我这里有一个项目,它是一个大型 Symfony2 应用程序,我希望将 git 子模块引入到我们在这里内部构建的组件中。这里的问题是每个组件还需要 composer 包才能正常运行,现在我有 symfony2 应用程序的 composer 包和组件所需的 composer 包,我不确定如何在这里处理/设置这些依赖项。
目前,我正在为我们添加的每个组件(git 子模块)手动运行“composer install”,这意味着每个组件都有自己的“vendor”文件夹,这远非理想,因此我将使用 Stack 来获得关于如何使这些“symfony Composer 依赖项”和“组件 Composer 依赖项”易于维护的好建议。
我不需要确保 symfony2 应用程序的 deps 版本与组件 deps 同步,我只需要使其简单且可维护,而不必对我们设置的每个 git 子模块运行“composer update”。
谢谢!
我现在正在使用 composer 的 repositories 键来定义我公司私有(private) github 存储库的 URL。我能够引入一个单一的私有(private) repo ,我们称之为 Repo A。但是,当我添加 Repo B 并使 Repo A require Repo B 时,它无法正确解析。
Repo A(用户报告组件)的 composer.json:https://gist.github.com/dragoonis/6ea92e062762c516baea
Repo B(数据库组件)的 Composer.json:https://gist.github.com/dragoonis/e54b47b75a79b82ebaea
出现以下错误消息:https://gist.github.com/dragoonis/d79cd2c2dd5cc50bcd2a
opinurate/database-component 包确实存在,因为它是 respositories 键中定义的 repos 之一。
这里的最终解决方案是使用 Satis 来设置您自己的私有(private)版本的“packagist”,它将与 packagist 一起工作。
我在“http://packages.mydomain.com”设置了 Satis ' 并在我的主要应用程序 composer.json 文件中向该 URL 添加了一个 'repositories' 键。现在,在评估包名称时,它也会使用您自己的自定义 satis 服务器为您提供 git URL。
最佳答案
我会说你最好的选择是通过 composer 添加这些组件而不是 git 子模块。它使编码和维护更加复杂,但它确保您的应用程序了解所有实际依赖项。
如果您不希望它们公开并且想要一种更简单的方法来处理它们,那么我会在本地推出一个 Satis 部署并在那里注册它们,将该 satis 存储库添加到您的 composer.json。
Satis 是 Packagist 的一个简单版本,只要安装它的服务器和运行 composer install 的机器可以访问您的私有(private)存储库,其他任何东西都看不到它们。 Composer 网站上有文档:https://getcomposer.org/doc/articles/handling-private-packages-with-satis.md
然后您将设置 packages.yourcompany.com 并将其添加到您的 composer.json 作为包的备用来源。一切都保持私密。
回复编辑: 发生这种情况是因为 composer compartimentalizes,这意味着“存储库”只为您的项目的 composer.json 所知,而 Repo A 中的那个不知道,因此找不到它。您必须在该库中重新定义存储库。即使使用 Satis,也必须将“satis”地址添加到所有涉及的 composer.json 文件中。
将您在应用程序中添加的“存储库”内容添加到 Repo A 和 B 中的 composer.json 中,它应该可以解决所有问题。
关于PHP Composer 与 Git 子模块和 Symfony2 混合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21850084/
我有一个包含模块的模型。我想在模块中覆盖模型的访问器方法。例如:classBlah这显然行不通。有什么想法可以实现吗? 最佳答案 您的代码看起来是正确的。我们正在毫无困难地使用这个确切的模式。如果我没记错的话,Rails使用#method_missing作为属性setter,因此您的模块将优先,阻止ActiveRecord的setter。如果您正在使用ActiveSupport::Concern(参见thisblogpost),那么您的实例方法需要进入一个特殊的模块:classBlah
文章目录git常用命令(简介,详细参数往下看)Git提交代码步骤gitpullgitstatusgitaddgitcommitgitpushgit代码冲突合并问题方法一:放弃本地代码方法二:合并代码常用命令以及详细参数gitadd将文件添加到仓库:gitdiff比较文件异同gitlog查看历史记录gitreset代码回滚版本库相关操作远程仓库相关操作分支相关操作创建分支查看分支:gitbranch合并分支:gitmerge删除分支:gitbranch-ddev查看分支合并图:gitlog–graph–pretty=oneline–abbrev-commit撤消某次提交git用户名密码相关配置g
关于如何使用git设置类似Dropbox的服务,您有什么建议吗?您认为git是解决此问题的合适工具吗?我在考虑使用git+rush解决方案,你觉得怎么样? 最佳答案 检查这个开源项目:https://github.com/hbons/SparkleShare来自项目的自述文件:Howdoesitwork?SparkleSharecreatesaspecialfolderonyourcomputer.Youcanaddremotelyhostedfolders(or"projects")tothisfolder.Theseprojec
我编写了一个非常简单的“部署”脚本,作为我的裸git存储库中的post-updateHook运行。变量如下livedomain=~/mydomain.comstagingdomain=~/stage.mydomain.comgitrepolocation=~/git.mydomain.com/thisrepo.git(bare)core=~/git.mydomain.com/thisrepo.gitcore==addedremoteintoeachlive&stagegitslive和stage都初始化了gitrepos(非裸),我已经将我的裸仓库作为远程添加到它们中的每一个(名为co
我正在安装gitlabhq,并且在Gemfile中有对某些资源的“git://...”的引用。但是,我在公司防火墙后面,所以我必须使用http://。我可以手动编辑Gemfile,但我想知道是否有另一种方法告诉bundler使用http://作为git存储库? 最佳答案 您可以通过运行gitconfig--globalurl."https://".insteadOfgit://或通过将以下内容添加到~/.gitconfig:[url"https://"]insteadOf=git://
我有一个模块:moduleMyModuledefdo_something#...endend由类使用如下:classMyCommandextendMyModuledefself.execute#...do_somethingendend如何验证MyCommand.execute调用了do_something?我已经尝试使用mocha进行部分模拟,但是当未调用do_something时它不会失败:it"callsdo_something"doMyCommand.stubs(:do_something)MyCommand.executeend 最佳答案
所以我只是对此感到好奇:DataMapper为其模型使用混合classPostincludeDataMapper::Resource虽然active-record使用继承classPost有谁知道为什么DataMapper选择这样做(或者为什么AR选择不这样做)? 最佳答案 它允许您从另一个不是DM类的类继承。它还允许动态地将DM功能添加到类中。这是我正在处理的模块中的类方法:defdatamapper_classklass=self.dupklass.send(:include,DataMapper::Resource)klass
Activeadmingem已添加到我的rails项目中,但每次我尝试安装railsgactive_admin:install时,我都会收到类似的错误git://github.com/activeadmin/activeadmin.git(atmaster)isnotyetcheckedout.Runbundleinstallfirst.我肯定在运行“railsgactive_admin:install”之前运行了bundle。运行“bundleshow”后,我看到我已将“*activeadmin(1.0.0.pre3f916d6)”添加到我的项目中,但不断收到此错误消息。我的gem文
如何用HAML编写这个ERB:#OR我可以:=some_ruby_code+":"#and=some_ruby_code%br但我不想在这里连接,我想将它写成内联:(=some_ruby_code):#and(=some_ruby_code)%br 最佳答案 =some_ruby_code+":"-#and=some_ruby_code+""编辑1:我不确定您在寻找什么。你想要其中之一吗?==#{some_ruby_code}:-#and==#{some_ruby_code}或==#{some_ruby_code}:-#and=so
我计划将STIinRails与以下模型一起使用:classPromoEvent和Discount在属性方面仅存在一些差异,因此我认为STI是一个不错的选择。我不确定如何确保,例如,仅Event具有额外的image_filename属性。我知道它会在promos表中,并且它必须是NULL-able以防我插入Discount行。如何确保Discount对象对image_filename属性一无所知(即未在Discount.column_names中列出>和/或无法设置它)Event知道它吗? 最佳答案 我认为这个概念是不同的,而你的Pr