首页 > 解决方案 > 如何使用 GitHub hub cli 工具创建拉取请求描述?

问题描述

我正在这样做:

pull_request() {
  local url="$1"
  local title="$2"
  local message=$(cat <<-END
$title\n
\n
- [Story]($url)
  END
  )
  echo $message
  local pr_url=$(hub pull-request -m "$message")
  open $pr_url
}

我希望这在描述中:

- [Story](...url)

并且标题是一些单行的东西。相反,标题是:

test\n \n - [Story](...url) END

当我运行时:

pull_request "...url" "test"

如何使用集线器工具设置描述?

标签: githubcommand-line-interfacegithub-hub

解决方案


由于您没有$messageecho -call 中引用,因此输出显示在一行上。用于echo "$message"保留换行符。没有必要使用,因为使用Heredoc\n时直接存储换行符。实际上,它们被视为普通文本。

根据文档“消息中第一个空行之前的文本被视为拉取请求标题,其余部分用作 Markdown 格式的拉取请求描述。” 因为你没有空行(记住\n不被解释为换行符),所以描述永远不会开始,一切都在标题中结束。

要解决此问题,请删除不必要的\n内容并确保标题后有一个空行。另外,我建议使用hub pull-request--browse的参数在浏览器中自动打开 PR。通过包装对集线器的调用,您可能会屏蔽其他输出(如身份验证),并且不会在所有情况下都以变量中的 URL 结束。

这是一个工作脚本 ( make-pr.sh):

#!/bin/bash

pull_request() {
  local url="$1"
  local title="$2"
  local message=$(cat <<-END
$title

- [Story]($url)
END
)
  echo "$message"
  hub pull-request --browse -m "$message"
}

pull_request "$@"

例子:

$ ./make-pr.sh "https://abc.tld" "A nice title"
A nice title

- [Story](https://abc.tld)

截屏


推荐阅读