1

プロジェクトのレイアウト:

/project_a
   /shared
/project_b
   /shared
/shared

project_aとproject_bの両方に共有フォルダーが含まれている必要があります。svnでは、(相対パスも使用して)サブディレクトリを参照できるため、正常に機能するsvn:externalsandを使用しました。ただし、gitに移行したため、サブディレクトリのチェックアウトはサポートされていないようです。

私たちの解決策は、project_a、project_b、共有をすべて異なるgitリポジトリに配置し、project_aとproject_bでgitサブモジュールを使用することです。ただし、これはsvn:externalsを使用した1つのモノリシックsvnリポジトリよりもはるかに複雑に見えます。gitで一般的な要素を処理する正しい方法は何ですか?

編集:コンセンサスは、サブモジュールが進むべき道であるということです。しかし、それを1日使用したので、使用するのは非常に不親切に思えます。

共有内のファイルに変更を加えた後、次のことを行う必要があります。

  1. 共有で変更をコミットします
  2. シェアの変更をプッシュ
  3. 親ディレクトリに共有ディレクトリを再度追加します
  4. 親ディレクトリをプッシュする

svnでの単一のコミットと比較すると、これははるかに複雑に思えます。そして、これらのステップの1つが欠落していると、バージョン管理が大幅に混乱します。ここで何かが足りませんか?

4

1 に答える 1

1

サブモジュールが正解です。

SVNのモノリシックなアプローチを保存しないという事実は、DVCS(リポジトリにタグを付けてallとして参照する)を使用した設計によるものです。

これにより、正確な構成を参照できます(サブモジュールの真の性質を参照)。つまり、常に正確なSHA1参照を参照します(リビジョン番号を指定する必要がないsvn externalとは対照的です)。

于 2010-04-19T07:48:08.813 に答える