2014-01-23 33 views
1

編輯:我試圖在這裏實現的項目可以通過Yeoman項目完成。引導項目:private git repos,Composer和Satis


因此,我在私人服務器上設置了git + composer + satis,一切正常,我對此非常熱心。一定要愛他們。

我使用git的項目,併爲私人包,所以現在基本的工作流程是這樣的:

git clone [email protected]:the-project-name 
composer install 

這將克隆項目的回購協議,並安裝所需的依賴。太棒了。

但我也希望能夠使用一些'骨架回購',只是將它們的內容複製到我的項目保持依賴信息。

拿這個例子:

  • 我創建一個名爲混帳回購協議:測試項目,那麼我會克隆本地。
  • 我有另一個git倉庫,叫做fb-bootstrap,它是facebook應用程序的框架。
  • 我也有另一個引導程序骨架git回購,我也想包括:這將是一個API /文件夾爲例。我們把它稱爲:api-bootstrap
  • 所以我想克隆它們,但我當然不能那樣做,因爲我已經在同一個目錄中有一個git倉庫。
  • 一個可能的解決方案:我使用下面的代碼,所以我只得到這些文件:'git archive --format = tar --remote = git @ myserver:the-bootstrap-repos HEAD |焦油XF - 」

這是好的,但有一個問題:我有不同的依賴關係 - 不同的composer.json文件。 - 對於fb-bootstrap和api-bootstrap倉庫,所以我需要找到一種方法來安裝它們。

請注意,我不使用composer,因爲除了自動加載的php類以外,我不能將任何東西放入供應商/文件夾,因爲訪問權限限於該文件夾。

解除這個限制也不能解決問題,因爲如果我稍後添加一個依賴關係,並且我打電話給composer update,我可能會失去在自舉文件夾中所做的更改。

由於上述原因,子模塊和上面的唯一拷貝文件不能完全切斷它。

摘要:

我需要一個解決方案,因爲我需要我可以包括許多引導回購協議,我是受夠了之後,我必須能夠安裝所有的依賴關係。

像這樣:

  • git的初始化項目回購,
  • 混帳克隆本地項目回購,
  • 取一對夫婦的引導回購協議的內容,我需要,
  • 安裝我宣佈的依賴對於該項目以及所有引導回購的依賴關係。

有沒有辦法做到這一點?

另外:如果您認爲我以完全錯誤的方式處理此問題,請隨時告訴我。無論如何,我正在適應新技術,我不害怕變化。 :)

任何意見表示讚賞。

+0

任何理由不只是讓api-bootstrap一個作曲家庫? – nthall

+0

是的: 「請注意,我不使用composer,因爲除了自動加載的php類以外,我不能將任何內容放入供應商/文件夾,因爲訪問權限限於該文件夾。 解除這個限制也不能解決問題,因爲如果我稍後添加一個依賴關係,並且我打電話給作曲者更新,我可以失去我在引導文件夾中所做的更改。「 – ZeeCoder

+0

對不起,對我的不太瞭解第一次閱讀使用自定義安裝程序來安裝api-bootstrap除了供應商/ – nthall

回答

2

我在此期間或多或少的解決了這個問題。

首先,我放棄了完全自動化一切的想法。

結合不同的bootstrapping回購存在太多問題;什麼都可能發生,真的。

但是,我仍然想要自動化的一件事是合併引導回購站的不同依賴關係。因此,我想出了一個非常簡單的腳本,其用法如下所示: (請注意,gitcopy是我在Linux環境中使用的腳本,它只複製存儲庫的內容)。

gitcopy [email protected]:bootstrap // Grabs the bootstrap.php file from a private repo. 
php bootstrap.php fb-bootstrap api-bootstrap 

第二個命令將創建一個新文件夾:'bootstrap',並將其複製到其中。 然後它刪除.git文件夾,因爲我不需要版本控制。 它還引導一個基礎composer.json,並從bootstaps中合併所有其他composer.json文件。 引導程序composer.json文件在進程中被刪除,因此我可以將引導程序的內容複製到我的項目的根文件夾中,而不會提示是否覆蓋其他composer.json文件。

所以基本上,這只是一個很好的小工具來抓住我需要的一切,之後我可以自己處理可能的問題。用這個,我可以使用Yeoman生成器,並且仍然使用我自己的引導文件,而不用擔心衝突。

我無法看到的唯一的事情是如何使這個腳本phar可執行,所以它可以像作曲家一樣工作。 取而代之的是bootstrap.php的bootstrap回購,我只能說:bootstrap api webapp etc

但這是另一天。 :)