Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
github
hub
提交
339efcd6
H
hub
项目概览
github
/
hub
11 个月 前同步成功
通知
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,发现更多精彩内容 >>
未验证
提交
339efcd6
编写于
12月 18, 2018
作者:
M
Mislav Marohnić
提交者:
GitHub
12月 18, 2018
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #1970 from github/pr-merged-info
Add more information about merged PRs in `hub pr list`
上级
d89b5c6f
da08d7ee
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
111 addition
and
23 deletion
+111
-23
commands/issue.go
commands/issue.go
+38
-10
commands/pr.go
commands/pr.go
+29
-12
features/pr-list.feature
features/pr-list.feature
+41
-0
github/client.go
github/client.go
+3
-1
未找到文件。
commands/issue.go
浏览文件 @
339efcd6
...
...
@@ -332,15 +332,6 @@ func formatIssuePlaceholders(issue github.Issue, colorize bool) map[string]strin
assignees
=
append
(
assignees
,
assignee
.
Login
)
}
var
requestedReviewers
[]
string
for
_
,
requestedReviewer
:=
range
issue
.
RequestedReviewers
{
requestedReviewers
=
append
(
requestedReviewers
,
requestedReviewer
.
Login
)
}
for
_
,
requestedTeam
:=
range
issue
.
RequestedTeams
{
teamSlug
:=
fmt
.
Sprintf
(
"%s/%s"
,
issue
.
Base
.
Repo
.
Owner
.
Login
,
requestedTeam
.
Slug
)
requestedReviewers
=
append
(
requestedReviewers
,
teamSlug
)
}
var
milestoneNumber
,
milestoneTitle
string
if
issue
.
Milestone
!=
nil
{
milestoneNumber
=
fmt
.
Sprintf
(
"%d"
,
issue
.
Milestone
.
Number
)
...
...
@@ -380,7 +371,6 @@ func formatIssuePlaceholders(issue github.Issue, colorize bool) map[string]strin
"b"
:
issue
.
Body
,
"au"
:
issue
.
User
.
Login
,
"as"
:
strings
.
Join
(
assignees
,
", "
),
"rs"
:
strings
.
Join
(
requestedReviewers
,
", "
),
"Mn"
:
milestoneNumber
,
"Mt"
:
milestoneTitle
,
"NC"
:
numComments
,
...
...
@@ -396,6 +386,44 @@ func formatIssuePlaceholders(issue github.Issue, colorize bool) map[string]strin
}
}
func
formatPullRequestPlaceholders
(
pr
github
.
PullRequest
)
map
[
string
]
string
{
base
:=
pr
.
Base
.
Ref
head
:=
pr
.
Head
.
Label
if
pr
.
IsSameRepo
()
{
head
=
pr
.
Head
.
Ref
}
var
requestedReviewers
[]
string
for
_
,
requestedReviewer
:=
range
pr
.
RequestedReviewers
{
requestedReviewers
=
append
(
requestedReviewers
,
requestedReviewer
.
Login
)
}
for
_
,
requestedTeam
:=
range
pr
.
RequestedTeams
{
teamSlug
:=
fmt
.
Sprintf
(
"%s/%s"
,
pr
.
Base
.
Repo
.
Owner
.
Login
,
requestedTeam
.
Slug
)
requestedReviewers
=
append
(
requestedReviewers
,
teamSlug
)
}
var
mergedDate
,
mergedAtISO8601
,
mergedAtUnix
,
mergedAtRelative
string
if
!
pr
.
MergedAt
.
IsZero
()
{
mergedDate
=
pr
.
MergedAt
.
Format
(
"02 Jan 2006"
)
mergedAtISO8601
=
pr
.
MergedAt
.
Format
(
time
.
RFC3339
)
mergedAtUnix
=
fmt
.
Sprintf
(
"%d"
,
pr
.
MergedAt
.
Unix
())
mergedAtRelative
=
utils
.
TimeAgo
(
pr
.
MergedAt
)
}
return
map
[
string
]
string
{
"B"
:
base
,
"H"
:
head
,
"sB"
:
pr
.
Base
.
Sha
,
"sH"
:
pr
.
Head
.
Sha
,
"sm"
:
pr
.
MergeCommitSha
,
"rs"
:
strings
.
Join
(
requestedReviewers
,
", "
),
"mD"
:
mergedDate
,
"mI"
:
mergedAtISO8601
,
"mt"
:
mergedAtUnix
,
"mr"
:
mergedAtRelative
,
}
}
func
formatIssue
(
issue
github
.
Issue
,
format
string
,
colorize
bool
)
string
{
placeholders
:=
formatIssuePlaceholders
(
issue
,
colorize
)
return
ui
.
Expand
(
format
,
placeholders
,
colorize
)
...
...
commands/pr.go
浏览文件 @
339efcd6
...
...
@@ -31,7 +31,8 @@ pr checkout <PR-NUMBER> [<BRANCH>]
## Options:
-s, --state <STATE>
Filter pull requests by <STATE> (default: "open").
Filter pull requests by <STATE>. Supported values are: "open" (default),
"closed", "merged", or "all".
-h, --head [<OWNER>:]<BRANCH>
Show pull requests started from the specified head <BRANCH>. The default
...
...
@@ -52,7 +53,7 @@ pr checkout <PR-NUMBER> [<BRANCH>]
%U: the URL of this pull request
%S: state (
i.e. "open",
"closed")
%S: state (
"open" or
"closed")
%sC: set color to red or green, depending on pull request state.
...
...
@@ -66,8 +67,14 @@ pr checkout <PR-NUMBER> [<BRANCH>]
%B: base branch
%sB: base commit SHA
%H: head branch
%sH: head commit SHA
%sm: merge commit SHA
%au: login name of author
%as: comma-separated list of assignees
...
...
@@ -98,6 +105,14 @@ pr checkout <PR-NUMBER> [<BRANCH>]
%uI: updated date, ISO 8601 format
%mD: merged date-only (no time of day)
%mr: merged date, relative
%mt: merged date, UNIX timestamp
%mI: merged date, ISO 8601 format
-o, --sort <SORT_KEY>
Sort displayed issues by "created" (default), "updated", "popularity", or "long-running".
...
...
@@ -188,7 +203,15 @@ func listPulls(cmd *Command, args *Args) {
filters
[
"direction"
]
=
"desc"
}
pulls
,
err
:=
gh
.
FetchPullRequests
(
project
,
filters
,
flagPullRequestLimit
,
nil
)
onlyMerged
:=
false
if
filters
[
"state"
]
==
"merged"
{
filters
[
"state"
]
=
"closed"
onlyMerged
=
true
}
pulls
,
err
:=
gh
.
FetchPullRequests
(
project
,
filters
,
flagPullRequestLimit
,
func
(
pr
*
github
.
PullRequest
)
bool
{
return
!
(
onlyMerged
&&
pr
.
MergedAt
.
IsZero
())
})
utils
.
Check
(
err
)
colorize
:=
ui
.
IsTerminal
(
os
.
Stdout
)
...
...
@@ -229,15 +252,9 @@ func checkoutPr(command *Command, args *Args) {
}
func
formatPullRequest
(
pr
github
.
PullRequest
,
format
string
,
colorize
bool
)
string
{
base
:=
pr
.
Base
.
Ref
head
:=
pr
.
Head
.
Label
if
pr
.
IsSameRepo
()
{
head
=
pr
.
Head
.
Ref
}
placeholders
:=
formatIssuePlaceholders
(
github
.
Issue
(
pr
),
colorize
)
placeholders
[
"B"
]
=
base
placeholders
[
"H"
]
=
head
for
key
,
value
:=
range
formatPullRequestPlaceholders
(
pr
)
{
placeholders
[
key
]
=
value
}
return
ui
.
Expand
(
format
,
placeholders
,
colorize
)
}
features/pr-list.feature
浏览文件 @
339efcd6
...
...
@@ -149,3 +149,44 @@ Feature: hub pr list
"""
When I successfully run `hub pr list -h mislav
:
patch-1`
Then
the output should contain exactly
""
Scenario
:
Filter by merged state
Given the GitHub API server
:
"""
get('/repos/github/hub/pulls') {
assert :state => "closed"
json [
{ :number => 999,
:title => "First",
:state => "closed",
:merged_at => "2018-12-11T10:50:33Z",
:base => { :ref => "master", :label => "github:master" },
:head => { :ref => "patch-1", :label => "octocat:patch-1" },
:user => { :login => "octocat" },
},
{ :number => 102,
:title => "Second",
:state => "closed",
:merged_at => nil,
:base => { :ref => "master", :label => "github:master" },
:head => { :ref => "patch-2", :label => "octocat:patch-2" },
:user => { :login => "octocat" },
},
{ :number => 13,
:title => "Third",
:state => "closed",
:merged_at => "2018-12-11T10:50:33Z",
:base => { :ref => "master", :label => "github:master" },
:head => { :ref => "patch-3", :label => "octocat:patch-3" },
:user => { :login => "octocat" },
},
]
}
"""
When
I successfully run `hub pr list --state=merged`
Then the output should contain exactly
:
"""
#999 First
#13 Third\n
"""
github/client.go
浏览文件 @
339efcd6
...
...
@@ -542,7 +542,8 @@ type Issue struct {
Head
*
PullRequestSpec
`json:"head"`
Base
*
PullRequestSpec
`json:"base"`
MaintainerCanModify
bool
`json:"maintainer_can_modify"`
MergeCommitSha
string
`json:"merge_commit_sha"`
MaintainerCanModify
bool
`json:"maintainer_can_modify"`
Comments
int
`json:"comments"`
Labels
[]
IssueLabel
`json:"labels"`
...
...
@@ -550,6 +551,7 @@ type Issue struct {
Milestone
*
Milestone
`json:"milestone"`
CreatedAt
time
.
Time
`json:"created_at"`
UpdatedAt
time
.
Time
`json:"updated_at"`
MergedAt
time
.
Time
`json:"merged_at"`
RequestedReviewers
[]
User
`json:"requested_reviewers"`
RequestedTeams
[]
Team
`json:"requested_teams"`
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录