Atlassian SourceTree自定义操作对比

5
在检出一个新分支之后,我想通过Atlassian SourceTree(版本1.4.0.0)停止跟踪像.classpath这样的文件。我创建了一个自定义操作,具体如下:

enter image description here

然后,从“工作副本更改”面板中,我选择了一个文件,右键单击它并尝试执行“假定未更改”自定义命令。然而,我得到了完全不可读的错误消息:

enter image description here

我复制了上述错误消息中的完整命令,并尝试在命令行中执行它:enter image description here

有趣的是,它奏效了。

有人能告诉我为什么这个自定义操作通过右键单击并从菜单中选择没有起作用吗?


你正在使用哪个版本的SourceTree,Windows还是OS X? - user456814
@Cupcake 我正在使用 Windows 版本 1.5.2.0。 - Juvanis
检查命令返回的退出代码(请参见https://dev59.com/o3RC5IYBdhLWcg3wUvUS#334890)。 - habakuk
当我看到“争议”一词时,我以为这涉及到一场诉讼 :D - Rajavanya Subramaniyan
4个回答

2
这很有趣。当我之前可用的基于git的命令现在无法工作时,我才注意到我的设置中存在此问题。我认为在更近期的SourceTree版本中发生了一些变化。我相信问题是由于调用的命令没有像从SourceTree打开终端时一样获取完整的环境设置而引起的。 完成带错误 的消息是命令未被找到的结果。
对于我的设置,我通过使用cmd进程构建自己的自定义操作来解决此问题。例如:
  • 标题:选择提交的完整索引补丁
  • 要运行的脚本:cmd
带参数的:
/c %LOCALAPPDATA%\Atlassian\SourceTree\git_local\bin\sh.exe --login -i -c 'git format-patch --full-index -1 $SHA'

另一个例子:

  • 标题:工作索引的完整索引补丁
  • 运行脚本:cmd

带参数:

/c %LOCALAPPDATA%\Atlassian\SourceTree\git_local\bin\sh.exe --login -i -c ^"git diff --full-index --cached > patch.diff^"

(以下示例假设您正在使用SourceTree中的嵌入式Git)

使用SourceTree 1.6.12和Git 1.8.3。


0

我最近在Windows上使用SourceTree自定义操作得到了一些自定义操作:

在Windows中使用git stash + pull + unstash

要运行的脚本:cmd
参数:/c %LOCALAPPDATA%\Atlassian\SourceTree\git_local\bin\sh.exe -c -e 'alias git=/c/Users/%username%/AppData/Local/Atlassian/SourceTree/git_local/cmd/git.exe; git stash; git pull --rebase; git stash pop'

如果您安装了多个版本的git,则可以处理,并且在中途失败时提前退出。

在MacOS中使用git stash + pull + unstash

在MacOS中的大致等效物如下:

要运行的脚本:/path/to/stash_unstash.sh
参数:$REPO

stash_unstash.sh

#!/usr/bin/env bash

cd $1
git stash && git pull --rebase && git stash pop

0

检查$FILE是否表示您选择的文件的完整路径。
在“自定义操作-更强大的功能”(2012年2月,当自定义操作引入到Atlassian Source Tree 1.3+时)中似乎是这样呈现的。

如果是这种情况,使用$FILE而不是C:/Repository/$FILE应该就足够了。


我仔细检查了路径,$FILE代表所选文件的相对路径,这就是为什么我添加了存储库路径作为前缀。此外,我已经提到当我将自定义操作生成的命令(出现在错误消息中)复制并粘贴到命令行时,它可以正常工作。这就是奇怪的事情! - Juvanis
好的。你能试试用$ FILE alonz来测试一下吗? - VonC
在尝试使用repositoryPath+$FILE之前,我已经尝试过仅使用$FILE,但它没有起作用。为了澄清,一个命令如何能够在命令行中工作,而在UI中却无法工作? - Juvanis
为了测试一下,使用 git / log -1 $REPO/$FILE 是否更好? - VonC
你在那个对话框中选择了“显示完整输出”选项吗? - VonC
显示剩余3条评论

0

macOS - 自定义操作:

要运行的脚本:/bin/bash

参数:

cd $REPO && git stash && git pull && git stash pop

cd $REPO && git stash && git pull --rebase && git stash pop


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