1

いくつかのモジュールで構成される大きなプロジェクトは、次を使用して分割されました

git filter-branch -f --index-filter "git rm -r -f --cached \
--ignore-unmatch $(ls -w 100500 -xd ^(editor|shared|thirdparty) )" \
--prune-empty -- --all

および2つのプロジェクトABへの残りのモジュールの同様のコマンド

元の (分割されていない) コピーの .git リポジトリのサイズは100MbAの .git のサイズは89MbBの .git のサイズは110Mb です。

プロジェクトABの両方で、クリーンアップを次のように使用しました

rm -rf .git/refs/original/
git reflog expire --expire=now --all
git gc --prune=now
git gc --aggressive --prune=now

2 つのコピーに分割されている元のリポジトリのサイズが、分割の合計よりも2 倍小さい理由がよくわかりません。

BでAからいくつかのファイルの検索を実行しようとしましたが、 Aにはそのようなファイルはなく、 Bには一致することがわかりました。したがって、ファイル(少なくともそれらのファイル)は複製されていないようです。私は次のようなコマンドを使用しました

git log --all -- **/CryptoInterface.java

ファイルを探すために。

したがって、質問 - 元のプロジェクトが 100 MB の場合、A は 30 MB、B は 70 MB、または少なくともサイズ A と B の合計が元の 100 MB の 2 倍にならないと仮定します。

私の仮定に何か問題がありますか?おそらく、プロジェクトABに重複がありますか? どうすればそれを確認し、重複したオブジェクトを見つけることができるでしょうか?

前もって感謝します!

4

1 に答える 1

0

パッケージを再梱包しようとしましたか? git でぶら下がっているオブジェクトを削除する必要があるたびに、次のコマンドを使用します。

rm -rf .git/refs/original/*
git reflog expire --all --expire-unreachable=0
git repack -A -d
git prune
于 2013-03-20T03:38:05.013 に答える