我怎么知道'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