2016-01-27 51 views
0

當使用一個框架像Silverstripe我經常要使用的輔助模塊,如gridfieldextensions樵夫創建網站。如何包括一個Git回購作曲家依賴

因此我使用composer require添加依賴關係。

但是,當我遵循我的常規開發工作流程並使用git add -A將模塊添加到回購站而不是添加到回購站的代碼時,我獲得了對其的引用。

git reference rather than code

這會導致問題,當我再嘗試其他地方的克隆網站(使用詹金斯或其他開發者)。 git clonegit pull留下一個空目錄。

我通過刪除模塊的.git目錄並添加所有文件來解決此問題。

有沒有更好的方法來做到這一點?是否使用git submodule一個選項?

+0

有一個名爲的.gitignore文件。否則,做你想做的事情是可怕的。 – Mattia

+0

@Mattia你是什麼意思?使用git ignore來忽略依賴的'.git'目錄? – rath3r

+0

我忽略了我的供應商目錄。添加composer.json,並在克隆/拉後跟隨作曲家調用。我遠離子模塊。 – Progrock

回答

4

某處我發現了一個很好的.gitignor e文件忽略了一切,我必須告訴它包含我的項目的自定義模塊。這就像:

# ignore everything... 
/* 

# ...but 
!/.htaccess 
!/.gitignore 
!/composer.json 
!/composer.lock 

!/Capfile 
!/Gemfile 
!/favicon.ico 
!/touch-icon-* 


!/mysite 
!/some-module 
#...other modules 

# theme stuff 
!/themes/ 
**/.sass-cache 
**/node_modules 

!**/node_modules/_manifest_exclude 

#no assets in general, but /assets/.htaccess 
!/assets 
/assets/* 
!assets/.htaccess 

正如FinBoWa已經說了你所需要的composer.jsoncomposer.lock文件在您的項目和運行

作曲家安裝

另一個

機器會將該軟件包安裝在該機器上保存在composer.lock文件中的版本中

作曲家安裝--no-dev的

將只安裝了「正常」的要求,沒有DEV-需求,如​​PHPUnit的或其他的東西,你只需要開發或測試,但不活

作曲家安裝--no-dev -o

也會優化(-o)自動加載器,所以它會快一點。

作曲家更新

將更新您的包,這可能有有趣的副作用,打破您的網站。所以仔細使用它,然後再進行測試。

作曲家更新silverstripe /框架

只會更新包,並最終

作曲家更新silverstripe/*

將更新由供應商silverstripe所有軟件包(如框架和cms包)

參見:

+0

謝謝。我一直沒有在生產服務器上使用作曲家,寧願單獨依靠Git,我會更新我的部署過程。 – rath3r

+1

我曾經在運行「git pull」時發現了一個git合併後掛鉤,它可以爲你安裝composer的東西(並運行dev/build)。您可以根據自己的需求進行調整:請參閱https://gist.github.com/wernerkrauss/33dcb098c05ed063be22 – wmk