当我将sh文件添加到SourceTree的自定义操作函数时,错误消息是:
git: command not found
但是当我去终端使用git命令时,它就存在了。如果我在我的sh文件中添加Git的路径,它就可以工作。
如何在不输入git的完整路径的情况下运行我的脚本?
git archive --output=archive-$1.tar $1 $(git diff-tree -r --no-commit-id --name-only --diff-filter=ACMRT $1)
为什么源树需要Git的完整路径?
答案 0 :(得分:0)
SourceTree自定义操作与使用Terminal时没有设置相同的$ PATH。
echo $PATH
SourceTree自定义操作bash脚本:
/ usr / bin:/ bin:/ usr / sbin:/ sbin
macOS终端:
/ usr / local / bin:/ usr / bin:/ bin:/ usr / sbin:/ sbin
将PATH变量更改为使用macOS默认值:
#!/bin/bash
export PATH="/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"
hub sync
可能会有更好的方法。
答案 1 :(得分:0)
打开终端时,命令bash --login -i
短暂出现。如果您将其添加到“自定义操作”中,它将获得与终端相同的路径。
按如下所示设置自定义操作:
要运行的脚本:从浏览窗口中选择bash.exe,它可能位于:
C:\Users\{user}\AppData\Local\Atlassian\SourceTree\git_local\bin\bash.exe
参数:--login -i c:\path_to_script\script.sh
静默选中“显示完整输出并运行”命令以在操作框中查看输出,取消选中“显示完整输出”以隐藏它,除非在运行时单击。
将以下内容添加到脚本中以暂停屏幕以查看任何错误消息可能很有用(我相信在“在单独窗口中打开”处于选中状态并且以静默方式运行时未选中)
read -p "Press [Enter] key to continue..."