2016-01-27 52 views
0

当使用一个框架像Silverstripe我经常要使用的辅助模块,如gridfieldextensions樵夫创建网站。如何包括一个Git回购作曲家依赖

因此我使用composer require添加依赖关系。

但是,当我遵循我的常规开发工作流程并使用git add -A将模块添加到回购站而不是添加到回购站的代码时,我获得了对其的引用。

git reference rather than code

这会导致问题,当我再尝试其他地方的克隆网站(使用詹金斯或其他开发者)。 git clonegit pull留下一个空目录。

我通过删除模块的.git目录并添加所有文件来解决此问题。

有没有更好的方法来做到这一点?是否使用git submodule一个选项?

+0

有一个名为的.gitignore文件。否则,做你想做的事情是可怕的。 – Mattia

+0

@Mattia你是什么意思?使用git ignore来忽略依赖的'.git'目录? – rath3r

+0

我忽略了我的供应商目录。添加composer.json,并在克隆/拉后跟随作曲家调用。我远离子模块。 – Progrock

回答

4

某处我发现了一个很好的.gitignor e文件忽略了一切,我必须告诉它包含我的项目的自定义模块。这就像:

# ignore everything... 
/* 

# ...but 
!/.htaccess 
!/.gitignore 
!/composer.json 
!/composer.lock 

!/Capfile 
!/Gemfile 
!/favicon.ico 
!/touch-icon-* 


!/mysite 
!/some-module 
#...other modules 

# theme stuff 
!/themes/ 
**/.sass-cache 
**/node_modules 

!**/node_modules/_manifest_exclude 

#no assets in general, but /assets/.htaccess 
!/assets 
/assets/* 
!assets/.htaccess 

正如FinBoWa已经说了你所需要的composer.jsoncomposer.lock文件在您的项目和运行

作曲家安装

另一个

机器会将该软件包安装在该机器上保存在composer.lock文件中的版本中

作曲家安装--no-dev的

将只安装了“正常”的要求,没有DEV-需求,如​​PHPUnit的或其他的东西,你只需要开发或测试,但不活

作曲家安装--no-dev -o

也会优化(-o)自动加载器,所以它会快一点。

作曲家更新

将更新您的包,这可能有有趣的副作用,打破您的网站。所以仔细使用它,然后再进行测试。

作曲家更新silverstripe /框架

只会更新包,并最终

作曲家更新silverstripe/*

将更新由供应商silverstripe所有软件包(如框架和cms包)

参见:

+0

谢谢。我一直没有在生产服务器上使用作曲家,宁愿单独依靠Git,我会更新我的部署过程。 – rath3r

+1

我曾经在运行“git pull”时发现了一个git合并后挂钩,它可以为你安装composer的东西(并运行dev/build)。您可以根据自己的需求进行调整:请参阅https://gist.github.com/wernerkrauss/33dcb098c05ed063be22 – wmk