そのため、最近、会社のメインコードリポジトリ内のファイルを再配置して、よりソートされているようにしました。これには、ほぼすべてのファイルをリポジトリ内の別の場所に移動することが含まれ、それが行われた唯一の変更でした。これにより、.hg
フォルダーは、1回のリビジョンで16GBから21GB(+ 5 GB)に増加します。
なぜこれが発生するのですか?それを回避してそのリビジョンを小さくする方法はありますか?はい、moveコマンドを使用しましたが、Googleを検索しましたが、これを説明したり、リポジトリを複数に分割する以外にレポのサイズを縮小したりする方法を提供する結果が得られていません(これはおそらく同じサイズ)。
Hgアーキテクチャを正しく理解していれば—
Mercurialの履歴ストレージ形式は、ファイルごとに1つの「revlog」を使用します。新しいバージョンはそれぞれ同じログファイルに追加されます。 (たとえば、「hello.c」のすべてのバージョンは「.hg/store/data/hello.ci」に保持されます。)同じrevlog内の近くのリビジョンは、スペースを節約するためにデルタ圧縮されます(同じリビジョン間でデータを共有します)ファイル)。
ただし、形式 まだありません異なるファイルに属するrevlog間で同一のデータを共有するメカニズムがあります。その結果、以前にファイルAにデータがあり、現在はファイルBにある場合、そのデータは少なくとも1回はeachファイルのrevlogに完全に保存する必要があります。これに関する進捗状況は、Bugzillaスレッド #88 で確認できます。
ご了承ください hg move
は履歴を書き換えません。ファイルAの名前をファイルBに変更した後でも、以前のすべてのリビジョンではファイルAとして参照されるため、リポジトリには引き続きファイルAとB(1つ)の両方のリビジョンログが必要です。古いリビジョンを含み、他は新しいリビジョンを含みます)。