2012-03-16 36 views
7

是否可以手動更新deps文件獲取最新版本學說2.2?我想使用新的Paginator組件。所以基本上我的想法來調整deps有:手動更新Symfony2 deps文件以獲得Doctrine 2.2?

[doctrine-common] 
    git=http://github.com/doctrine/common.git 
    version=2.2.1 

[doctrine-dbal] 
    git=http://github.com/doctrine/dbal.git 
    version=2.2.1 

[doctrine] 
    git=http://github.com/doctrine/doctrine2.git 
    version=2.2.1 

刪除deps.lock做:

php bin/vendors update 

你認爲這是否行得通呢?

編輯:該文件是這樣的:http://pastebin.com/FEDMNhii

回答

8

在我看來,gilden建議的所有工作都是不必要的和過於謹慎的。當然你可以手動更新你的deps文件。我目前在Symfony 2.0.11上運行Doctrine \ Common(2.2.1),Doctrine \ DBAL(2.2.1)和Doctrine(2.2.1),沒有問題。

這是不是你需要擔心(一般)庫,它是利用需要特定版本(S)的庫。例如,Symfony2沒有直接依賴任何版本的Doctrine - 但DoctrineBundle

在升級軟件包/庫之前,通常可以在Packagist.org上查看它們所需的依賴關係。搜索您要升級的軟件包並查看它們定義的必需依賴關係。 注意: Symfony 2.1不需要這樣做,因爲它將使用Composer來管理供應商庫。

雖然,你永遠不會知道某件事情是否適用於你的安裝,除非你嘗試它。當然,不要做任何愚蠢的事情 - 但是沒有理由通過更新供應商庫來害怕破壞事情。將代碼存儲在Git中,您可以輕鬆恢復您的更改。請參閱:How to create and store a Symfony2 project in Git


此外,在指定depsversion=#.#.#時 - 即使你沒有deps.lock文件,同時,你總是會得到同樣的承諾哈希,因爲你是在指定庫中的Git的標籤。

某些軟件包(而不是提供版本號)將提供各種分支來管理與多個Symfony版本的兼容性。因此,您可能會看到類似version=origin/2.0這意味着供應商腳本將檢出存儲庫名爲2.0的分支上的最新提交。維護者很可能會試圖保持該分支總是與Symfony 2.0.x兼容。

+0

這麼好解釋,+1。順便說一句,當Symfony 2.1將可用? – gremo 2012-03-17 13:37:54

-1

通過消除deps.lock文件你顯然把自己的風險越來越不穩定的代碼。

我已經使用了以下步驟,以儘量減少破壞某些東西的風險:

  • 寫下最近提交的組件的哈希你想從deps.lock
  • 更新查找從GitHub提交哈希並寫下來。
  • 導航到組件的目錄並輸入git checkout [commit]其中[commit]是新的散列。
  • 清除緩存並驗證該網站仍然或多或少工作。
  • 新提交的哈希粘貼到deps.lock和運行bin/vendors install

請記住,我會強烈反對這項建議。如果你把事情搞砸了,你幾乎是自己做的,沒有人會幫你。

+0

謝謝你的男人。我對全新安裝做了一個快速測試,看起來很好(實體生成,查詢等)。但是,再次感謝您的建議。 – gremo 2012-03-16 16:04:17

+1

爲什麼不簡單地保存deps和deps.lock(或使用git),並在萬一發生中斷時恢復您的更改並再次更新您的供應商。它應該下載deps.lock中指定的所有內容? – Sgoettschkes 2012-03-16 16:38:03

+0

我同意這個建議似乎過於謹慎和複雜,當deps.lock可以在災難的情況下保存和恢復。 – user1207727 2012-03-17 20:30:05