5

私は Git にまったく慣れていません。私は SVN から来て、非常に強力な :external 機能を見つけました。ここGitでは、似たようなものは見つかりませんでした:

  • サブモジュールは、必ずしも必要ではないプロジェクト モジュールを追加するのに最適です。それらはレポのクローン作成後に初期化する必要があり、元のプロジェクトのサブディレクトリのみを含めることはできません。
  • サブツリーはライブラリを追加するのに非常に適しています (サブディレクトリを含めることもできます) が、それらをプッシュするのは本当に面倒です。

シナリオは次のとおりです。いくつかのライブラリを含めたいプロジェクトがあります。これらすべてのライブラリを変更し、それらを独自のリポジトリにプッシュする可能性が必要です。さらに、このライブラリの一部は、より大きなプロジェクトのサブディレクトリです (たとえば、プロジェクトにデモや readme ファイルも含まれている場合、それらのディレクトリはプロジェクトに含めません)。

どうやってやるの?

私はもう試した:

さて、あなたがこの時点に到達した場合、あなたの忍耐に感謝します.今、私の結論は「Gitではサブツリーのプッシュは許可されていない」ですので、別のことを試してみたいと思います ç_ç

4

2 に答える 2

3

コメントからのいくつかの発言:

だから私はお勧めします:

  • 親リポジトリとそのすべてのサブモジュールのロード (git checkout)
  • 必要なものを達成するために、サブモジュール(またはサブモジュールのサブディレクトリ)へのシンボリックリンクを使用して、正しい構造を別の場所に作成します。
  • すべてのサブモジュールの変更をコミットしてプッシュするために、(Git の外部で作成された他のディレクトリ構造から行われた) 変更を検出するために定期的に git ain 親リポジトリに戻り、次に親リポジトリをコミットしてプッシュします。

git チェックアウト

parent repo
  +
  +--> main project
    +
    +-> mainDir1
    +-> mainDir2
  +--> lib1
    +
    +-> lib1Dir1
    +-> lib1Dir2
  +--> lib2
    +
    +-> lib2Dir1
    +-> lib2Dir2

独自のプロジェクト ディレクトリ構造 (たとえば)

  +--> main project (symlink to ../parent/main project)
    +
    +-> mainDir1
    +-> mainDir2
    +-> lib1Dir1    (symlink to ../parent/lib1/lib1Dir1)
    +-> lib1Dir2    (symlink to ../parent/lib1/lib1Dir2)
    +-> lib2Dir2    (symlink to ../parent/lib1/lib2Dir2)

lib2Dir1(実際のプロジェクトでは必要ないため、(たとえば)はないことに注意してください)

于 2012-02-23T09:47:49.557 に答える
1

VonCのソリューションは優れていますが、欠点があります。ある時点でプロジェクトとライブラリの構成をキャプチャする良い方法がありません。

プロジェクトを再度設定する必要がある場合は、プロジェクトとライブラリをチェックアウトする必要がありますが、それらはすべて異なるブランチにあり、以前のものにコミットしている可能性があります。

したがって、VonCの提案に従う場合は、プロジェクトのリリースを行う時点で各リポジトリにタグを作成して、少なくとも同じ時点で再度チェックアウトできるようにすることができます。

それ以外の場合は、常に前に進み、古いバージョンをチェックアウトしないでください。

于 2012-06-05T12:13:48.473 に答える