Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
github
hub
提交
11b467bd
H
hub
项目概览
github
/
hub
10 个月 前同步成功
通知
3
Star
22523
Fork
2406
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
H
hub
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
未验证
提交
11b467bd
编写于
10月 08, 2019
作者:
M
Mislav Marohnić
提交者:
GitHub
10月 08, 2019
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #2297 from tomlazar/show-format
implement format for `pr show` Fixes #2288
上级
51a25659
2158b17a
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
95 addition
and
11 deletion
+95
-11
commands/pr.go
commands/pr.go
+30
-11
features/pr-show.feature
features/pr-show.feature
+65
-0
未找到文件。
commands/pr.go
浏览文件 @
11b467bd
...
...
@@ -17,8 +17,8 @@ var (
Usage
:
`
pr list [-s <STATE>] [-h <HEAD>] [-b <BASE>] [-o <SORT_KEY> [-^]] [-f <FORMAT>] [-L <LIMIT>]
pr checkout <PR-NUMBER> [<BRANCH>]
pr show [-uc] [-h <HEAD>]
pr show [-uc] <PR-NUMBER>
pr show [-uc] [-
f <FORMAT>] [-
h <HEAD>]
pr show [-uc]
[-f <FORMAT>]
<PR-NUMBER>
`
,
Long
:
`Manage GitHub Pull Requests for the current repository.
...
...
@@ -31,7 +31,10 @@ pr show [-uc] <PR-NUMBER>
Check out the head of a pull request in a new branch.
* _show_:
Open a pull request page in a web browser.
Open a pull request page in a web browser. When no <PR-NUMBER> is
specified, <HEAD> is used to look up open pull requests and defaults to
the current branch name. With '--format', print information about the
pull request instead of opening it.
## Options:
...
...
@@ -166,6 +169,8 @@ hub-issue(1), hub-pull-request(1), hub(1)
-h, --head HEAD
-u, --url
-c, --copy
-f, --format FORMAT
--color
`
,
}
)
...
...
@@ -281,31 +286,45 @@ func showPr(command *Command, args *Args) {
baseProject
,
err
:=
localRepo
.
MainProject
()
utils
.
Check
(
err
)
host
,
err
:=
github
.
CurrentConfig
()
.
PromptForHost
(
baseProject
.
Host
)
utils
.
Check
(
err
)
gh
:=
github
.
NewClientWithHost
(
host
)
words
:=
args
.
Words
()
openUrl
:=
""
prNumber
:=
0
var
pr
*
github
.
PullRequest
if
len
(
words
)
>
0
{
if
prNumber
,
err
:
=
strconv
.
Atoi
(
words
[
0
]);
err
==
nil
{
if
prNumber
,
err
=
strconv
.
Atoi
(
words
[
0
]);
err
==
nil
{
openUrl
=
baseProject
.
WebURL
(
""
,
""
,
fmt
.
Sprintf
(
"pull/%d"
,
prNumber
))
}
else
{
utils
.
Check
(
fmt
.
Errorf
(
"invalid pull request number: '%s'"
,
words
[
0
]))
}
}
else
{
pr
,
err
:=
findCurrentPullRequest
(
localRepo
,
baseProject
,
args
.
Flag
.
Value
(
"--head"
))
pr
,
err
=
findCurrentPullRequest
(
localRepo
,
gh
,
baseProject
,
args
.
Flag
.
Value
(
"--head"
))
utils
.
Check
(
err
)
openUrl
=
pr
.
HtmlUrl
}
args
.
NoForward
()
if
format
:=
args
.
Flag
.
Value
(
"--format"
);
format
!=
""
{
if
pr
==
nil
{
pr
,
err
=
gh
.
PullRequest
(
baseProject
,
strconv
.
Itoa
(
prNumber
))
utils
.
Check
(
err
)
}
colorize
:=
colorizeOutput
(
args
.
Flag
.
HasReceived
(
"--color"
),
args
.
Flag
.
Value
(
"--color"
))
ui
.
Println
(
formatPullRequest
(
*
pr
,
format
,
colorize
))
return
}
printUrl
:=
args
.
Flag
.
Bool
(
"--url"
)
copyUrl
:=
args
.
Flag
.
Bool
(
"--copy"
)
printBrowseOrCopy
(
args
,
openUrl
,
!
printUrl
&&
!
copyUrl
,
copyUrl
)
}
func
findCurrentPullRequest
(
localRepo
*
github
.
GitHubRepo
,
baseProject
*
github
.
Project
,
headArg
string
)
(
*
github
.
PullRequest
,
error
)
{
host
,
err
:=
github
.
CurrentConfig
()
.
PromptForHost
(
baseProject
.
Host
)
utils
.
Check
(
err
)
gh
:=
github
.
NewClientWithHost
(
host
)
func
findCurrentPullRequest
(
localRepo
*
github
.
GitHubRepo
,
gh
*
github
.
Client
,
baseProject
*
github
.
Project
,
headArg
string
)
(
*
github
.
PullRequest
,
error
)
{
filterParams
:=
map
[
string
]
interface
{}{
"state"
:
"open"
,
}
...
...
@@ -321,7 +340,7 @@ func findCurrentPullRequest(localRepo *github.GitHubRepo, baseProject *github.Pr
utils
.
Check
(
err
)
if
headBranch
,
headProject
,
err
:=
findPushTarget
(
currentBranch
);
err
==
nil
{
headWithOwner
=
fmt
.
Sprintf
(
"%s:%s"
,
headProject
.
Owner
,
headBranch
.
ShortName
())
}
else
if
headProject
,
err
:=
deducePushTarget
(
currentBranch
,
h
ost
.
User
);
err
==
nil
{
}
else
if
headProject
,
err
:=
deducePushTarget
(
currentBranch
,
gh
.
H
ost
.
User
);
err
==
nil
{
headWithOwner
=
fmt
.
Sprintf
(
"%s:%s"
,
headProject
.
Owner
,
currentBranch
.
ShortName
())
}
else
{
headWithOwner
=
fmt
.
Sprintf
(
"%s:%s"
,
baseProject
.
Owner
,
currentBranch
.
ShortName
())
...
...
features/pr-show.feature
浏览文件 @
11b467bd
...
...
@@ -35,6 +35,41 @@ Feature: hub pr show
And the output should contain exactly
:
"""
https://github.com/ashemesh/hub/pull/102\n
"""
Scenario
:
Format Current branch output URL
Given
I am on the
"topic"
branch
Given the GitHub API server
:
"""
get('/repos/ashemesh/hub/pulls'){
assert :state => "open",
:head => "ashemesh:topic"
json [{
:number => 102,
:state => "open",
:base => {
:ref => "master",
:label => "github:master",
:repo => { :owner => { :login => "github" } }
},
:head => { :ref => "patch-1", :label => "octocat:patch-1" },
:user => { :login => "octocat" },
:requested_reviewers => [
{ :login => "rey" },
],
:requested_teams => [
{ :slug => "troopers" },
{ :slug => "cantina-band" },
],
:html_url => "https://github.com/ashemesh/hub/pull/102",
}]
}
"""
When
I successfully run `hub pr show -f
"%sC%>(8)%i %rs%n"
`
Then "open https
:
//github.com/ashemesh/hub/pull/102"
should
not
be
run
And the output should contain exactly
:
"""
#102 rey, github/troopers, github/cantina-band\n
"""
Scenario
:
Current branch in fork
...
...
@@ -146,6 +181,36 @@ Feature: hub pr show
When
I successfully run `hub pr show 102`
Then "open https
:
//github.com/ashemesh/hub/pull/102"
should
be
run
Scenario
:
Format pull request by number
Given the GitHub API server
:
"""
get('/repos/ashemesh/hub/pulls/102') {
json :number => 102,
:title => "First",
:state => "open",
:base => {
:ref => "master",
:label => "github:master",
:repo => { :owner => { :login => "github" } }
},
:head => { :ref => "patch-1", :label => "octocat:patch-1" },
:user => { :login => "octocat" },
:requested_reviewers => [
{ :login => "rey" },
],
:requested_teams => [
{ :slug => "troopers" },
{ :slug => "cantina-band" },
]
}
"""
When
I successfully run `hub pr show 102 -f
"%sC%>(8)%i %rs%n"
`
Then "open https
:
//github.com/ashemesh/hub/pull/102"
should
not
be
run
And the output should contain exactly
:
"""
#102 rey, github/troopers, github/cantina-band\n
"""
Scenario
:
Show pull request by invalid number
When
I run `hub pr show XYZ`
Then
the exit status should be 1
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录