2012-03-17 76 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