乌龟Git - 更改默认合并信息

3

系统描述:

  • Windows 7
  • git 版本 2.10.1.windows.1
  • TortoiseGit 2.3.0.0


我希望:

合并提交消息以完全自动的方式进行更改(无需手动amend



摘要:

在Windows上使用TortoiseGit时,没有prepare-commit-msghook,只有start-commit-hook,无论钩子脚本是什么,我都会收到Windows弹出错误提示:

%1 is not a valid Win32 application

此外,我更希望仅修改“合并”提交的提交消息。

步骤:

enter image description here

将工作树路径设置为与我的项目路径相同,
并在“要执行的命令行”中选择我准备好的文件:

.git\hooks\prepare-commit-msg

这段文本的内容是:echo "test"

然后我尝试提交代码,但出现了以下错误:

enter image description here

我已经确认这个脚本文件确实是被使用的文件,因为如果我将其删除,就会收到以下消息:

enter image description here


你使用的是哪个版本的Windows、SourceTree和Git?SourceTree是使用嵌入式Git还是系统Git(即与SourceTree分开安装的自己的Git)? - VonC
@VonC - 抱歉,我本来想添加那些内容的,但是忘记了,然后就直接发布了。现在已经添加上了。 - vsync
相关问题 - https://dev59.com/lpjga4cB1Zd3GeqPRO2f - vsync
1个回答

5

TortoiseGit钩子完全独立于普通的Git钩子。

您可以使用任何脚本语言或可执行文件作为TortoiseGit钩子脚本。但是,在配置中,您必须输入一个有效的Windows可执行文件作为命令,例如.exe文件,对于.js.vbs脚本,您需要指定解释器(wscriptcscript)和脚本路径作为解释器参数(参见这里)。要执行bash脚本,我认为您需要使用适当的参数执行bash.exe到脚本 - 我以前没有测试过。

执行的钩子会从TortoiseGit获取一些参数,这些参数在这里有文档记录,例如,Start-commit在打开提交对话框时调用,并获取三个cli参数:PATH MESSAGEFILE CWD,其中PATH是包含提交对话框所有条目的文件路径,MESSAGEFILE是用作提交消息的内容的文件路径,而CWD是工作树路径。

示例可在https://github.com/TortoiseGit/TortoiseGit/tree/master/contrib/hook-scripts/client-side找到。

PS:为了检查这是否是合并提交,您可以检查.git/MERGE_HEAD的存在。


我该如何检查 .git/MERGE_HEAD - vsync
抱歉,我离开了一会儿:钩子脚本将工作树的路径作为参数传递。只需在其后附加.git/MERGE_HEAD并检查该文件是否存在即可。如果存在,则是合并提交,否则不是。 - MrTux
我该如何检查?我不知道这些东西中的任何一个..抱歉,这超出了我作为客户端开发人员的工作范围..我从未不得不做这些事情或知道它们的存在,并且谷歌在“tortoisegit hook examples”这个主题上几乎没有答案。 - vsync
更新了答案。 - MrTux
@MrTux 如果TortoiseGit找不到解释器的环境变量,我该怎么办?在系统变量下,我已经设置了指向pwsh.exe的PWSH变量。然后,在TortoiseGit中要执行的命令行中,我写了PWSH %root%'myscript.ps1。之后,我收到了“系统找不到指定的文件”的消息。但是,如果我在文本框中写入pwsh.exe的完整路径,则会执行myscript.ps1。 - deralbert
@MrTux 我自己解决了。我无法在此文本框中使用任何环境变量,我只能使用我的PATH环境变量中的所有内容。在将pwsh.exe路径添加到PATH后,我的TortoiseGit .ps1钩子按预期工作了。 - deralbert

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