社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Git

哪些git命令隐式运行“git gc”?[复制品]

kevzettler • 5 年前 • 1517 次点击  

是否有一个明确的命令列表 git gc --auto 跑步?这个 git-gc(1) man page 简单地说:

——汽车

使用此选项,git gc将检查是否需要任何内务处理;如果不需要,它将退出而不执行任何工作。 一些git命令 运行 Git GC—自动 在执行可能创建许多松散对象的操作之后。

(强调)

我正在组织从svn到git的大规模迁移。绝大多数用户将使用windows个人电脑,其中有相当一部分是非技术性的。他们将使用Tortoisegit(因为它与Tortoisesvn非常匹配,他们已经很熟悉了)-我注意到Tortoisegit不包含任何运行的功能 git gc 手动操作。

不能指望非技术人员必须启动“git bash”命令行才能运行 Git GC—自动 从适当的工作目录;因为我们使用的是msysgit的“可移植”发行版,所以他们没有“git gui here…”windows shell上下文菜单快捷方式。

随着时间的推移,git大部分是自我维护的,这是合理的吗?还是我需要尝试开发一种非技术性的、用户友好的调用方法? Git GC—自动 ?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/40343
 
1517 次点击  
文章 [ 2 ]  |  最新文章 5 年前
VonC
Reply   •   1 楼
VonC    7 年前

对于Git 2.17(2018年第二季度),您必须添加 git commit 到触发 git gc --auto .
实际上,从git开始就应该是这样。

commit 095c741 (2018年2月28日)截止日期 Ævar Arnfjörð Bjarmason ( avar ) .
(合并) Junio C Hamano -- gitster -- 在里面 commit 9bb8eb0 2018年3月8日)

commit 运行 Git GC—自动 就在 post-commit

改变 git-commit 回到原来的样子 d4bb43e (“调用”” Git GC—自动 “从 犯罪 , merge , am rebase “,2007-09-05,git v1.5.4-rc0),当时 git-commit.sh .

不久之后 f5bbc32 (港口) GIT提交 到C.“,2007-11-08,git v1.5.4-rc0)当它被移植到C时, Git GC—自动 “召唤消失了。

自从那次意外的倒退, Git GC—自动 只跑 git-am , git-merge , git-fetch git-receive-pack .
可以写一个脚本 GIT提交 “大量本地数据,以及 gc 不会跑的。

本地提交生成的区域文件的此类存储库 在添加每日cronjob之前,更改的大小已经增加到大约60gb “ git gc “,将其降低到小于1GB。这将使 案例在没有干预的情况下有效。

我认为修复这样的病理病例 永远是一个值得交换的花费几个 毫秒调用“ Git GC—自动 “(在一般情况下 什么都不做)。

Arrowmaster
Reply   •   2 楼
Arrowmaster    14 年前
builtin/merge.c:            const char *argv_gc_auto[] = { "gc", "--auto", NULL };
builtin/receive-pack.c:     "gc", "--auto", "--quiet", NULL,
git-am.sh:                  git gc --auto
git-rebase--interactive.sh: git gc --auto &&
git-svn.perl:               command_noisy('gc', '--auto');

git grep -- --auto 在git.git上,这些结果看起来很有趣。值得注意的是 builtin/merge.c 也就是说 git pull 应该触发 git gc --auto .

另外,除非你的“非技术性”员工正在做相当“高级”的工作(此时他们将不再是“非技术性”员工),否则我不明白他们为什么需要运行 git gc 手动而不是让 Git GC—自动 处理好一切。