我正在尝试设置源树自定义Git操作来提取和压缩文件以便从选定的提交部署到HEAD,不包括使用--diff-filter删除的文件。
archive -o deploy.zip HEAD $(git diff --name-only --diff-filter=ACMR $SHA)
Source Tree custom action screenshot
问题是这个Git命令在没有错误的情况下通过Git终端窗口完美地工作,但是当我尝试在源代码树中使用它时,我得到了这个错误。
git archive -o deploy.zip HEAD $(git diff --name-only --diff-filter=ACMR fbf360c607b01fc8c504c9fcf98114eb4bc1896c)
error: unknown option name-only
Source Tree custom action error message screenshot
我试图弄清楚这个问题有什么问题,但没有成功。我想知道是否有人在Source Tree中遇到过这个或类似的问题,因为它看起来像是一个bug。
答案 0 :(得分:0)
$(...)是bash commands substitution,它在里面运行命令并将其输出插入命令行。 SourceTree不使用bash来调用命令(它是Windows,不是吗?),并且你的命令没有被替换。
您应该将命令放在脚本中,大致如下:
------ C:.. \ script.sh ----
#!/bin/sh
git archive -o deploy.zip HEAD $(git diff --name-only --diff-filter=ACMR "$1")
并设置从源树中调用它:
要运行的脚本:[... \ bash.exe]
参数:[ - c c:.. \ script.sh $ SHA1]
答案 1 :(得分:0)
尤其是对于Windows机器,看来您离@ max630的答案还需要一步。 将命令放入脚本中(例如c:\ scripts \ deploy.sh)
#!/bin/sh
git archive -o deploy.zip HEAD $(git diff --name-only --diff-filter=ACMR "$1")
按如下所示设置自定义操作:
要运行的脚本:从浏览窗口中选择bash.exe,它可能位于:
C:\Users\{user}\AppData\Local\Atlassian\SourceTree\git_local\bin\bash.exe
参数:--login -i c:\scripts\deploy.sh
(打开终端时会短暂显示--login -i
)
将以下内容添加到脚本中以暂停屏幕以查看任何错误消息可能很有用(我相信已选中“在单独窗口中打开”)
read -p "Press [Enter] key to continue..."