Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gitlab-ce
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Jérome Perrin
gitlab-ce
Commits
452adb7b
Commit
452adb7b
authored
Feb 12, 2013
by
Dmitriy Zaporozhets
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'hiroponz-easy-to-find-commit-on-network-graph'
parents
d6513b51
622dae76
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
99 additions
and
34 deletions
+99
-34
app/assets/stylesheets/gitlab_bootstrap/common.scss
app/assets/stylesheets/gitlab_bootstrap/common.scss
+1
-0
app/controllers/graph_controller.rb
app/controllers/graph_controller.rb
+11
-1
app/views/graph/_head.html.haml
app/views/graph/_head.html.haml
+16
-0
app/views/graph/show.html.haml
app/views/graph/show.html.haml
+4
-6
lib/extracts_path.rb
lib/extracts_path.rb
+4
-1
lib/gitlab/graph/json_builder.rb
lib/gitlab/graph/json_builder.rb
+48
-20
vendor/assets/javascripts/branch-graph.js
vendor/assets/javascripts/branch-graph.js
+15
-6
No files found.
app/assets/stylesheets/gitlab_bootstrap/common.scss
View file @
452adb7b
...
...
@@ -20,6 +20,7 @@
.hint
{
font-style
:
italic
;
color
:
#999
;
}
.light
{
color
:
#888
}
.tiny
{
font-weight
:
normal
}
.vtop
{
vertical-align
:
top
;
}
/** ALERT MESSAGES **/
...
...
app/controllers/graph_controller.rb
View file @
452adb7b
...
...
@@ -7,10 +7,20 @@ class GraphController < ProjectResourceController
before_filter
:require_non_empty_project
def
show
if
params
.
has_key?
(
:q
)
&&
params
[
:q
].
blank?
redirect_to
project_graph_path
(
@project
,
params
[
:id
])
return
end
if
params
.
has_key?
(
:q
)
@q
=
params
[
:q
]
@commit
=
@project
.
repository
.
commit
(
@q
)
||
@commit
end
respond_to
do
|
format
|
format
.
html
format
.
json
do
graph
=
Gitlab
::
Graph
::
JsonBuilder
.
new
(
project
,
@ref
)
graph
=
Gitlab
::
Graph
::
JsonBuilder
.
new
(
project
,
@ref
,
@commit
)
render
:json
=>
graph
.
to_json
end
end
...
...
app/views/graph/_head.html.haml
0 → 100644
View file @
452adb7b
%h3
.page_title
Project Network Graph
%hr
.clearfix
.pull-left
=
render
partial:
'shared/ref_switcher'
,
locals:
{
destination:
'graph'
,
path:
@path
}
.search.pull-right
=
form_tag
project_graph_path
(
@project
,
params
[
:id
]),
method: :get
do
|
f
|
.control-group
=
label_tag
:search
,
"Looking for commit:"
,
class:
'control-label light'
.controls
=
text_field_tag
:q
,
@q
,
placeholder:
"Input SHA"
,
class:
"search-input xlarge"
=
button_tag
type:
'submit'
,
class:
'btn vtop'
do
%i
.icon-search
app/views/graph/show.html.haml
View file @
452adb7b
%h3
.page_title
Project Network Graph
%br
=
render
partial:
'shared/ref_switcher'
,
locals:
{
destination:
'graph'
,
path:
@path
}
%br
=
render
"head"
.graph_holder
%h4
%small
You can move around the graph by using the arrow keys.
...
...
@@ -12,8 +9,9 @@
var
branch_graph
;
$
(
function
(){
branch_graph
=
new
BranchGraph
(
$
(
"
#holder
"
),
{
url
:
'
#{
project_graph_path
(
@project
,
@ref
,
format: :json
)
}
'
,
url
:
'
#{
project_graph_path
(
@project
,
@ref
,
q:
@q
,
format: :json
)
}
'
,
commit_url
:
'
#{
project_commit_path
(
@project
,
'ae45ca32'
).
gsub
(
"ae45ca32"
,
"%s"
)
}
'
,
ref
:
'
#{
@ref
}
'
ref
:
'
#{
@ref
}
'
,
commit_id
:
'
#{
@commit
.
id
}
'
});
});
lib/extracts_path.rb
View file @
452adb7b
...
...
@@ -117,7 +117,10 @@ module ExtractsPath
@id
=
File
.
join
(
@ref
,
@path
)
@commit
=
CommitDecorator
.
decorate
(
@project
.
repository
.
commit
(
@ref
))
# It is used "@project.repository.commits(@ref, @path, 1, 0)",
# because "@project.repository.commit(@ref)" returns wrong commit when @ref is tag name.
commits
=
@project
.
repository
.
commits
(
@ref
,
@path
,
1
,
0
)
@commit
=
CommitDecorator
.
decorate
(
commits
.
first
)
@tree
=
Tree
.
new
(
@commit
.
tree
,
@ref
,
@path
)
@tree
=
TreeDecorator
.
new
(
@tree
)
...
...
lib/gitlab/graph/json_builder.rb
View file @
452adb7b
...
...
@@ -9,9 +9,10 @@ module Gitlab
@max_count
||=
650
end
def
initialize
project
,
ref
def
initialize
project
,
ref
,
commit
@project
=
project
@ref
=
ref
@commit
=
commit
@repo
=
project
.
repo
@ref_cache
=
{}
...
...
@@ -31,7 +32,8 @@ module Gitlab
# Get commits from repository
#
def
collect_commits
@commits
=
Grit
::
Commit
.
find_all
(
repo
,
nil
,
{
max_count:
self
.
class
.
max_count
}).
dup
@commits
=
Grit
::
Commit
.
find_all
(
repo
,
nil
,
{
topo_order:
true
,
max_count:
self
.
class
.
max_count
,
skip:
to_commit
}).
dup
# Decorate with app/models/commit.rb
@commits
.
map!
{
|
commit
|
::
Commit
.
new
(
commit
)
}
...
...
@@ -49,41 +51,28 @@ module Gitlab
# list of commits. As well as returns date list
# corelated with time set on commits.
#
# @param [Array<Graph::Commit>] comits to index
# @param [Array<Graph::Commit>] com
m
its to index
#
# @return [Array<TimeDate>] list of commit dates corelated with time on commits
def
index_commits
days
,
heads
,
times
=
[],
[],
[]
days
,
times
=
[],
[]
map
=
{}
commits
.
reverse
.
each_with_index
do
|
c
,
i
|
c
.
time
=
i
days
[
i
]
=
c
.
committed_date
map
[
c
.
id
]
=
c
heads
+=
c
.
refs
unless
c
.
refs
.
nil?
times
[
i
]
=
c
end
heads
.
select!
{
|
h
|
h
.
is_a?
Grit
::
Head
or
h
.
is_a?
Grit
::
Remote
}
# sort heads so the master is top and current branches are closer
heads
.
sort!
do
|
a
,
b
|
if
a
.
name
==
@ref
-
1
elsif
b
.
name
==
@ref
1
else
b
.
commit
.
committed_date
<=>
a
.
commit
.
committed_date
end
end
@_reserved
=
{}
days
.
each_index
do
|
i
|
@_reserved
[
i
]
=
[]
end
heads
.
each
do
|
h
|
if
map
.
include?
h
.
commit
.
id
then
place_chain
(
map
[
h
.
commit
.
id
],
map
)
commits_sort_by_ref
.
each
do
|
commit
|
if
map
.
include?
commit
.
id
then
place_chain
(
map
[
commit
.
id
],
map
)
end
end
...
...
@@ -95,6 +84,45 @@ module Gitlab
days
end
# Skip count that the target commit is displayed in center.
def
to_commit
commits
=
Grit
::
Commit
.
find_all
(
repo
,
nil
,
{
topo_order:
true
})
commit_index
=
commits
.
index
do
|
c
|
c
.
id
==
@commit
.
id
end
if
commit_index
&&
(
self
.
class
.
max_count
/
2
<
commit_index
)
then
# get max index that commit is displayed in the center.
commit_index
-
self
.
class
.
max_count
/
2
else
0
end
end
def
commits_sort_by_ref
commits
.
sort
do
|
a
,
b
|
if
include_ref?
(
a
)
-
1
elsif
include_ref?
(
b
)
1
else
b
.
committed_date
<=>
a
.
committed_date
end
end
end
def
include_ref?
(
commit
)
heads
=
commit
.
refs
.
select
do
|
ref
|
ref
.
is_a?
(
Grit
::
Head
)
or
ref
.
is_a?
(
Grit
::
Remote
)
or
ref
.
is_a?
(
Grit
::
Tag
)
end
heads
.
map!
do
|
head
|
head
.
name
end
heads
.
include?
(
@ref
)
end
def
find_free_parent_spaces
(
commit
,
map
,
times
)
spaces
=
[]
...
...
vendor/assets/javascripts/branch-graph.js
View file @
452adb7b
...
...
@@ -161,14 +161,23 @@
if
(
this
.
commits
[
i
].
refs
)
{
this
.
appendLabel
(
x
,
y
,
this
.
commits
[
i
].
refs
);
// The main branch is displayed in the center.
re
=
new
RegExp
(
'
(^| )
'
+
this
.
options
.
ref
+
'
( |$)
'
);
if
(
this
.
commits
[
i
].
refs
.
match
(
re
))
{
scrollLeft
=
x
-
graphWidth
/
2
;
}
}
// mark commit and displayed in the center
if
(
this
.
commits
[
i
].
id
==
this
.
options
.
commit_id
)
{
r
.
path
([
'
M
'
,
x
,
y
-
5
,
'
L
'
,
x
+
4
,
y
-
15
,
'
L
'
,
x
-
4
,
y
-
15
,
'
Z
'
]).
attr
({
"
fill
"
:
"
#000
"
,
"
fill-opacity
"
:
.
7
,
"
stroke
"
:
"
none
"
});
scrollLeft
=
x
-
graphWidth
/
2
;
}
this
.
appendAnchor
(
top
,
this
.
commits
[
i
],
x
,
y
);
}
top
.
toFront
();
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment