对于你的第一个问题,我做了一个实验:
- 创建了一个带有大文件的仓库。
hg update null
- 已删除
.hg\largefiles
hg update
大文件回来了!事实证明,至少在 Windows 上,大文件也缓存在%UserProfile%\AppData\Local\largefiles
. 由于这是我唯一的大文件数据库,它只包含我的一个大文件,所以我也删除了它。这个缓存包含来自多个本地启用大文件的数据库的大文件,所以你必须小心这个。如果拥有两个副本似乎很浪费,那么事实证明,如果本地数据库与%UserProfile%
. 我的系统中有两个驱动器,事实证明,如果数据库位于不同的驱动器上,它仍会复制到该AppData
位置,但不是硬链接,并且会使您的磁盘使用量翻倍。
删除大文件的所有副本后,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
在过去有大文件的变更集中仍然有带有哈希的目录。所以第二个问题的答案是肯定的,你可以查看旧代码。
对于您的第三个问题,要消除大文件和散列的所有痕迹,请创建一个文件:
exclude .hglf
并运行:
hg convert --filemap <file> <srcrepo> <destrepo>
然后,您的用户将不得不克隆这个新的、修改过的存储库,因为 convert 会修改变更集,并且新数据库将与旧数据库无关。