我怎么知道'git gc--auto'是否做了什么?
我正在运行我怎么知道'git gc--auto'是否做了什么?,git,Git,我正在运行git gc--auto,作为自动保存脚本的一部分。如果git-gc--auto做了一些事情,我想运行进一步的清理,但是如果git-gc--auto感觉不需要做一些事情,我想省去麻烦。有没有办法检查git gc--auto的返回值,或者事先检查是否需要运行它?如果您正在监视git gc--auto退出状态(例如,用于检测故障),则返回值已随git 2.20更改: 参见。 帮助人:。 (于2018年10月16日合并) gc:退出,故障状态为128 从cmd\u gc返回的-1值被传播到e
git gc--auto
,作为自动保存脚本的一部分。如果git-gc--auto
做了一些事情,我想运行进一步的清理,但是如果git-gc--auto
感觉不需要做一些事情,我想省去麻烦。有没有办法检查git gc--auto的返回值,或者事先检查是否需要运行它?如果您正在监视git gc--auto退出状态(例如,用于检测故障),则返回值已随git 2.20更改:
参见。帮助人:。
(于2018年10月16日合并)
gc
:退出,故障状态为128
从cmd\u gc返回的-1
值被传播到exit()
,导致退出状态为255。
使用die可获得更清晰的错误信息和受控退出
您现在拥有的不是“错误:上次gc运行报告了以下内容。
”:
fatal: The last gc run reported the following
如果您正在监视git gc--auto
退出状态(例如,用于检测故障),则返回值已随git 2.20而更改:
参见。帮助人:。
(于2018年10月16日合并)
gc
:退出,故障状态为128
从cmd\u gc返回的-1
值被传播到exit()
,导致退出状态为255。
使用die可获得更清晰的错误信息和受控退出
您现在拥有的不是“错误:上次gc运行报告了以下内容。
”:
fatal: The last gc run reported the following
2020年9月更新:您不必在自动保存脚本中只运行git-gc--auto
旧的“gc
”现在可以被新的git维护运行--auto
它可以显示它正在做什么
在Git 2.29(2020年第4季度)中,引入了一个“()”的老大哥来处理更多的存储库维护任务,而不仅仅是清理对象数据库
参见,,,,(2020年9月17日)作者
(于2020年9月25日合并)
:创建基本维护运行程序
帮助人:乔纳森·尼德
签字人:德里克·斯托利
“gc”内置是我们当前自动维护存储库的入口点。这一工具执行许多操作,例如:
- 重新打包存储库
- 包装参考,以及
- 重写提交图文件
这个名称意味着它执行“垃圾收集”,这意味着几个不同的事情,一些用户可能不想使用这个重写整个对象数据库的操作
创建一个新的“维护”
”内置命令,它将成为一个更通用的命令
首先,它将只支持“run
”子命令,但稍后将扩展以添加用于在后台计划维护的子命令
目前,“维护
”内置是“gc
”内置之上的一块薄垫片。
事实上,唯一的选项是'--auto
'切换,它直接传递给'gc
'内置项。
当前的更改与此简单操作隔离,以防止在添加新内置项的所有样板文件中丢失更有趣的逻辑
使用现有文件,因为我们希望在两个内置文件之间共享代码。
我们可能会在某个时候让“maintenance
”完全替换“gc
”内置项,将“()”作为“git maintenance run
”的某些特定参数的别名
创建一个新的test_子命令
helper,允许我们测试是否运行了某个子命令。它需要将GIT_TRACE2_事件
日志存储在文件中。否定模式可用,将在以后的测试中使用 (最后一部分是确定新的
git维护运行的一种方法——auto
做了些什么)
git维护
现在包括在其中:
git维护(1)
名称
git维护
-运行任务以优化git存储库数据
提要
通过使用“--split
”选项编写增量提交图文件,我们将此操作造成的中断降至最低
默认行为是合并层,直到新的“顶部”层小于下面层的一半大小。这在大多数情况下提供快速写入,较长的写入遵循幂律分布
最重要的是,并发Git进程只在很短的时间内查看提交图链文件,因此当我们尝试替换该文件时,它们很可能不会持有该文件的句柄。(这仅在Windows上起作用。)
如果并发进程读取旧的提交图链文件,但我们的作业在读取部分.graph
文件之前使其过期,那么这些进程将看到警告消息(但不会失败)。这可以通过在编写提交图时使用--expire time
参数来避免
git维护
现在包括在其中:
提交图
commit graph
作业增量更新commit graph
文件,
然后验证写入的数据是否正确
增量
write可以安全地与并发Git进程一起运行,因为它
将不会过期以前版本中的.graph
文件
提交图形链
文件。它们将由以后的运行删除
关于过期延迟
以及:
:为提交图
任务添加自动条件
签字人:德里克·斯托利
不是在每个进程中写入新的提交图
(当维护.commit graph.enabled
配置为true
时),而是仅在有“足够”c时写入
git commit-graph write --reachable --split