GitHubでのGitプロジェクトの依存関係


14

PHPフレームワークとフレームワークの上にCMSを作成しました。CMSはフレームワークに依存していますが、フレームワークはCMSファイル内の自己完結型フォルダーとして存在します。GitHubでそれらを個別のプロジェクトとして維持したいのですが、フレームワークを更新するたびにCMSプロジェクトを更新するのが面倒になりたくありません。理想的には、これらのファイルを物理的にコミットするのではなく、CMSに何らかの方法でフレームワークファイルをプルして事前定義のサブディレクトリに含めるようにしたいと思います。

これはGit / GitHubで可能ですか?もしそうなら、それを機能させるために何を知る必要がありますか?私は非常に基本的なレベルのGitを使用していることに留意してください。Eclipse用のGitプラグインを使用してリポジトリを作成し、コミットし、GitHubに接続できます。私は現在、プロジェクトでソロで作業しているので、これまでGitについてこれ以上学ぶ必要はありませんでしたが、将来的に他の人にGitを公開したいと思います。

また、依存関係のあるプロジェクトの理想的なワークフローは何でしょうか?そのテーマに関するヒントも大歓迎です。私の設定についてさらに情報が必要な場合は、コメントでお尋ねください。


ここでの話としてgitのサブツリーをチェックアウト:blogs.atlassian.com/2013/05/...
ニック・

回答:


11

まず、本当にこれにgitを使用したい場合は、そのサブモジュール機能の使用を検討してください:

Gitのサブモジュールのサポートにより、リポジトリにサブプロジェクトとして外部プロジェクトのチェックアウトを含めることができます。サブモジュールは独自のアイデンティティを維持します。サブモジュールサポートはサブモジュールリポジトリの場所とコミットIDを保存するだけなので、含まれるプロジェクト(「スーパープロジェクト」)を複製する他の開発者は同じリビジョンのすべてのサブモジュールを簡単に複製できます。スーパープロジェクトの部分的なチェックアウトが可能です。サブモジュールのどれも、一部またはすべてのクローンを作成しないようにGitに指示できます。

リンクされたページには、正確な使用方法の例を含む詳細な議論が含まれています。

そうは言っても、依存関係の管理にバージョン管理システムを使用せず、MavenAntなど、これらを処理できるビルドツールの使用を開始することをお勧めします。開発中のPhingと呼ばれるPHP固有のビルドツールもありますが、私はまだ自分で使用していません。それはあなたの質問を議論する記事で言及されています:バージョン管理!=依存関係管理

ビルドツールが長期的に適している理由は、多くの場合、さまざまなリポジトリタイプ、外部ライブラリ(およびさまざまな場所)、広範なチェックもサポートしているためです。ただし、これら2つのライブラリを統合するだけで、面倒な追加作業が必要ない場合は、おそらくサブモジュールのアプローチで十分です。


+1-デッカードありがとう。GitにはSubmodulesのようなものがあると思いましたが、それが何と呼ばれているのかわかりませんでした。私は間違いなくPhingを長く見ていきます。依存関係を管理し、単体テストを実行してからサイトにデプロイするPHPビルドツールが必要でした。Phingはおそらくそれをすべて行えるようです。また、学習に少し時間がかかるようです。Phingの優れたスクリーンキャストを知っていますか(Googleはその点で親切ではありません)。
VirtuosiMedia

「サブモジュールの機能」へのリンクが壊れている、そして「バージョン管理=依存性管理!」へのリンクも壊れている
Ferrybig

6

Gitサブモジュールは、gitプロジェクトの依存関係を管理する優れた方法です。

別のアプローチを探している場合:

Composerはこれをすべてあなたのために行うことができます。Composerはphpの依存マネージャーです。構文はjsonです。かなり簡単で安価です。

作曲家の詳細:

Composerは、PHPの依存関係管理のためのツールです。プロジェクトに必要な依存ライブラリを宣言することができ、プロジェクトにそれらをインストールします。

上のドキュメントページは、あなたのcomposer.jsonファイルが構築される方法の一例を見つけることができます。

// Composer.json    
{

    "name": "acme/blog",
    "repositories": [
        {
            "type": "vcs",
            "url": "https://github.com/composer/hello-world"
        }
    ],
    "require": {
        "acme/hello-world": "dev-master"
    }
}

composer.jsonおよびcomposer.lockファイルをプロジェクト用に作成したら、依存関係を簡単にインストールできます。

composer.phar install またはそれらを更新します: composer.phar update またはpackagistから特定のプロジェクトを作成します: composer.phar create-project acmeproject


1

最近、プロジェクトの依存関係を管理するためにPundleというツールを使い始めました。PHPバージョン、PEARパッケージ、Gitリポジトリ、SVNリポジトリを依存関係としてサポートし、「Pandlefile」を使用して簡単に指定できます。

また、Git / SVNチェックアウトがバージョン管理下にないディレクトリ(「ベンダー」など)に配置されるように依存関係を構成する必要があります。これにより、すべてのチェックアウトで新たに開始し、プロジェクトのリポジトリを無駄なく維持できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.