1

サブモジュールを含むプロジェクトの CI ビルドの場合、作業ツリーが中央リポジトリに送信された状態と正確に一致することを確認したいと考えています。

スーパープロジェクトのリビジョンを取得してチェックアウトした後、次の手順を実行してサブモジュールを更新します。

git submodule foreach 'git reset --hard && git clean -xdf'
git submodule update --init

これは、中央リポジトリでサブモジュールが削除された場合を除いて、すべてのケースで機能するようです。この場合、ジョブの作業コピーには、削除されたサブモジュールがまだ含まれています。

また、スーパープロジェクトの agit clean -xdfは、古いサブモジュールに触れていないようです。

では、古いローカル サブモジュールを自動的に検出して削除することは可能ですか?

4

2 に答える 2

2

問題は、リポジトリの構成が古いサブモジュールのデータで完全に汚染されたままになっていることです。git clean -xdf最初にリポジトリ構成をクリーンアップすることで、なんとか作業を開始できました。

ソースから git 1.8.1.3 を使用していますが、サブモジュールの削除は依然として大きな頭痛の種です。サブモジュール情報がリポジトリ構成に保存されている理由が完全にわかりません。それらの使用を完全に停止し、サブツリー マージに変更しました。

古いサブモジュールがディレクトリにあるとしましょうfoo

.git/configサブモジュールがまだファイルにリストされている場合、サブモジュールは上流で削除されましたが、から削除されました.gitmodules。あなたは今4つのことをする必要があります:

  • サブモジュールの foo データを削除します.git/config
  • 古いサブモジュールの gitfile を削除しますrm foo/.git
  • 古いサブモジュールのリポジトリを削除しますrm -rf .git/modules/foo
  • 今すぐクリーニング:git clean -xdf
于 2013-08-13T16:02:04.313 に答える