乌龟git如何获取commit信息?

问题描述 投票:0回答:1

这里有一个奇怪的问题。我需要过滤掉存储库中任何提交消息的某些部分(它是在某些迁移后自动添加的长哈希)。 由于我(和我的团队也)使用 Tortoise git,我在 git 上创建了一个小包装器,它基本上将除了提交消息中的哈希值之外的所有内容转发到标准输出。 我的假设是乌龟 git 最终会调用 git log。 事实上,我的包装器可以工作。当我执行 git log 时,我得到:

TICKETID-xxx
commit message

而不是

TICKETID-xxx
commit message
LONG-HASH

但是,当我将 git 包装器配置为 tortoise git 时,我仍然看到原始提交消息。我已经通过记录其活动排除了我的包装器的问题。

当我从 tortoise git 中选择“显示日志”选项时,我看到以下命令被调用:

git.exe symbolic-ref HEAD
git.exe rev-parse --revs-only --end-of-options HEAD
git.exe rev-parse --revs-only HEAD
git.exe update-index --refresh
git.exe diff-index --cached --raw HEAD --numstat -C -M -z --
git.exe diff-index --raw HEAD --numstat -C50% -M50% -z --
git.exe ls-files -u -t -z
git.exe ls-files -d -z
git.exe ls-files --exclude-standard --full-name --others -z

那么,tortoise git 到底是如何显示提交消息的呢? 有一点是肯定的,提交信息不是来自 git.exe 的标准输出,否则我会在包装器的日志中看到它。

git tortoisegit
1个回答
0
投票

并非 TortoiseGit 中的所有功能都是通过 shell 到 Git 可执行文件来实现的。相反,其中一些依赖于调用 libgit2 或编译为名为 tgit 的 DLL 的 Git 源代码的分支。看起来“显示日志”显示的对话框大量使用了后者。

© www.soinside.com 2019 - 2024. All rights reserved.