【发布时间】:2012-01-26 19:07:04
【问题描述】:
有没有办法只更新一个包而不更新 deps 文件中的每个包?我目前正在使用“php 供应商安装”来安装所有供应商捆绑包,并且不知道有任何命令一次只更新一个捆绑包。
【问题讨论】:
标签: configuration symfony bundle
有没有办法只更新一个包而不更新 deps 文件中的每个包?我目前正在使用“php 供应商安装”来安装所有供应商捆绑包,并且不知道有任何命令一次只更新一个捆绑包。
【问题讨论】:
标签: configuration symfony bundle
1) 只需打开您的 deps 文件 (./deps)
2) 删除除您要更新的包之外的所有包并保存 deps 文件
3) 运行命令:php bin/vendors update
它将更新捆绑包。
4) 返回您的 deps 文件并重写所有之前删除的捆绑行!
干杯!
【讨论】:
短版: 执行此操作的“最佳方法”取决于您的设置。如果你之前运行过“php bin/vendors update”,那么最好从你的 deps.lock 文件中删除你想要更新的包的行,然后从你的基础运行“php bin/vendors install” symfony 文件夹。
长版: 我认为对各种供应商命令的作用进行一些说明是有必要的。
1) php bin/vendors 安装
此命令下载(如果需要)并将供应商捆绑源文件安装到 symfony/vendor。该命令将首先查看 deps.lock 以查看那里列出了哪些 git 提交/版本,然后它将查看您的 deps 文件以查看那里列出了哪些版本。如果没有为某个包指定任何版本,它将下载该包的最新版本的包代码。如果找到版本,它将下载并安装该版本的供应商捆绑代码。
此命令不会在 deps.lock 中放入任何内容。
2) php bin/vendors install --reinstall
这个命令和 php bin/vendors install 做同样的事情,除了它总是在安装到 symfony/vendor 之前下载代码。
此命令不会在 deps.lock 中放入任何内容。
3) php bin/供应商更新
此命令将忽略 deps.lock,并将下载(如有必要)并将 deps 文件中列出的捆绑代码版本安装到 symfony/vendor。
完成下载和安装代码后,它会将每个包的下载代码的 git commit id / 版本放入您的 deps.lock 文件中。这样,当您运行上面列出的安装命令之一时,除非您从 deps.lock 文件中删除相关行或再次运行更新命令,否则下载的代码版本不会更改。
deps.lock 文件背后的想法是,它可以防止您不小心将您的捆绑软件升级到第三方捆绑软件代码的较新的错误非工作版本。 Symfony 及其捆绑包正在不断开发中,因此更改(即使它们不是错误)非常频繁地发生并且会破坏您的代码。您可能希望尽快将您的版本锁定在 deps.lock 中,并且仅在您想尽其所能时进行更新。
一旦你在 deps.lock 中锁定了你的包版本,你只需要从你的 deps.lock 文件中删除相关的行,然后运行一个安装命令来更新一个特定的包,就像我在上面的简短回答。如果您想将该代码锁定到您刚刚安装的版本,您需要添加一行到 deps.lock 自己,或者从 deps 中删除所有内容并运行 php bin/vendor update ,如上面的答案所示。
【讨论】: