Atlassian SourceTree 自定义动作对比

Posted

技术标签:

【中文标题】Atlassian SourceTree 自定义动作对比【英文标题】:Atlassian SourceTree custom action contrast 【发布时间】:2014-09-11 19:52:01 【问题描述】:

签出新分支后,我想停止通过 Atlassian SourceTree(版本 1.4.0.0)跟踪 .classpath 等文件。我使用以下详细信息创建了一个自定义操作:

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

我复制了上面错误信息中的完整命令并尝试从命令行执行它:

有趣的是,它奏效了。

有人能告诉我为什么这个自定义操作一开始就不能通过右键单击并从菜单中选择吗?

【问题讨论】:

您使用的是哪个版本的 SourceTree,Windows 还是 OS X? @Cupcake 我使用的是 Windows 版本,1.5.2.0 检查命令返回的退出代码(见***.com/a/334890/254041)。 当我读到争议时,我以为它涉及诉讼:D 【参考方案1】:

检查$FILE 是否代表您选择的文件的完整路径。 它似乎在“Custom actions – more power to you”中以这种方式呈现(2012 年 2 月,自定义操作被引入 Atlassian Source Tree 1.3+)。

如果是这样,使用$FILE 代替C:/Repository/$FILE 应该就足够了。

【讨论】:

我仔细检查了我的路径,$FILE 代表所选文件的相对路径,这就是我添加存储库路径作为前缀的原因。此外,我已经提到自定义操作生成的命令(出现在错误消息中)在我将其复制并粘贴到命令行时有效。这就是奇怪的事情! 好的。你可以用 $ FILE alonz 试试吗,只是为了测试? 在尝试使用repositoryPath+$FILE 之前,我已经单独使用$FILE 进行了测试,但它不起作用。澄清一下,一个命令如何在命令行中运行而不通过 UI 运行? @Juvanis 它说“错误完成,见上文”:有任何错误信息吗? 这就是为什么我在帖子中将错误消息称为“scrimpy”。错误信息就是:)【参考方案2】:

这很有趣。当以前工作的基于 git 的命令现在不再工作时,我只是在我自己的设置中注意到了这个问题。我认为最近版本的 SourceTree 发生了一些变化。我相信问题是现在调用的命令不会像从 SourceTree 打开终端时所期望的那样配置完整的环境设置。 Completed with errors 消息是找不到命令的结果。

对于我自己的设置,我通过使用 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。

【讨论】:

【参考方案3】:

我最近在 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

【讨论】:

【参考方案4】:

macOS - 自定义操作:

要运行的脚本:/bin/bash

参数:

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

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

【讨论】:

以上是关于Atlassian SourceTree 自定义动作对比的主要内容,如果未能解决你的问题,请参考以下文章

SourceTree跳过Atlassian账号,免登陆,跳过初始设置

转-SourceTree注册atlassian账号SIGUP按钮灰色无法注册的问题

SourceTree 免登录跳过初始设置

使用 Atlassian Sourcetree,是不是可以在执行拉取之前查看将从远程存储库中拉取哪些更改?

修改sourcetree默认登录账号和密码+跳过注册方法

sourcetree免注册直接进入