如何使用TortoiseGit获取提交信息?

3
一个奇怪的问题。我需要过滤掉存储库中任何提交消息的一部分(这是在某个迁移后自动添加的长哈希)。 由于我(以及我的团队)使用的是Tortoise Git,所以我创建了一个小包装器,基本上将所有内容转发到标准输出,除了提交消息中的哈希值。 我的假设是Tortoise 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的stdout,否则我会在我的包装器日志中看到它。
1个回答

3
TortoiseGit并非通过调用Git可执行文件来实现所有功能。相反,它的一部分依赖于调用libgit2或编译为名为tgit的DLL的Git源代码的分支。看起来,“显示日志”对话框在很大程度上使用了后者。

好的,谢谢您的回复,我明白我的方法肯定行不通。您有其他建议可以满足我所需的功能吗? - undefined
@SterpuMihai,对于你想要做的事情,我有点不太清楚。我不确定将这些信息隐藏在一个Git客户端中有什么作用。这只是为了方便,还是为了隐藏敏感信息?在Git中有一些“重写历史”的方法,可以让你更新所有提交以删除长哈希值。如果问题确实是如何在不修改提交的情况下隐藏特定信息在TortoiseGit中,那么我想你最好的选择就是修改TortoiseGit的源代码,因为它是开源的。 - undefined
1
这只是为了方便,即更好地阅读提交日志。第一个问题是提交日志不遵循git的“主题约定”,而是在票证标识符后面加上换行符。通过使用“显示提交消息的主题和正文”,这个问题很容易解决。然而,由于svn-git迁移,每个提交消息还添加了一些哈希值。这些哈希值相当烦人,我的意图是删除对我们来说无趣的哈希部分(但同时保留在提交消息中以备可能的将来使用)。 - undefined
最后我成功地使用Visual Studio 2022修改了Tortoise Git,谢谢你的提示!:) - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接