20

チームでの開発のために git サブモジュールから離れようとしています。これの最も重要な理由は、チーム メンバーがサブモジュールの変更をコミットし、origin にプッシュするのを忘れ、「ルート」プロジェクトでこの新しいコミットへの参照をプッシュすると、origin が壊れ、他の開発者が取得することです。reference is not a treeエラー。問題の開発者が家に帰る前に押した場合、これは問題になる可能性があり、ツリーではないその参照は、どこかの電車の中で彼のバッグの中にある開発者のラップトップのコミットを指しています。

git サブモジュールを composer に置き換えようとしています。私の理由は、git が私の依存関係を認識していない場合、これらの依存関係がリポジトリを壊すことはできないということです。私は packagist からパッケージを追加する方法を知っており、主にこのブログ投稿の助けを借りて、独自の git リポジトリを composer に追加することもできました。

問題、そしてパズルの最後のピースは、私たちの依存関係が、私たちが積極的に取り組んでいる git リポジトリであることです。依存関係の 1 つに更新をプッシュする場合、開発者がcomposer update. 私が得た最も近い方法は、依存関係への変更ごとにタグを作成し、composer.json をこの新しいタグの ID で更新することです。

私が知りたいのは、作曲家が特定のブランチの最新のコミットを常にチェックアウトする方法があるかどうか、またはこれが不可能な場合は、実行時に常に最新のタグを取得する方法があるかどうかですcomposer update. タグ付けはあまり気にしません。開発中に composer.json を更新し続けたくないだけです。

私がテスト用に持っている作曲家ファイル:

{
    "config": {
        "vendor-dir": "app/vendor"
    },
    "repositories":
    [
        {
            "type": "package",
            "package": {
                "name": "wkjagt/seagull",
                "version": "1.0",
                "source": {
                    "url": "git@github.com:wkjagt/Seagull.git",
                    "type": "git",
                    "reference": "master"
                }
            }
        }
    ],
    "require": {
        "wkjagt/seagull": "1.0.*"
    }
}

1.0.*1.0 から始まる最新のタグを取得することを期待していましたが、composer が既に 1.0.1 を持っていると、それを作成しても 1.0.2 を取得しません。これについて何か助けていただければ幸いです。

4

1 に答える 1

24

リポジトリ セクションで各バージョンを個別に指定する必要がない場合は、composer.jsonファイルをwkjagt/Seagullに追加し、次のようにパッケージを含める必要があります。

{
   "type": "vcs",
   "url": "https://github.com/wkjagt/Seagull"
},

その後、Composer はタグを読み取り、それらをバージョンとして扱うことができます。常に最新バージョンを取得したい場合は、パッケージに dev フラグが必要です。

"require": {
    "wkjagt/seagull": "@dev"
}
于 2013-01-30T09:17:21.543 に答える