Ste*_*han 4 version-control mercurial large-files mercurial-extension
在过去,我一直在使用mercurial中的largefiles扩展来将数据与我一直在处理的代码一起保存.我认为这是一个错误,我想删除"largefiles"目录(8GB).我们的网络用户目录限制为10 GB,我需要空间.我很久没有使用任何大文件了.当他们永远消失时,我不会想念他们.
所以我的问题是
对于你的第一个问题,我做了一个实验:
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
Run Code Online (Sandbox Code Playgroud)
然后我删除[extensions], largefiles=
从.hg\hgrc
禁用扩展.此时存储库工作正常,但仍然.hglf
在变更集中具有哈希的目录,该目录曾经有大文件.所以第二个问题的答案是肯定的,你可以查看旧代码.
对于第三个问题,要消除所有大型文件和哈希的痕迹,请创建一个文件:
exclude .hglf
Run Code Online (Sandbox Code Playgroud)
并运行:
hg convert --filemap <file> <srcrepo> <destrepo>
Run Code Online (Sandbox Code Playgroud)
然后,您的用户必须克隆这个新的,已修改的存储库,因为convert会修改更改集,并且新数据库将与旧数据库无关.
归档时间: |
|
查看次数: |
3128 次 |
最近记录: |