sublime merge 上传Gerrit 使用自定义命令和菜单

本文介绍了如何通过SublimeMerge的自定义命令功能解决在Gerrit中push文件的问题。通过创建.sublime-commands文件,定义自定义Git命令,可以实现动态选择分支进行push。虽然无法直接拼接动态的refs/for/部分,但可以通过选择器让用户手动选择分支。此外,还展示了如何添加自定义菜单到SublimeMerge的主菜单和子菜单中,以方便快速访问这些自定义命令。
摘要由CSDN通过智能技术生成

使用sublime merge在Gerrit下时push 文件需要使用 push origin HEAD:refs/for/master,所以造成了无法push,因此在官方文档中发现是可以进行自定义命令的

官方文档说明(Customization部分)

此部分有三个小类翻译过来就是

  • 键绑定
  • 命令面板
  • 自定义命令

需要的功能是能输入我需要的命令,我想应该是自定义命令

命令面板

Sublime Merge命令面板中可用的命令是由以 .sublime-commands.结尾的文件定义的。命令文件使用JSON,其顶层结构是一个数组。每个命令都是一个JSON对象。
例子
下面是.sublime-commands文件格式的示例。

[
    {
        "caption": "View: Toggle Side Bar",
        "command": "toggle_side_bar"
    },
    {
        "caption": "Checkout Branch…",
        "command": "checkout_branch",
    },
    {
        "caption": "Checkout Remote Branch…",
        "command": "checkout_branch",
        "args": { "local_refs": false, "remote_refs": true }
    },
]

条目
每个命令面板条目都需要两个keys,“caption”和“command”。要向命令传递args,可以指定“args”键。
“caption”值必须是一个字符串,并指定要在命令面板中显示的文本。“command”值也必须是一个字符串,并指定要执行的命令的名称。
用于查看所选提交的树的条目

{
    "caption": "View Tree",
    "command": "view_tree"
}

args值必须是一个对象,每个键都是要传递给命令的arg的名称。
推送当前分支的条目,但提示用户选择选项

{
    "caption": "Push...",
    "command": "push",
    "args": {"prompt": true}
}

用户条目
用户可以通过创建一个名为Default.sublime-commands他们的Packages/User/directory
例如,下面的代码将创建一个条目来清理当前repo。

[
    {
        "caption": "Cleanup Repo",
        "command": "git",
        "args": {"argv": ["gc"]}
    }
]

自定义命令

在阅读本节之前,请先阅读命令面板文档,了解如何向命令面板添加自定义条目,就是上面说的。
Sublime Merge是为定制而设计的。您可以轻松地将自己的定制Git命令添加到菜单中,并使用定制选择器创建更复杂的命令。

基础例子
下面是一个运行git rebase -i master的基本自定义git命令的示例。

{
    "caption": "Interactive rebase onto master",
    "command": "git",
    "args": {"argv": ["rebase", "-i", "master"]}
}

你可以看到参数是在"argv"数组中指定的,每个参数用逗号分隔。

使用选择器
上面所示示例的限制在于master是写死的。如果我们想要选择一个要基于别的分支呢?
这就是选择器派上用场的地方。选择器允许我们在运行时选择一个引用,而不是写死的固定一个值。
可用的选择器
Sublime Merge支持以下选择器,可以与git命令一起使用:

$select_branch
允许用户选择分支(本地或远程)
$select_local_branch
允许用户选择本地分支
$select_remote_branch
允许用户选择远程分支
$select_commit
允许用户选择提交(以提交hash的形式)
$select_tag
允许用户选择一个tag
$select_stash
允许用户选择隐藏(以隐藏索引的形式)
$text
允许用户提供任意文本

如果我们想要更新前面的例子,我们可以执行以下操作:

{
    "caption": "Interactive rebase…",
    "command": "git",
    "args": {"argv": ["rebase", "-i", "$select_branch"]}
}

现在,将提示用户选择一个要重新基于的分支。

部分总结

可以用了,但是,假如我想使用

{
    "caption": "push test",
    "command": "git",
    "args": {"argv": ["push", "origin", "HEAD:refs/for/$select_branch"]}//这里文本不可拼接
}
{
    "caption": "push test",
    "command": "git",
    "args": {"argv": ["push", "$select_branch", "$text"]}//这样就可以
}
//上面则变成了  git push branch “xxxxx”

这样的话,命令行还是能用tab补全,这里就只能手敲了
在软件中按 CTRL + P输入 caption 中的文本就可以使用自己自定义的命令了。
注意,这里的 $text 是带双引号的,这个可以用在commit信息之类的,但对于Gerrit的**refs/for/**问题依然是不能动态使用的,看来只能写死到里面了,好像还没有终端敲命令好用。

使用自定义菜单

使用这种格式的 .sublime-menu 文件.

[
    {
        "caption": "File",
        "mnemonic": "F",
        "id": "file",
        "children":
        [
            { "command": "new_window", "caption": "New Window" },
            { "command": "close_window", "caption": "Close Window" },
            { "caption": "-", "id": "exit" },
            { "command": "exit", "caption": "Exit", "mnemonic": "x", "platform": "Windows" },
            { "command": "exit", "caption": "Quit", "mnemonic": "Q", "platform": "Linux" },
        ]
    }
]

格式说明
每个菜单项都是一个带有一个或多个键的JSON对象。支持的键列表包括:

"caption"
菜单显示的文本
"mnemonic"
用作按下以激活条目的键的字符。仅适用于WindowsLinux系统。必须与“标题”中字符的大小写匹配。就是快捷键,比如文中的F,打开列表后按F按键直达菜单
"command"
激活条目时要执行的命令的字符串
"args"
要发送给命令的args的JSON对象
"children"
用于从中创建子菜单的条目的JSON数组,就是子菜单的意思
"id"
菜单项的唯一字符串。用于带有“子”的菜单项,以允许添加额外的子项。
"platform"
其中一个字符串:"OSX""!OSX""Windows", "!Windows”、“Linux”或“!Linux”。控制在什么平台上显示条目。每个菜单条目至少需要“标题”键作为非功能性条目,或者“命令”键作为执行操作的条目。

可用菜单和变量
Sublime Merge有14个菜单可以定制。菜单有上下文变量,可以在“标题”和“args”字段中使用。
可用变量
以下上下文变量可在所有菜单中使用:

$working_dir
文件夹路径
$git_dir
git 文件夹, i.e. .git/
$commit
所提交的全hash
$short_commit
所提交的短hash
$head
分支名字或提交头HEAD的hash
$head_ref
分支名字或HEAD, 当处于分离头部状态时

可用的菜单

Main.sublime-menu
应用程序的主菜单
Action.sublime-menu
菜单…在工具栏中“搜索”右边的按钮
Advanced Commit.sublime-menu
提交按钮右侧向下箭头按钮的菜单
Branch Section.sublime-menu
位置选项卡中的分支标题的上下文菜单
Branch Folder.sublime-menu
“位置”选项卡中的分支文件夹的“上下文”菜单

非常多就不全部列举了,具体可以到官网参考。
添加子菜单
使用条目的“id”键,可以向子菜单添加条目。添加子菜单项时,只指定父菜单项的“id”和“children”键,并将“children”的值设置为附加到子菜单的条目数组。
例如,要在Repository菜单中添加一个运行git gc的条目,创建如下的条目:

[
    {
        "id": "repository",
        "children":
        [
            {
                "caption": "Cleanup Repo",
                "command": "git",
                "args": {"argv": ["gc"]}
            }
        ]
    }
]

要查找条目的“id”,请参阅文件Main。Default.sublime-package。有关在哪里查找包和查看内容的信息,请参阅Packages文档

实例
添加文件 Packages/User/Branch.sublime-menu

[
    {
        "caption": "推送HEAD到远程分支...",
        "command": "git",
        "args": {
            "argv": ["push", "--progress", "origin", "HEAD:refs/for/$branch"]
        }
    },

    {
        "caption": "推送HEAD到Gerrit分支",
        "children":
        [
            {
                "caption": "origin",
                "command": "git",
                "args": {
                    "argv": ["push", "--progress", "origin", "HEAD:refs/for/$branch"]
                }
            },
            {
                "caption": "origin2",
                "command": "git",
                "args": {
                    "argv": ["push", "--progress", "origin2", "HEAD:refs/for/$branch"]
                }
            }
        ]
    },
]

在这里插入图片描述
在提交记录中鼠标邮件就看见新添加的两个菜单,到此解决了我的问题。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值