Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
李少辉-开发者
gitlab-foss
提交
c843722d
G
gitlab-foss
项目概览
李少辉-开发者
/
gitlab-foss
通知
15
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
G
gitlab-foss
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
c843722d
编写于
7月 20, 2015
作者:
J
Jeff Stubler
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add graphs showing commits ahead and behind default to branches page
上级
8f75200d
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
122 addition
and
2 deletion
+122
-2
CHANGELOG
CHANGELOG
+1
-0
app/assets/stylesheets/pages/commits.scss
app/assets/stylesheets/pages/commits.scss
+59
-0
app/controllers/projects/branches_controller.rb
app/controllers/projects/branches_controller.rb
+6
-0
app/models/project.rb
app/models/project.rb
+2
-0
app/models/repository.rb
app/models/repository.rb
+40
-2
app/views/projects/branches/_branch.html.haml
app/views/projects/branches/_branch.html.haml
+14
-0
未找到文件。
CHANGELOG
浏览文件 @
c843722d
...
...
@@ -16,6 +16,7 @@ v 8.2.0 (unreleased)
- Fix: 500 error returned if destroy request without HTTP referer (Kazuki Shimizu)
- Remove deprecated CI events from project settings page
- Use issue editor as cross reference comment author when issue is edited with a new mention.
- Add graphs of commits ahead and behind default branch (Jeff Stubler)
v 8.1.1
- Fix cloning Wiki repositories via HTTP (Stan Hu)
...
...
app/assets/stylesheets/pages/commits.scss
浏览文件 @
c843722d
...
...
@@ -113,3 +113,62 @@ li.commit {
}
}
}
.divergence-graph
{
padding
:
12px
12px
0
0
;
float
:
right
;
.graph-side
{
position
:
relative
;
width
:
80px
;
height
:
22px
;
padding
:
5px
0
13px
;
float
:
left
;
.bar
{
position
:
absolute
;
height
:
4px
;
background-color
:
#ccc
;
}
.bar-behind
{
right
:
0
;
border-radius
:
3px
0
0
3px
;
}
.bar-ahead
{
left
:
0
;
border-radius
:
0
3px
3px
0
;
}
.count
{
padding-top
:
6px
;
padding-bottom
:
0px
;
font-size
:
12px
;
color
:
#333
;
display
:
block
;
}
.count-behind
{
padding-right
:
4px
;
text-align
:
right
;
}
.count-ahead
{
padding-left
:
4px
;
text-align
:
left
;
}
}
.graph-separator
{
position
:
relative
;
width
:
1px
;
height
:
18px
;
margin
:
5px
0
0
;
float
:
left
;
background-color
:
#ccc
;
}
}
app/controllers/projects/branches_controller.rb
浏览文件 @
c843722d
...
...
@@ -9,6 +9,12 @@ class Projects::BranchesController < Projects::ApplicationController
@sort
=
params
[
:sort
]
||
'name'
@branches
=
@repository
.
branches_sorted_by
(
@sort
)
@branches
=
Kaminari
.
paginate_array
(
@branches
).
page
(
params
[
:page
]).
per
(
PER_PAGE
)
@max_commits
=
@branches
.
reduce
(
0
)
do
|
memo
,
branch
|
diverging_commit_counts
=
repository
.
diverging_commit_counts
(
branch
)
[
memo
,
diverging_commit_counts
[
:behind
],
diverging_commit_counts
[
:ahead
]].
max
end
end
def
recent
...
...
app/models/project.rb
浏览文件 @
c843722d
...
...
@@ -714,6 +714,8 @@ class Project < ActiveRecord::Base
end
def
change_head
(
branch
)
# Cached divergent commit counts are based on repository head
repository
.
expire_branch_cache
gitlab_shell
.
update_repository_head
(
self
.
path_with_namespace
,
branch
)
reload_default_branch
end
...
...
app/models/repository.rb
浏览文件 @
c843722d
...
...
@@ -146,10 +146,27 @@ class Repository
def
size
cache
.
fetch
(
:size
)
{
raw_repository
.
size
}
end
def
diverging_commit_counts
(
branch
)
branch_cache_key
=
(
'diverging_commit_counts_'
+
branch
.
name
).
to_sym
cache
.
fetch
(
branch_cache_key
)
do
number_commits_behind
=
commits_between
(
branch
.
name
,
root_ref
).
size
number_commits_ahead
=
commits_between
(
root_ref
,
branch
.
name
).
size
{
behind:
number_commits_behind
,
ahead:
number_commits_ahead
}
end
end
def
cache_keys
%i(size branch_names tag_names commit_count
readme version contribution_guide changelog license)
%i(size branch_names tag_names commit_count readme
contribution_guide changelog license)
end
def
branch_cache_keys
branches
.
map
do
|
branch
|
(
'diverging_commit_counts_'
+
branch
.
name
).
to_sym
end
end
def
build_cache
...
...
@@ -158,12 +175,28 @@ class Repository
send
(
key
)
end
end
branches
.
each
do
|
branch
|
unless
cache
.
exist?
((
'diverging_commit_counts_'
+
branch
.
name
).
to_sym
)
send
(
:diverging_commit_counts
,
branch
)
end
end
end
def
expire_cache
cache_keys
.
each
do
|
key
|
cache
.
expire
(
key
)
end
branches
.
each
do
|
branch
|
cache
.
expire
((
'diverging_commit_counts_'
+
branch
.
name
).
to_sym
)
end
end
def
expire_branch_cache
branches
.
each
do
|
branch
|
cache
.
expire
((
'diverging_commit_counts_'
+
branch
.
name
).
to_sym
)
end
end
def
rebuild_cache
...
...
@@ -171,6 +204,11 @@ class Repository
cache
.
expire
(
key
)
send
(
key
)
end
branches
.
each
do
|
branch
|
cache
.
expire
((
'diverging_commit_counts_'
+
branch
.
name
).
to_sym
)
send
(
:diverging_commit_counts
,
branch
)
end
end
def
lookup_cache
...
...
app/views/projects/branches/_branch.html.haml
浏览文件 @
c843722d
-
commit
=
@repository
.
commit
(
branch
.
target
)
-
bar_graph_width_factor
=
@max_commits
>
0
?
100.0
/
@max_commits
:
0
-
number_commits_behind
=
@repository
.
diverging_commit_counts
(
branch
)[
:behind
]
-
number_commits_ahead
=
@repository
.
diverging_commit_counts
(
branch
)[
:ahead
]
%li
(
class=
"js-branch-#{branch.name}"
)
%div
=
link_to
namespace_project_tree_path
(
@project
.
namespace
,
@project
,
branch
.
name
)
do
...
...
@@ -29,6 +32,17 @@
=
link_to
namespace_project_branch_path
(
@project
.
namespace
,
@project
,
branch
.
name
),
class:
'btn btn-grouped btn-xs btn-remove remove-row'
,
method: :delete
,
data:
{
confirm:
'Removed branch cannot be restored. Are you sure?'
},
remote:
true
do
=
icon
(
"trash-o"
)
-
if
branch
.
name
!=
@repository
.
root_ref
.divergence-graph
{
:title
=>
"#{number_commits_ahead} commits ahead, #{number_commits_behind} commits behind #{@repository.root_ref}"
}
.graph-side
.bar.bar-behind
{
:style
=>
"width: #{number_commits_behind * bar_graph_width_factor}%"
}
%span
.count.count-behind
=
number_commits_behind
.graph-separator
.graph-side
.bar.bar-ahead
{
:style
=>
"width: #{number_commits_ahead * bar_graph_width_factor}%"
}
%span
.count.count-ahead
=
number_commits_ahead
-
if
commit
=
render
'projects/branches/commit'
,
commit:
commit
,
project:
@project
-
else
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录