2012-03-17 57 views
5

我正在与symfony2合作一段时间,并且我没有真正得到与供应商合作的正确方式。了解symfony2 deps

因此,这里是我在做什么:

我有DEPS,在我的git deps.lock文件,而我忽略了整个供应商的文件夹。现在,当我将应用程序安装到新的服务器上时,我执行php bin/vendors install将供应商拖放到服务器上。我得到的消息是我必须使用install --reinstall并做到这一点。

根据我的理解,现在的版本应该和我的开发机器完全一样,因为deps和deps.lock都是一样的。但似乎deps.lock(部分)被忽略?

还有一个vendors update命令,我读过的命令不应该使用。我没有明白它的真正含义。

所以我现在有点困惑,应该在什么时候应该使用什么命令以及应该怎么做。也许有人可以对这个话题发表一些看法!我特别感兴趣的是在本地服务器和服务器上使用vendor命令的正确方法,因此供应商在两个系统上的版本都是正确的!

+0

与你的问题半相关 - 我建议你看看[capifony](http://capifony.org),其中包括一个非常好的管理'deps'的管理部署到各种机器的方法。 – leek 2012-03-17 18:55:14

+0

我试图capyfony,但说实话,它只是不适合我。我不喜欢它管理事物的方式,并且有使用git的另一个部署工作流程。 – Sgoettschkes 2012-03-18 12:11:41

回答

4

安装和更新都来自于您的DEPS文件中指定的Git仓库取新代码

安装检查哈希在你deps.lock文件每个库。如果它发现一些东西,它检出与哈希对应的提交。如果没有,则检出deps.lock中的标记或分支(如果指定了它并在deps.lock文件中创建一个条目)

如果要更新到新版本的symfony(或deps文件中的任何库)。如果你有一天,你想更新,你可以阅读this post I wrote about the update process。总而言之,我总是在所有机器上使用更新,并且我总是为每个库指定一个版本,以便生产环境不会意外更新为不稳定的版本。

0

有你下载里面已经包含了供应商的标准版,这就是为什么它会显示此消息使用“安装 - 重新安装”

我个人在deployement项目

+0

不,始终使用没有供应商的版本。供应商也没有添加到我的git存储库,当我在服务器上检查出来的时候,那里还没有供应商文件夹存在。 – Sgoettschkes 2012-03-17 11:06:58

4

install --reinstall做出​​php bin/install-reinstall厂商是一样的作为install,但它也会在安装之前删除供应商文件夹内容。

vendors update将您的所有供应商更新到您的deps文件中指定的最新版本或版本并更新您的deps.lock文件。但是你很少需要它,不知道你读的地方“不应该使用”。

如果你看里面的供应商文件,你可以看到这一行:

if (is_dir($vendorDir.'/symfony') && !is_dir($vendorDir.'/symfony/.git') && !in_array('--reinstall', $argv)) 
...Try to run ./bin/vendors install --reinstall... 

所以你的供应商/ symfony的文件夹没有git的在里面。

+1

+1,我认为“不应该使用”的句子在这里阅读:http://symfony.com/doc/current/cookbook/workflow/new_project_git.html#cookbook-managing-vendor-libraries但它意味着更多的东西例如:“你不需要它” – greg0ire 2012-03-17 14:03:15