【问题标题】:Finding Large Files in Mercurial Repository在 Mercurial 存储库中查找大文件
【发布时间】:2015-12-14 22:56:06
【问题描述】:

类似于this link,但用于善变。我想找到对我的 mercurial 存储库的大小贡献最大的文件。

我打算使用 hg convert 创建一个新的、更小的存储库。我只是不确定哪些文件会影响存储库的大小。它们可能是已经被删除的文件。

有什么好方法可以在存储库历史记录中的任何位置找到这些内容?有超过 20,000 个提交。我正在考虑一个 powershell 脚本,但我不确定最好的方法是什么。

【问题讨论】:

    标签: mercurial mercurial-convert


    【解决方案1】:

    检查hg help fileset。类似的东西

    hg files "set:size('>1M')"
    

    应该为您解决问题。您可能需要对所有修订进行操作,尽管它只对一个修订进行操作。在 bash 中,我会尝试类似

    for i in `hg log -r"all()" "set:size('>400k')" --template="{rev}\n"`; do hg files -r$i "set:size('>400k')"; done | sort | uniq
    

    可能会成功。也许它可以优化,因为它目前有点重复,可能会运行很长时间;在具有 22000 次提交的 OpenTTD 存储库上,在我的笔记本电脑上只用了不到 10 分钟。

    (同时查看templatesfilesgrep上的hg帮助)

    【讨论】:

    • 谢谢,这很有效。我正在使用窗户。为完整起见,powershell 脚本为 hg log -r"all()" "set:size('>1024k')" --template="{rev}\n" | Foreach { hg files -r $_ "set:size('>1024k')" >> results.txt; get-content results.txt | sort | get-unique > results2.txt; Remove-Item results.txt; Move-Item results2.txt results.txt },而 bat 文件为 for /F %i in ('hg log -r"all()" "set:size('>1024k')" --template="{rev}\n"') DO hg files -r %i "set:size('>1024k')" >> results.txt(虽然不排序/过滤)
    猜你喜欢
    • 2010-11-04
    • 2012-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-06
    • 1970-01-01
    • 2015-08-07
    • 2011-02-21
    相关资源
    最近更新 更多