对于你的第一个问题我做了一个实验:
- 使用大文件创建了一个存储库。
hg update null
- Deleted
.hg\largefiles
hg update
大文件回来了!事实证明,至少在 Windows 上,大文件也缓存在%UserProfile%\AppData\Local\largefiles
。由于这是我唯一的大文件数据库,它只包含我的一个大文件,所以我也删除了它。此缓存包含来自多个本地启用大文件的数据库的大文件,因此您必须小心这一点。如果拥有两个副本看起来很浪费,那么事实证明本地数据库是否与数据库位于同一驱动器上%UserProfile%
,那么它们是硬链接的。我的系统中有两个驱动器,事实证明,如果数据库位于不同的驱动器上,它仍然会复制到AppData
位置,但不是硬链接,会使磁盘使用量增加一倍。
一旦大文件的所有副本都被删除,hg update
gave:
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=
from .hg\hgrc
禁用扩展。此时存储库工作正常,但仍然有.hglf
目录中包含曾经包含大文件的变更集中的哈希值。所以你的第二个问题的答案是肯定的,你可以查看旧代码。
对于第三个问题,要消除大文件和哈希的所有痕迹,请使用以下命令创建一个文件:
exclude .hglf
and run:
hg convert --filemap <file> <srcrepo> <destrepo>
然后,您的用户将必须克隆这个新的、修改后的存储库,因为转换会修改变更集,并且新数据库将与旧数据库无关。