zitgit 0.0.2 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Gemfile +0 -1
- data/README.md +11 -2
- data/lib/grit/status.rb +36 -0
- data/lib/zitgit.rb +22 -32
- data/lib/zitgit/helpers/git.rb +37 -0
- data/lib/zitgit/helpers/views.rb +17 -0
- data/lib/zitgit/version.rb +1 -1
- data/public/coffee/application.coffee +139 -24
- data/public/css/app.css +75 -15
- data/public/images/refresh.png +0 -0
- data/public/js/application.js +186 -19
- data/public/scss/app.scss +90 -10
- data/views/commits/detail.slim +14 -4
- data/views/commits/labels.slim +6 -6
- data/views/commits/list.slim +5 -4
- data/views/diffs/image.slim +11 -0
- data/views/diffs/large.slim +12 -0
- data/views/diffs/line.slim +5 -0
- data/views/diffs/list.slim +30 -21
- data/views/index.slim +6 -1
- data/views/layout.slim +1 -0
- data/views/refs/dropdown.slim +2 -1
- data/views/status/added.slim +10 -0
- data/views/status/changed.slim +21 -0
- data/views/status/deleted.slim +9 -0
- data/views/status/list.slim +30 -0
- data/zitgit.gemspec +1 -0
- metadata +30 -3
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -6,17 +6,26 @@ Simple sinatra-based web-interface to view git repository history
|
|
6
6
|
|
7
7
|
Add this line to your application's Gemfile:
|
8
8
|
|
9
|
-
gem "grit", '~> 2.5.0', git: 'https://github.com/gitlabhq/grit.git', ref: '42297cdcee16284d2e4eff23d41377f52fc28b9d'
|
10
9
|
gem 'zitgit'
|
11
10
|
|
11
|
+
or install from GitHub:
|
12
|
+
|
13
|
+
gem 'zitgit', git: 'https://github.com/rsludge/zitgit.git'
|
14
|
+
|
12
15
|
And then execute:
|
13
16
|
|
14
17
|
$ bundle install
|
15
18
|
|
16
|
-
|
19
|
+
Or install with:
|
20
|
+
|
21
|
+
$ gem install zitgit
|
17
22
|
|
18
23
|
## Usage
|
19
24
|
|
20
25
|
Just run `zitgit` from git repo folder and view your repository history on http://localhost:5555
|
21
26
|
|
22
27
|
Or you can run it on different port with `zitgit -p <port_number>`
|
28
|
+
|
29
|
+
## Develop
|
30
|
+
|
31
|
+
Clone repository from GitHub and run `bundle install`. Launch guard to manage assets.
|
data/lib/grit/status.rb
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
module Grit
|
2
|
+
class Status
|
3
|
+
class StatusFile
|
4
|
+
def diff_string
|
5
|
+
old = @base.object(self.sha_repo)
|
6
|
+
new = @base.object(self.sha_index)
|
7
|
+
data_old = old.content.split(/\n/).map! { |e| e.chomp }
|
8
|
+
data_new = new.content.split(/\n/).map! { |e| e.chomp }
|
9
|
+
diffs = Difference::LCS.diff(data_old, data_new)
|
10
|
+
file_length_difference = 0
|
11
|
+
lines = 3
|
12
|
+
oldhunk = hunk = nil
|
13
|
+
output = "--- a/#{self.path}\n+++ b/#{self.path}"
|
14
|
+
format = :unified
|
15
|
+
diffs.each do |piece|
|
16
|
+
begin
|
17
|
+
hunk = Difference::LCS::Hunk.new(data_old, data_new, piece, lines, file_length_difference)
|
18
|
+
file_length_difference = hunk.file_length_difference
|
19
|
+
next unless oldhunk
|
20
|
+
if lines > 0 && hunk.overlaps?(oldhunk)
|
21
|
+
hunk.unshift(oldhunk)
|
22
|
+
else
|
23
|
+
output << oldhunk.diff(format)
|
24
|
+
end
|
25
|
+
ensure
|
26
|
+
oldhunk = hunk
|
27
|
+
output << "\n"
|
28
|
+
end
|
29
|
+
end
|
30
|
+
output << oldhunk.diff(format)
|
31
|
+
output << "\n"
|
32
|
+
output
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
data/lib/zitgit.rb
CHANGED
@@ -1,54 +1,44 @@
|
|
1
|
-
require_relative
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
end
|
1
|
+
require_relative 'zitgit/version'
|
2
|
+
require_relative 'zitgit/helpers/views'
|
3
|
+
require_relative 'zitgit/helpers/git'
|
4
|
+
require_relative 'grit/status'
|
6
5
|
require 'sinatra/base'
|
7
6
|
require 'grit'
|
8
7
|
require 'slim'
|
8
|
+
require 'base64'
|
9
9
|
|
10
10
|
module Zitgit
|
11
11
|
class Zitgit < Sinatra::Base
|
12
12
|
configure do
|
13
13
|
set :root, File.expand_path('..', File.dirname(__FILE__))
|
14
14
|
end
|
15
|
-
|
16
|
-
helpers
|
17
|
-
def heads(commit)
|
18
|
-
repo = Grit::Repo.new('.')
|
19
|
-
repo.heads.select{|head| head.commit.id == commit.id}
|
20
|
-
end
|
21
|
-
|
22
|
-
def remotes(commit)
|
23
|
-
repo = Grit::Repo.new('.')
|
24
|
-
repo.remotes.select{|head| head.commit.id == commit.id}
|
25
|
-
end
|
26
|
-
|
27
|
-
def tags(commit)
|
28
|
-
repo = Grit::Repo.new('.')
|
29
|
-
repo.tags.select{|head| head.commit.id == commit.id}
|
30
|
-
end
|
31
|
-
end
|
15
|
+
helpers ViewsHelpers
|
16
|
+
helpers GitHelpers
|
32
17
|
|
33
18
|
get '/' do
|
34
|
-
repo = Grit::Repo.new('.')
|
35
|
-
@current_branch = Grit::Head.current(repo)
|
36
|
-
@commits = repo.commits(@current_branch.name, 200)
|
19
|
+
@repo = Grit::Repo.new('.')
|
20
|
+
@current_branch = Grit::Head.current(@repo)
|
21
|
+
@commits = @repo.commits(@current_branch.name, 200)
|
37
22
|
@last_commit = @commits[0]
|
38
|
-
@repo_name = File.basename(repo.working_dir)
|
39
|
-
@branches = repo.heads
|
40
|
-
@remotes = repo.remotes
|
41
|
-
@tags = repo.tags
|
42
|
-
@index = repo.index
|
23
|
+
@repo_name = File.basename(@repo.working_dir)
|
24
|
+
@branches = @repo.heads
|
25
|
+
@remotes = @repo.remotes
|
26
|
+
@tags = @repo.tags
|
27
|
+
@index = @repo.index
|
43
28
|
slim :index
|
44
29
|
end
|
45
30
|
|
46
31
|
get "/ref/:ref_name" do |ref_name|
|
47
|
-
repo = Grit::Repo.new('')
|
48
|
-
commits = repo.commits(ref_name, 200)
|
32
|
+
@repo = Grit::Repo.new('.')
|
33
|
+
commits = @repo.commits(ref_name, 200)
|
49
34
|
slim :branch, :locals => { commits: commits }, :layout => false
|
50
35
|
end
|
51
36
|
|
37
|
+
get "/status/" do
|
38
|
+
@repo = Grit::Repo.new('.')
|
39
|
+
slim :'status/list', :locals => {repo: @repo}, :layout => false
|
40
|
+
end
|
41
|
+
|
52
42
|
run! if app_file == $0
|
53
43
|
end
|
54
44
|
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
module GitHelpers
|
2
|
+
def heads(commit)
|
3
|
+
repo = Grit::Repo.new('.')
|
4
|
+
repo.heads.select{|head| head.commit.id == commit.id}
|
5
|
+
end
|
6
|
+
|
7
|
+
def remotes(commit)
|
8
|
+
repo = Grit::Repo.new('.')
|
9
|
+
repo.remotes.select{|head| head.commit.id == commit.id}
|
10
|
+
end
|
11
|
+
|
12
|
+
def tags(commit)
|
13
|
+
repo = Grit::Repo.new('.')
|
14
|
+
repo.tags.select{|head| head.commit.id == commit.id}
|
15
|
+
end
|
16
|
+
|
17
|
+
def merge_commit?(commit)
|
18
|
+
commit.parents.count > 1
|
19
|
+
end
|
20
|
+
|
21
|
+
def large_commit?(commit)
|
22
|
+
commit.diffs.count > 20
|
23
|
+
end
|
24
|
+
|
25
|
+
def large_diff?(diff)
|
26
|
+
diff.diff.lines.count > 200
|
27
|
+
end
|
28
|
+
|
29
|
+
def is_head_ref(ref)
|
30
|
+
ref.name.split('/').index('HEAD')
|
31
|
+
end
|
32
|
+
|
33
|
+
def is_image(diff)
|
34
|
+
image_exts = ['.jpg', '.jpeg', '.png', '.gif']
|
35
|
+
image_exts.include?(File.extname(diff.a_path)) or image_exts.include?(File.extname(diff.b_path))
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module ViewsHelpers
|
2
|
+
def strip_message(text, length)
|
3
|
+
text.length > length ? text[0, length] + '...' : text
|
4
|
+
end
|
5
|
+
|
6
|
+
def summ_line(line)
|
7
|
+
line.match(/@@\s+-([^\s]+)\s+\+([^\s]+)\s+@@/)
|
8
|
+
[Regexp.last_match(1), Regexp.last_match(2)].map{|item|
|
9
|
+
parts = item.split(',')
|
10
|
+
if parts.count == 2
|
11
|
+
parts[0] + '-' + (parts[0].to_i + parts[1].to_i).to_s
|
12
|
+
else
|
13
|
+
item
|
14
|
+
end
|
15
|
+
}.join(' -> ')
|
16
|
+
end
|
17
|
+
end
|
data/lib/zitgit/version.rb
CHANGED
@@ -1,43 +1,157 @@
|
|
1
1
|
ChangeCommit = ($commit)->
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
2
|
+
$target_commit = $commit.clone()
|
3
|
+
$('.commits-table tr.selected').removeClass 'selected'
|
4
|
+
$('.status').removeClass 'selected'
|
5
|
+
$commit.parents('tr').addClass 'selected'
|
6
|
+
$('.show_commit').html $target_commit
|
7
|
+
$('.show_commit .diffs li').niceScroll({
|
8
|
+
cursorcolor: '#ccc',
|
9
|
+
cursorwidth: 14,
|
10
|
+
})
|
11
|
+
UpdateDiffsWidth()
|
12
|
+
|
13
|
+
LoadStatus = ->
|
14
|
+
$('.commits-table tr.selected').removeClass 'selected'
|
15
|
+
$('.status').addClass 'selected'
|
16
|
+
$status_content = $('.status .status_content').clone()
|
17
|
+
$('.show_commit').html $status_content
|
18
|
+
$('.show_commit .diffs li').niceScroll({
|
19
|
+
cursorcolor: '#ccc',
|
20
|
+
cursorwidth: 14,
|
21
|
+
})
|
22
|
+
UpdateDiffsWidth()
|
7
23
|
|
8
24
|
SetHeight = ->
|
9
25
|
commit_offset = $('.show_commit').offset().top
|
10
26
|
$('.show_commit').height(window.innerHeight - commit_offset)
|
11
27
|
history_offset = $('.history').offset().top
|
12
28
|
$('.history').height(window.innerHeight - history_offset)
|
13
|
-
|
14
29
|
|
15
30
|
UpdateDiffsWidth = ->
|
16
|
-
|
17
|
-
|
31
|
+
$('.show_commit .diffs li').each (index)->
|
32
|
+
$(this).find('div').css('width', $(this)[0].scrollWidth)
|
18
33
|
|
19
|
-
$ ->
|
34
|
+
SelectDiff = ($diff) ->
|
35
|
+
$('.show_commit .diff-names .selected').removeClass('selected')
|
36
|
+
$diff.addClass('selected')
|
37
|
+
if $diff.hasClass('all')
|
38
|
+
$('.show_commit .diffs li').removeClass('hidden')
|
39
|
+
else
|
40
|
+
index = $diff.index() - 1
|
41
|
+
$('.show_commit .diffs li').addClass('hidden')
|
42
|
+
$('.show_commit .diffs li:eq('+index+')').removeClass('hidden')
|
43
|
+
|
44
|
+
ChangeBranch = ($link)->
|
45
|
+
timeout = setTimeout ->
|
46
|
+
$('.loader').show()
|
47
|
+
$('.main').hide()
|
48
|
+
, 1500
|
49
|
+
$.get $link.attr('href'), (data)->
|
50
|
+
clearTimeout(timeout)
|
51
|
+
$('.loader').hide()
|
52
|
+
$('.current_branch').text ''
|
53
|
+
if $link.parents('.ref_label').length
|
54
|
+
list_class = $link.parents('.ref_label').attr('data-dropdown-name')
|
55
|
+
$('.dropdown.'+list_class+'').parent('.has-dropdown').find('.current_branch').text $link.text()
|
56
|
+
else
|
57
|
+
$link.parents('.has-dropdown').find('.current_branch').text $link.text()
|
58
|
+
$('.commits-table').replaceWith data
|
59
|
+
$('.main').show()
|
60
|
+
ChangeCommit $('.commits-table tbody tr:first .commit')
|
61
|
+
|
62
|
+
SwitchBranch = ->
|
20
63
|
$('.top-bar .dropdown li a').on 'click', (e) ->
|
21
64
|
e.preventDefault()
|
22
|
-
$
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
65
|
+
ChangeBranch($(this))
|
66
|
+
$('body').on 'click', '.ref_label a', (e) ->
|
67
|
+
e.preventDefault()
|
68
|
+
ChangeBranch($(this))
|
69
|
+
|
70
|
+
RefreshStatus = ->
|
71
|
+
$.get '/status/', (data)->
|
72
|
+
$('.status').replaceWith data
|
73
|
+
|
74
|
+
RefreshContent = ->
|
75
|
+
RefreshStatus()
|
76
|
+
$('.current_branch').each (index)->
|
77
|
+
if $(this).text() != ''
|
78
|
+
branch_name = $(this).text()
|
79
|
+
$(this).parent('.has-dropdown').find('.dropdown li a').each (index)->
|
80
|
+
if $(this).text() == branch_name
|
81
|
+
ChangeBranch($(this))
|
82
|
+
return false
|
83
|
+
return false
|
84
|
+
|
85
|
+
SelectRow = ($row) ->
|
86
|
+
if $row.offset().top < $('.history').offset().top
|
87
|
+
current_scroll = $('.history').scrollTop()
|
88
|
+
$('.history').scrollTop(current_scroll + $row.offset().top - $('.history').offset().top)
|
89
|
+
offset = $row.offset().top - $('.history').offset().top
|
90
|
+
if offset + $row.outerHeight() > $('.history').outerHeight()
|
91
|
+
current_scroll = $('.history').scrollTop()
|
92
|
+
$('.history').scrollTop(current_scroll + offset + $row.outerHeight() - $('.history').outerHeight())
|
93
|
+
ChangeCommit $row.find('.commit')
|
94
|
+
|
95
|
+
TableArrows = ->
|
96
|
+
motions = [38, 40, 33, 34, 35, 36]
|
97
|
+
$('.history').on 'keydown', (e)->
|
98
|
+
if motions.indexOf(e.keyCode) == -1
|
99
|
+
return
|
100
|
+
e.preventDefault()
|
101
|
+
e.stopPropagation()
|
102
|
+
if e.keyCode == 38 #up
|
103
|
+
$next = $('.commits-table tr.selected').prev()
|
104
|
+
else if e.keyCode == 40 #down
|
105
|
+
$next = $('.commits-table tr.selected').next()
|
106
|
+
else if e.keyCode == 33 #page up
|
107
|
+
$next_rows = $('.commits-table tr.selected').prevAll()
|
108
|
+
if $next_rows.length >= 10
|
109
|
+
$next = $next_rows.eq(9)
|
110
|
+
else
|
111
|
+
$next = $next_rows.last()
|
112
|
+
else if e.keyCode == 34 #page down
|
113
|
+
$next_rows = $('.commits-table tr.selected').nextAll()
|
114
|
+
if $next_rows.length >= 10
|
115
|
+
$next = $next_rows.eq(9)
|
116
|
+
else
|
117
|
+
$next = $next_rows.last()
|
118
|
+
else if e.keyCode == 36 #home
|
119
|
+
$next = $('.commits-table tbody tr:first')
|
120
|
+
else if e.keyCode == 35 #end
|
121
|
+
$next = $('.commits-table tr:last')
|
122
|
+
if $next and $next.length > 0
|
123
|
+
SelectRow($next)
|
35
124
|
|
125
|
+
CommitArrows = ->
|
126
|
+
motions = [38, 40]
|
127
|
+
$('.show_commit').on 'keydown', (e)->
|
128
|
+
if motions.indexOf(e.keyCode) == -1
|
129
|
+
return
|
130
|
+
e.preventDefault()
|
131
|
+
e.stopPropagation()
|
132
|
+
if e.keyCode == 38 #up
|
133
|
+
$next = $('.show_commit .diff-names li.selected').prev()
|
134
|
+
else if e.keyCode == 40 #down
|
135
|
+
$next = $('.show_commit .diff-names li.selected').next()
|
136
|
+
if $next and $next.length > 0
|
137
|
+
SelectDiff($next)
|
138
|
+
|
139
|
+
$ ->
|
36
140
|
$('.history').on 'click', '.commits-table tr', (e)->
|
37
141
|
ChangeCommit $(this).find('.commit')
|
142
|
+
$('.history').on 'click', '.status-link', (e)->
|
143
|
+
e.preventDefault()
|
144
|
+
LoadStatus()
|
145
|
+
$('.refresh').on 'click', (e)->
|
146
|
+
e.preventDefault()
|
147
|
+
RefreshContent()
|
148
|
+
$('.show_commit').on 'click', '.diff-names li', (e)->
|
149
|
+
SelectDiff $(this)
|
38
150
|
|
39
|
-
|
151
|
+
SwitchBranch()
|
40
152
|
SetHeight()
|
153
|
+
TableArrows()
|
154
|
+
CommitArrows()
|
41
155
|
|
42
156
|
$(window).resize ->
|
43
157
|
SetHeight()
|
@@ -52,7 +166,8 @@ $ ->
|
|
52
166
|
railalign: 'left',
|
53
167
|
horizrailenabled: false
|
54
168
|
})
|
55
|
-
$('.diffs li').niceScroll({
|
169
|
+
$('.show_commit .diffs li').niceScroll({
|
56
170
|
cursorcolor: '#ccc',
|
57
171
|
cursorwidth: 14,
|
58
172
|
})
|
173
|
+
UpdateDiffsWidth()
|
data/public/css/app.css
CHANGED
@@ -3952,8 +3952,11 @@ a.th {
|
|
3952
3952
|
|
3953
3953
|
.top-bar {
|
3954
3954
|
z-index: 6; }
|
3955
|
+
.top-bar .refresh img {
|
3956
|
+
position: relative;
|
3957
|
+
top: 8px; }
|
3955
3958
|
|
3956
|
-
.
|
3959
|
+
.main .history.columns {
|
3957
3960
|
padding: 0 0 0 15px; }
|
3958
3961
|
|
3959
3962
|
.ref_label {
|
@@ -3962,15 +3965,26 @@ a.th {
|
|
3962
3965
|
border-radius: 12px;
|
3963
3966
|
padding: 2px 4px;
|
3964
3967
|
float: left; }
|
3968
|
+
.ref_label a {
|
3969
|
+
color: #000; }
|
3965
3970
|
|
3966
3971
|
.branch_label {
|
3967
|
-
background:
|
3972
|
+
background: #ffeeee;
|
3973
|
+
border-color: #581313; }
|
3974
|
+
.branch_label a {
|
3975
|
+
color: #581313; }
|
3968
3976
|
|
3969
3977
|
.remote_label {
|
3970
|
-
background:
|
3978
|
+
background: #ffe3e3;
|
3979
|
+
border-color: #b32222; }
|
3980
|
+
.remote_label a {
|
3981
|
+
color: #b32222; }
|
3971
3982
|
|
3972
3983
|
.tag_label {
|
3973
|
-
background: #
|
3984
|
+
background: #ffe6bc;
|
3985
|
+
border-color: #ff9800; }
|
3986
|
+
.tag_label a {
|
3987
|
+
color: #ff9800; }
|
3974
3988
|
|
3975
3989
|
.commits-table {
|
3976
3990
|
table-layout: fixed;
|
@@ -3988,9 +4002,16 @@ a.th {
|
|
3988
4002
|
.commits-table .badges .ref_label {
|
3989
4003
|
font-size: 12px;
|
3990
4004
|
border-radius: 8px;
|
3991
|
-
padding: 0 2px;
|
4005
|
+
padding: 0 2px;
|
4006
|
+
max-width: 134px;
|
4007
|
+
word-wrap: break-word;
|
4008
|
+
text-align: center; }
|
4009
|
+
.commits-table .badges .sha {
|
4010
|
+
font-size: 10px; }
|
3992
4011
|
.commits-table .author {
|
3993
4012
|
width: 180px; }
|
4013
|
+
.commits-table .message div {
|
4014
|
+
max-height: 56px; }
|
3994
4015
|
.commits-table tbody tr.selected {
|
3995
4016
|
background: #c3e2ff; }
|
3996
4017
|
.commits-table tbody tr.selected td {
|
@@ -4009,15 +4030,19 @@ a.th {
|
|
4009
4030
|
padding-top: 14px;
|
4010
4031
|
list-style-type: none; }
|
4011
4032
|
.diff-names li {
|
4012
|
-
margin-bottom: -
|
4033
|
+
margin-bottom: -4px;
|
4034
|
+
padding: 0 4px; }
|
4013
4035
|
.diff-names li .new_file {
|
4014
4036
|
color: green; }
|
4015
4037
|
.diff-names li .deleted {
|
4016
4038
|
color: red; }
|
4039
|
+
.diff-names .selected {
|
4040
|
+
background: #a7d5ff; }
|
4017
4041
|
|
4018
4042
|
.diffs {
|
4019
4043
|
background: #fff;
|
4020
|
-
list-style-type: none;
|
4044
|
+
list-style-type: none;
|
4045
|
+
font-family: monospace; }
|
4021
4046
|
.diffs li {
|
4022
4047
|
border-bottom: solid #ddd 8px;
|
4023
4048
|
overflow-x: scroll; }
|
@@ -4026,20 +4051,26 @@ a.th {
|
|
4026
4051
|
font-size: 14px; }
|
4027
4052
|
.diffs li .diff-first-line {
|
4028
4053
|
font-weight: bold;
|
4029
|
-
background: #
|
4030
|
-
border-bottom: 1px solid
|
4054
|
+
background: #eee;
|
4055
|
+
border-bottom: 1px solid #777; }
|
4031
4056
|
.diffs li .diff-summ-line {
|
4032
|
-
background: #
|
4057
|
+
background: #eee;
|
4033
4058
|
font-weight: bold; }
|
4034
4059
|
.diffs li .diff-added-line {
|
4035
4060
|
color: #096707;
|
4036
4061
|
background: #87f49f; }
|
4062
|
+
.diffs li .diff-added-line .trailing {
|
4063
|
+
background: #036420; }
|
4037
4064
|
.diffs li .diff-removed-line {
|
4038
4065
|
position: relative;
|
4039
4066
|
left: 0;
|
4040
4067
|
right: 0;
|
4041
4068
|
color: #742b2b;
|
4042
4069
|
background: #ffb1cb; }
|
4070
|
+
.diffs li .diff-removed-line .trailing {
|
4071
|
+
background: #c10000; }
|
4072
|
+
.diffs img {
|
4073
|
+
display: block; }
|
4043
4074
|
|
4044
4075
|
.hidden {
|
4045
4076
|
display: none; }
|
@@ -4049,19 +4080,30 @@ a.th {
|
|
4049
4080
|
background: #ddd;
|
4050
4081
|
border-radius: 16px; }
|
4051
4082
|
.show_commit .commit .author_info {
|
4052
|
-
/*width: 50%;*/
|
4053
4083
|
float: left;
|
4054
|
-
font-weight: bold;
|
4084
|
+
font-weight: bold;
|
4085
|
+
clear: left;
|
4086
|
+
color: #eee;
|
4087
|
+
text-shadow: 1px 1px 0px #333, 1px -1px 0px #333, -1px 1px 0px #333, -1px -1px 0px #333; }
|
4055
4088
|
.show_commit .commit .commit_sha {
|
4056
4089
|
margin-bottom: 14px;
|
4057
|
-
|
4058
|
-
|
4059
|
-
.show_commit .commit .
|
4090
|
+
clear: left;
|
4091
|
+
float: left; }
|
4092
|
+
.show_commit .commit .commit_date {
|
4093
|
+
margin-bottom: 14px;
|
4060
4094
|
float: right; }
|
4095
|
+
.show_commit .commit .stats {
|
4096
|
+
float: right;
|
4097
|
+
text-align: right; }
|
4061
4098
|
.show_commit .commit .stats .additions {
|
4062
4099
|
color: green; }
|
4063
4100
|
.show_commit .commit .stats .deletions {
|
4064
4101
|
color: red; }
|
4102
|
+
.show_commit .commit .stats .merge_commit {
|
4103
|
+
font-weight: bold;
|
4104
|
+
position: relative;
|
4105
|
+
top: 8px;
|
4106
|
+
color: #0300ff; }
|
4065
4107
|
|
4066
4108
|
.loader {
|
4067
4109
|
margin: 0 auto;
|
@@ -4069,3 +4111,21 @@ a.th {
|
|
4069
4111
|
height: 64px;
|
4070
4112
|
background: url("/images/loader.gif") no-repeat;
|
4071
4113
|
display: none; }
|
4114
|
+
|
4115
|
+
.status {
|
4116
|
+
margin-bottom: 8px;
|
4117
|
+
padding: 4px 0; }
|
4118
|
+
.status .status_content {
|
4119
|
+
display: none; }
|
4120
|
+
.status .status-link {
|
4121
|
+
display: block;
|
4122
|
+
font-weight: bold;
|
4123
|
+
color: #000;
|
4124
|
+
padding-left: 16px;
|
4125
|
+
font-size: 20px; }
|
4126
|
+
.status.selected {
|
4127
|
+
background: #c3e2ff;
|
4128
|
+
border-bottom: 2px solid #78c3ff;
|
4129
|
+
border-top: 2px solid #78c3ff;
|
4130
|
+
border-left: 1px solid #78c3ff;
|
4131
|
+
border-right: 1px solid #78c3ff; }
|