2011-06-27 49 views
6

我在PHP中製作了一個個人輕量級框架,它符合我對框架的需求。 我正在使用不同的第三方庫,如SwiftMailer,Twig,Assetic,Facebook PHP api,...如何管理項目中的第三人稱git存儲庫? (例如Twig/Assetic/..)

如何從第三方庫管理這些源代碼? 您是否將其作爲子模塊添加到您的項目中,並且只需進行拉取以獲取最新版本? 或者你只是將代碼複製到你的項目目錄並自己做更新?

大多數代碼存儲庫的結構是這樣的:

  • 文檔
  • SRC
  • 測試
  • 在我的框架目錄,它看起來像這樣

所以,和我們的供應商迪爾斯爲子模塊來自遠程項目:

  • 個文檔
  • SRC
    • 廠商
      • Assetic(遠程回購的克隆)
      • SRC
      • ...
  • 測試

這是該去哪裏?或者你如何建議這樣做? 在capistrano部署期間,所有子模塊存儲庫將從遠程服務器中提取。

編輯:我必須說我在其他項目中使用框架作爲子模塊。所以框架是一個項目中的子模塊,框架本身也有子模塊。

謝謝!

回答

0

我管理每個項目separetaly。 每個項目文件夾都可以包含正確構建的所有文件 - 因此所有參考文件都包含在「refs」目錄中。在這種情況下構建起來很簡單:獲取最新版本的「src,參考& build」目錄,運行構建腳本。輸出位於「bin」目錄中。

「refs」文件夾佔用磁盤大小,但比使用更正版本(和分支)管理跨項目引用要簡單得多。

  • 的3rdParty項目-A
  • 的3rdParty項目-B
    • SRC //源代碼&資源
    • 裁判//在正確的版本中引用的二進制文件
    • 構建//構建腳本
    • bin //已編譯的二進制文件&相關文件
    • deploy //用於deplo的文件Y(Setup.exe時,的setup.msi,等...)
    • ...其他文件夾...
  • MyProject的-A
  • MyProject的-B
    • SRC
    • 參從的3rdParty-項目-B
    • MyProject的-A
      • 的3rdParty-項目-B //有引用的文件//有從MyProject的-A
      • 引用的文件
    • 構建
    • 部署
1

我通常使用一個vendor文件夾,無論是srclib持有的子模塊下的頂層,或者和使用的--recurse-submodules選項當拉,--recursivegit submodule updategit submodule status。我想認爲 capistrano可以很好地處理這個用例,但我不太熟悉它知道肯定。