あなたの最初の質問のために、私は実験をしました:
- 大きなファイルでレポを作成しました。
hg update null
- 削除しました
.hg\largefiles
hg update
大容量ファイルが帰ってきた!少なくとも Windows では、大きなファイルも にキャッシュされていることがわかりました%UserProfile%\AppData\Local\largefiles
。これは私の唯一の大きなファイル データベースだったので、大きなファイルが 1 つしか含まれていなかったので、それも削除しました。このキャッシュには、複数のローカルのラージファイル対応データベースからの大きなファイルが含まれているため、これには注意する必要があります。2 つのコピーを持つのが無駄だと思われる場合は、ローカル データベースが と同じドライブにある%UserProfile%
場合、それらがハードリンクされていることがわかります。システムに 2 つのドライブがあり、データベースが別のドライブにある場合、データベースはそのAppData
場所にコピーされますが、ハードリンクされず、ディスク使用量が 2 倍になります。
大きなファイルのすべてのコピーが削除されると、hg update
次のようになりました。
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
getting changed largefiles
largefile.dat: can't get file locally
(no default or default-push path set in hgrc)
0 largefiles updated, 0 removed
次に、拡張機能を無効にするために削除[extensions], largefiles=
しました。.hg\hgrc
この時点で、リポジトリは正常に機能していましたが、以前.hglf
は大きなファイルが含まれていた変更セット内のハッシュを含むディレクトリがまだありました。2 番目の質問に対する答えは「はい」です。古いコードをチェックアウトできます。
3 番目の質問については、大きなファイルとハッシュの痕跡をすべて排除するために、次のファイルを作成します。
exclude .hglf
そして実行します:
hg convert --filemap <file> <srcrepo> <destrepo>
convert は変更セットを変更し、新しいデータベースは古いデータベースと無関係になるため、ユーザーはこの新しい変更されたリポジトリを複製する必要があります。