【发布时间】:2014-10-02 05:48:46
【问题描述】:
我希望这个问题能以某种方式解释我想要做什么。如果没有,我会尝试给出更详细的解释:
我目前正在将一个大型项目从 SVN 迁移到 Git。在这个项目中,所有依赖项都存储在不同的文件夹中并提交到 SVN 存储库。我已经了解到you should not put the vendors folder in your repo。但是我将如何更新依赖项?在我阅读的另一个资源中,您应该只对composer.lock 文件进行版本控制。 composer.json 文件怎么样?
这是我想到的策略:
- 排除
.gitignore文件中的供应商文件夹 - 将
composer.json和composer.lock文件添加到repo 中 - 添加 composer_update.php 文件以在接收后挂钩中使用它
当我们必须更新一些依赖时,我们必须做以下事情:
- 更新
composer.json文件 - 在本地运行
composer update以更新composer.lock文件(或本地开发实例中的composer_update.php脚本) - 将更改推送到 Stash/Bitbuckt/Github,然后通过 post-receive 挂钩执行
composer_update.php脚本
你会推荐这样的东西,还是有更好的方法?对不起,我对作曲家真的很陌生。
【问题讨论】:
-
composer_update.php脚本应该做什么?在 Github 上??? -
composer_update.php文件将由 Stash/Bitbucket/Github 触发的接收后挂钩使用,abs 将运行类似shell_exec( 'composer update' );这样您就不需要通过 SSH 连接到服务器和手动运行命令。有一个git_pull.phpscript 为 Git 做类似的事情。 -
我想你在 Github 上没有 shell。而且,命令是错误的。你不想更新,你想安装。而且您不想安装在托管存储库的服务器上(为什么要安装),您想在部署期间使用部署脚本进行安装。然而,Git 不是部署工具。
-
我认为您在这种情况下误解了“项目”。它不是提供作曲家支持的项目,而是使用作曲家加载依赖项的项目。它只是这个项目的代码放在 Stash/Bitbucket/Github 主机上。项目本身部署到生产网络服务器。我只想知道,我的开发人员如何使用 Composer 更新这个正在运行的生产网站中的组件。
-
我想我理解正确。 :) 如果您进行部署,那么这是执行以下操作的最佳时机: 1. 从 Git 存储库中获取代码。 2. 安装依赖项(请注意,您可能有一天会拥有除 PHP/Composer 之外的其他依赖项 - 只需考虑一些 Javascript 依赖项) 3. 将结果放到生产服务器上。您不会更新 Composer 依赖项,因为这可能会安装与您测试和 QA 的版本不同的版本。而且您不想使用 post-receive 挂钩进行更新,因为这只适用于存储库所在的位置 - 而且不应该是 prod 服务器。
标签: deployment composer-php githooks