1

編集:ここで達成しようとしたことは、Yeomanプロジェクトで実行できます。


そこで、プライベート サーバーに git+composer+satis をセットアップしました。すべて正常に動作し、非常に熱心です。それらすべてを愛さなければなりません。

私はプロジェクトとプライベート パッケージに git を使用しているため、基本的なワークフローは次のようになります。

git clone git@myserver:the-project-name
composer install

これにより、プロジェクト リポジトリが複製され、必要な依存関係がインストールされます。素晴らしい。

しかし、いくつかの「スケルトン リポジトリ」を使用して、それらの内容をプロジェクトにコピーし、依存関係情報を保持できるようにしたいと考えています。

次の例を見てください。

  • test-project という名前の git リポジトリを作成し、それをローカルに複製します。
  • Facebook アプリのスケルトンである fb-bootstrap と呼ばれる別の git リポジトリがあります。
  • また、別のブートストラップ スケルトン git リポジトリもあります。これも含めたいと思います。たとえば、これは api/ フォルダーになります。それを呼びましょう: api-bootstrap
  • だから私もそれらを複製したいのですが、同じディレクトリにすでにgitリポジトリがあるため、もちろんできません。
  • 考えられる解決策: 次のコードを使用するため、ファイルのみを取得します。tar xf -'

これは問題ありませんが、問題があります。依存関係が異なります-composer.jsonファイルが異なります- fb-bootstrap と api-bootstrap リポジトリの場合、それらすべてをインストールする方法を見つける必要があります。

アクセスがそのフォルダーに制限されているため、自動ロードされた php クラス以外は vendor/ フォルダーに何も配置できないため、これには composer を使用しないことに注意してください。

その制限を解除しても問題は解決しません。後で依存関係を追加して を呼び出すとcomposer update、ブートストラップ フォルダーで行った変更が失われる可能性があるためです。

上記のサブモジュールとコピーファイルのみのハックは、上記の理由により、それを完全にカットしません。

概要:

必要な数のブートストラップ リポジトリを含めることができるソリューションが必要です。それが完了したら、すべての依存関係をインストールできる必要があります。

このような:

  • git init プロジェクト リポジトリ、
  • ローカルでプロジェクト リポジトリを git clone し、
  • 必要なブートストラップ リポジトリのコンテンツをいくつか取得し、
  • プロジェクト用に宣言した依存関係と、すべてのブートストラップ リポジトリの依存関係をインストールします。

これを行う方法はありますか?

また、私がこの問題に完全に間違った方法で取り組んでいると思われる場合は、遠慮なく教えてください。とにかく新しい技術に順応しています。変化を恐れません。:)

どんなコメントでも大歓迎です。

4

1 に答える 1

2

その間、私は多かれ少なかれ問題を解決しました。

まず、すべてを完全に自動化するという考えをあきらめました。

さまざまなブートストラップ リポジトリを組み合わせると、問題が多すぎます。本当に何でも起こり得る。

それでも自動化したいことの 1 つは、ブートストラップ リポジトリのさまざまな依存関係をマージすることです。

これらの変更の後、私は非常に単純なスクリプトを思いつきました。その使用法は次のようになります: ( gitcopy は、Linux 環境で使用するスクリプトであり、リポジトリのコンテンツのみをコピーすることに注意してください。)

gitcopy git@server:bootstrap // Grabs the bootstrap.php file from a private repo.
php bootstrap.php fb-bootstrap api-bootstrap

2 番目のコマンドは、新しいフォルダー「bootstrap」を作成し、そこにリポジトリを複製します。次に、バージョン管理が必要ないため、.git フォルダーを削除します。また、ベースとなる composer.json をブートストラップし、その中のブートストラップから他のすべての composer.json ファイルをマージします。ブートストラップ composer.json ファイルはその過程で削除されるため、ブートストラップの内容をプロジェクトのルート フォルダーにコピーするだけで済み、他の composer.json ファイルを上書きするプロンプトは表示されません。

つまり、基本的には、必要なものすべてを取得するための素敵な小さなツールであり、その後、起こりうる問題に自分で対処できます。

これにより、競合を心配することなく、Yeoman ジェネレーターを使用しながら、独自のブートストラップ ファイルを使用することができました。

私が調べることができなかった唯一のことは、このスクリプトを phar 実行可能ファイルにする方法です。これにより、composer のように動作する可能性があります。bootstrap.php のブートストラップ リポジトリを取得する代わりに、次のように言えますbootstrap api webapp etc

しかし、それは別の日のことです。:)

于 2014-01-26T22:16:46.387 に答える