如何使用 GitHub hub cli 工具创建拉取请求描述?

How do you create a pull request description with the GitHub hub cli tool?

我正在这样做:

pull_request() {
  local url=""
  local title=""
  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)

还有一些 single-line 的标题。相反,标题是这样说的:

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

当我运行:

pull_request "...url" "test"

如何使用 hub 工具设置描述?

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

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

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

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

#!/bin/bash

pull_request() {
  local url=""
  local title=""
  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)