启动时在后台进行的操作,
git prune
Counting objects: 945490, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (334718/334718), done.
Writing objects: 100% (945490/945490), done.
Total 945490 (delta 483105), reused 944529 (delta 482309)
Checking connectivity: 948048, done.
输出 git gc :
Checking connectivity: 945490, done.
输出 git prune :
AwesomeForm.UpdateMe()
这两个选项有什么区别?
谢谢
答案 0 :(得分:1)
由于最近添加了 git maintenance
command(Git 2.29(2020 年第 4 季度)),git gc -prune
的替代品将是:
git maintenance pack-refs
# for
git pack-refs --all --prune
在 Git 2.31(2021 年第一季度)中,“git maintenance
”(man) 工具学习了一项新的 pack-refs
维护任务。
见commit acc1c4d,commit 41abfe1(2021 年 2 月 9 日),作者 Derrick Stolee (derrickstolee
)。
(2021 年 2 月 17 日在 Junio C Hamano -- gitster
-- 被 commit d494433 合并)
maintenance
:添加 pack-refs 任务签字人:Derrick Stolee
审核人:Taylor Blau
将松散的引用收集成更压缩的形式是很有价值的。
这通常是packed-refs文件,尽管这可能是未来的reftable。
在具有许多标签或远程分支的存储库中,打包 refs 可能非常有价值,这些标签或远程分支未被本地用户修改,但对于其他查询仍然是必需的。
例如,有许多分解的引用,诸如
之类的命令git describe --tags --exact-match HEAD
可能会很慢(多秒)。
此命令特别用于终端提示,以显示分离的 HEAD 何时指向现有标签,因此速度缓慢会导致用户显着延迟。
添加新的“pack-refs
”维护任务。
它运行 'git pack-refs --all --prune
'(man) 将松散的引用移动到打包的形式中。
目前,这是packed-refs 文件,但将来可能会调整为其他文件格式。
这是'gc'任务的几个子任务中的第一个,可以提取到他们自己的任务中。
在此过程中,我们不应更改“gc”任务的行为,因为这仍然是保持存储库维护的默认方式。
为这些子任务之一创建新任务只会为那些选择不使用“gc”任务的人提供更多自定义选项。
当然可以同时启用“gc”和“pack-refs”任务并定期运行。
虽然他们可能会重复努力,但不会以破坏性的方式发生冲突。
'auto_condition
' 函数指针暂时留在 NULL
。
我们可以在将来扩展此功能,以检查是否应在 'git maintenance run --auto
'(man) 期间运行 pack-refs。
git maintenance
现在包含在其 man page 中:
pack-refs
pack-refs
任务收集松散的参考文件并
将它们收集到一个文件中。这加快了操作
需要遍历多个引用。
并且它可以按计划运行,作为其新的 pack-refs 任务的一部分:
<块引用>maintenance
:增量策略每周运行 pack-refs签字人:Derrick Stolee
审核人:Taylor Blau
当“maintenance.strategy
”配置选项设置为“incremental
”时,会启用默认维护计划。
以每周的节奏将“pack-refs”任务添加到该策略中。
git config
现在包含在其 man page 中:
任务,但每小时运行 prefetch
和 commit-graph
任务,
loose-objects
和 incremental-repack
每日任务,以及 pack-refs
每周任务。
“git maintenance register
”(man) 命令无法注册裸存储库,该问题已在 Git 2.31(2021 年第一季度)中得到纠正。
请参阅 commit 26c7974 的 Eric Sunshine (sunshineco
)(2021 年 2 月 23 日)。
(2021 年 2 月 25 日在 Junio C Hamano -- gitster
-- 被 commit d166e8c 合并)
maintenance
:使用裸仓库修复不正确的 maintenance.repo
路径报告人:Clement Moyroud
签字人:Eric Sunshine
git maintenance start
(man)配置的定期维护任务调用git for-each-repo
(man)运行git maintenance run
(man) 在多值全局配置变量 maintenance.repo
指定的每个路径上。
由于 git for-each-repo
可能会在需要定期维护的存储库之外运行,因此 maintenance.repo
指定的存储库路径必须是绝对路径。
然而,不幸的是,git maintenance register
(man) 没有做任何事情来确保它分配给 maintenance.repo
的路径确实是绝对的,并且实际上可能 - - 特别是在裸仓库的情况下 - 为 maintenance.repo
分配一个相对路径。
通过在将所有路径分配给 maintenance.repo
之前将它们转换为绝对路径来解决此问题。
同时,还要修复 git maintenance unregister
(man) 以将路径转换为绝对路径,以确保它可以正确地从 {{1 }} 通过 maintenance.repo
分配的路径。