Commit 8808c5fa8d0102d1cf0641812a029434b0d6ede8
Exists in
master
and in
4 other branches
Merge branch 'master' into emoji
Showing
54 changed files
with
393 additions
and
458 deletions
Show diff stats
app/assets/javascripts/admin.js
... | ... | @@ -1,11 +0,0 @@ |
1 | -$(document).ready(function(){ | |
2 | - $('input#user_force_random_password').on('change', function(elem) { | |
3 | - var elems = $('#user_password, #user_password_confirmation'); | |
4 | - | |
5 | - if ($(this).attr('checked')) { | |
6 | - elems.val('').attr('disabled', true); | |
7 | - } else { | |
8 | - elems.removeAttr('disabled'); | |
9 | - } | |
10 | - }); | |
11 | -}); |
app/assets/javascripts/application.js
... | ... | @@ -17,134 +17,3 @@ |
17 | 17 | //= require raphael |
18 | 18 | //= require branch-graph |
19 | 19 | //= require_tree . |
20 | - | |
21 | -$(document).ready(function(){ | |
22 | - | |
23 | - $(".one_click_select").live("click", function(){ | |
24 | - $(this).select(); | |
25 | - }); | |
26 | - | |
27 | - $('body').on('ajax:complete, ajax:beforeSend, submit', 'form', function(e){ | |
28 | - var buttons = $('[type="submit"]', this); | |
29 | - switch( e.type ){ | |
30 | - case 'ajax:beforeSend': | |
31 | - case 'submit': | |
32 | - buttons.attr('disabled', 'disabled'); | |
33 | - break; | |
34 | - case ' ajax:complete': | |
35 | - default: | |
36 | - buttons.removeAttr('disabled'); | |
37 | - break; | |
38 | - } | |
39 | - }) | |
40 | - | |
41 | - $(".account-box").mouseenter(showMenu); | |
42 | - $(".account-box").mouseleave(resetMenu); | |
43 | - | |
44 | - $("#projects-list .project").live('click', function(e){ | |
45 | - if(e.target.nodeName != "A" && e.target.nodeName != "INPUT") { | |
46 | - location.href = $(this).attr("url"); | |
47 | - e.stopPropagation(); | |
48 | - return false; | |
49 | - } | |
50 | - }); | |
51 | - | |
52 | - /** | |
53 | - * Focus search field by pressing 's' key | |
54 | - */ | |
55 | - $(document).keypress(function(e) { | |
56 | - if( $(e.target).is(":input") ) return; | |
57 | - switch(e.which) { | |
58 | - case 115: focusSearch(); | |
59 | - e.preventDefault(); | |
60 | - } | |
61 | - }); | |
62 | - | |
63 | - /** | |
64 | - * Commit show suppressed diff | |
65 | - * | |
66 | - */ | |
67 | - $(".supp_diff_link").bind("click", function() { | |
68 | - showDiff(this); | |
69 | - }); | |
70 | - | |
71 | - /** | |
72 | - * Note markdown preview | |
73 | - * | |
74 | - */ | |
75 | - $(document).on('click', '#preview-link', function(e) { | |
76 | - $('#preview-note').text('Loading...'); | |
77 | - | |
78 | - var previewLinkText = ($(this).text() == 'Preview' ? 'Edit' : 'Preview'); | |
79 | - $(this).text(previewLinkText); | |
80 | - | |
81 | - var note = $('#note_note').val(); | |
82 | - if (note.trim().length === 0) { note = 'Nothing to preview'; } | |
83 | - $.post($(this).attr('href'), {note: note}, function(data) { | |
84 | - $('#preview-note').html(data); | |
85 | - }); | |
86 | - | |
87 | - $('#preview-note, #note_note').toggle(); | |
88 | - e.preventDefault(); | |
89 | - }); | |
90 | -}); | |
91 | - | |
92 | -function focusSearch() { | |
93 | - $("#search").focus(); | |
94 | -} | |
95 | - | |
96 | -function updatePage(data){ | |
97 | - $.ajax({type: "GET", url: location.href, data: data, dataType: "script"}); | |
98 | -} | |
99 | - | |
100 | -function showMenu() { | |
101 | - $(this).toggleClass('hover'); | |
102 | -} | |
103 | - | |
104 | -function resetMenu() { | |
105 | - $(this).removeClass("hover"); | |
106 | -} | |
107 | - | |
108 | -function slugify(text) { | |
109 | - return text.replace(/[^-a-zA-Z0-9]+/g, '_').toLowerCase(); | |
110 | -} | |
111 | - | |
112 | -function showDiff(link) { | |
113 | - $(link).next('table').show(); | |
114 | - $(link).remove(); | |
115 | -} | |
116 | - | |
117 | -(function($){ | |
118 | - var _chosen = $.fn.chosen; | |
119 | - $.fn.extend({ | |
120 | - chosen: function(options) { | |
121 | - var default_options = {'search_contains' : 'true'}; | |
122 | - $.extend(default_options, options); | |
123 | - return _chosen.apply(this, [default_options]); | |
124 | - }}) | |
125 | -})(jQuery); | |
126 | - | |
127 | - | |
128 | -function ajaxGet(url) { | |
129 | - $.ajax({type: "GET", url: url, dataType: "script"}); | |
130 | -} | |
131 | - | |
132 | -/** | |
133 | - * Disable button if text field is empty | |
134 | - */ | |
135 | -function disableButtonIfEmtpyField(field_selector, button_selector) { | |
136 | - field = $(field_selector); | |
137 | - if(field.val() == "") { | |
138 | - field.closest("form").find(button_selector).attr("disabled", "disabled").addClass("disabled"); | |
139 | - } | |
140 | - | |
141 | - field.on('keyup', function(){ | |
142 | - var field = $(this); | |
143 | - var closest_submit = field.closest("form").find(button_selector); | |
144 | - if(field.val() == "") { | |
145 | - closest_submit.attr("disabled", "disabled").addClass("disabled"); | |
146 | - } else { | |
147 | - closest_submit.removeAttr("disabled").removeClass("disabled"); | |
148 | - } | |
149 | - }) | |
150 | -} | ... | ... |
app/assets/javascripts/graph.js
... | ... | @@ -1,10 +0,0 @@ |
1 | -function initGraphNav() { | |
2 | - $(".graph svg").css("position", "relative"); | |
3 | - $("body").bind("keyup", function(e) { | |
4 | - if(e.keyCode == 37) { // left | |
5 | - $(".graph svg").animate({ left: "+=400" }); | |
6 | - } else if(e.keyCode == 39) { // right | |
7 | - $(".graph svg").animate({ left: "-=400" }); | |
8 | - } | |
9 | - }); | |
10 | -} |
... | ... | @@ -0,0 +1,10 @@ |
1 | +initGraphNav = -> | |
2 | + $('.graph svg').css 'position', 'relative' | |
3 | + | |
4 | + $('body').bind 'keyup', (e) -> | |
5 | + if e.keyCode is 37 # left | |
6 | + $('.graph svg').animate left: '+=400' | |
7 | + else if e.keyCode is 39 # right | |
8 | + $('.graph svg').animate left: '-=400' | |
9 | + | |
10 | +window.initGraphNav = initGraphNav | ... | ... |
app/assets/javascripts/loader.js
... | ... | @@ -0,0 +1,130 @@ |
1 | +$(document).ready(function(){ | |
2 | + | |
3 | + $(".one_click_select").live("click", function(){ | |
4 | + $(this).select(); | |
5 | + }); | |
6 | + | |
7 | + $('body').on('ajax:complete, ajax:beforeSend, submit', 'form', function(e){ | |
8 | + var buttons = $('[type="submit"]', this); | |
9 | + switch( e.type ){ | |
10 | + case 'ajax:beforeSend': | |
11 | + case 'submit': | |
12 | + buttons.attr('disabled', 'disabled'); | |
13 | + break; | |
14 | + case ' ajax:complete': | |
15 | + default: | |
16 | + buttons.removeAttr('disabled'); | |
17 | + break; | |
18 | + } | |
19 | + }) | |
20 | + | |
21 | + $(".account-box").mouseenter(showMenu); | |
22 | + $(".account-box").mouseleave(resetMenu); | |
23 | + | |
24 | + $("#projects-list .project").live('click', function(e){ | |
25 | + if(e.target.nodeName != "A" && e.target.nodeName != "INPUT") { | |
26 | + location.href = $(this).attr("url"); | |
27 | + e.stopPropagation(); | |
28 | + return false; | |
29 | + } | |
30 | + }); | |
31 | + | |
32 | + /** | |
33 | + * Focus search field by pressing 's' key | |
34 | + */ | |
35 | + $(document).keypress(function(e) { | |
36 | + if( $(e.target).is(":input") ) return; | |
37 | + switch(e.which) { | |
38 | + case 115: focusSearch(); | |
39 | + e.preventDefault(); | |
40 | + } | |
41 | + }); | |
42 | + | |
43 | + /** | |
44 | + * Commit show suppressed diff | |
45 | + * | |
46 | + */ | |
47 | + $(".supp_diff_link").bind("click", function() { | |
48 | + showDiff(this); | |
49 | + }); | |
50 | + | |
51 | + /** | |
52 | + * Note markdown preview | |
53 | + * | |
54 | + */ | |
55 | + $(document).on('click', '#preview-link', function(e) { | |
56 | + $('#preview-note').text('Loading...'); | |
57 | + | |
58 | + var previewLinkText = ($(this).text() == 'Preview' ? 'Edit' : 'Preview'); | |
59 | + $(this).text(previewLinkText); | |
60 | + | |
61 | + var note = $('#note_note').val(); | |
62 | + if (note.trim().length === 0) { note = 'Nothing to preview'; } | |
63 | + $.post($(this).attr('href'), {note: note}, function(data) { | |
64 | + $('#preview-note').html(data); | |
65 | + }); | |
66 | + | |
67 | + $('#preview-note, #note_note').toggle(); | |
68 | + e.preventDefault(); | |
69 | + }); | |
70 | +}); | |
71 | + | |
72 | +function focusSearch() { | |
73 | + $("#search").focus(); | |
74 | +} | |
75 | + | |
76 | +function updatePage(data){ | |
77 | + $.ajax({type: "GET", url: location.href, data: data, dataType: "script"}); | |
78 | +} | |
79 | + | |
80 | +function showMenu() { | |
81 | + $(this).toggleClass('hover'); | |
82 | +} | |
83 | + | |
84 | +function resetMenu() { | |
85 | + $(this).removeClass("hover"); | |
86 | +} | |
87 | + | |
88 | +function slugify(text) { | |
89 | + return text.replace(/[^-a-zA-Z0-9]+/g, '_').toLowerCase(); | |
90 | +} | |
91 | + | |
92 | +function showDiff(link) { | |
93 | + $(link).next('table').show(); | |
94 | + $(link).remove(); | |
95 | +} | |
96 | + | |
97 | +(function($){ | |
98 | + var _chosen = $.fn.chosen; | |
99 | + $.fn.extend({ | |
100 | + chosen: function(options) { | |
101 | + var default_options = {'search_contains' : 'true'}; | |
102 | + $.extend(default_options, options); | |
103 | + return _chosen.apply(this, [default_options]); | |
104 | + }}) | |
105 | +})(jQuery); | |
106 | + | |
107 | + | |
108 | +function ajaxGet(url) { | |
109 | + $.ajax({type: "GET", url: url, dataType: "script"}); | |
110 | +} | |
111 | + | |
112 | +/** | |
113 | + * Disable button if text field is empty | |
114 | + */ | |
115 | +function disableButtonIfEmtpyField(field_selector, button_selector) { | |
116 | + field = $(field_selector); | |
117 | + if(field.val() == "") { | |
118 | + field.closest("form").find(button_selector).attr("disabled", "disabled").addClass("disabled"); | |
119 | + } | |
120 | + | |
121 | + field.on('keyup', function(){ | |
122 | + var field = $(this); | |
123 | + var closest_submit = field.closest("form").find(button_selector); | |
124 | + if(field.val() == "") { | |
125 | + closest_submit.attr("disabled", "disabled").addClass("disabled"); | |
126 | + } else { | |
127 | + closest_submit.removeAttr("disabled").removeClass("disabled"); | |
128 | + } | |
129 | + }) | |
130 | +} | ... | ... |
app/assets/javascripts/projects.js.coffee
1 | 1 | window.Projects = -> |
2 | - $("#project_name").live "change", -> | |
3 | - slug = slugify($(this).val()) | |
4 | - $("#project_code").val(slug) | |
5 | - $("#project_path").val(slug) | |
2 | + $('#project_name').on 'change', -> | |
3 | + slug = slugify $(@).val() | |
4 | + $('#project_code, #project_path').val slug | |
6 | 5 | |
7 | - $(".new_project, .edit_project").live "ajax:before", -> | |
8 | - $(".project_new_holder, .project_edit_holder").hide() | |
9 | - $(".save-project-loader").show() | |
6 | + $('.new_project, .edit_project').on 'ajax:before', -> | |
7 | + $('.project_new_holder, .project_edit_holder').hide() | |
8 | + $('.save-project-loader').show() | |
10 | 9 | |
11 | - $("form #project_default_branch").chosen() | |
12 | - disableButtonIfEmtpyField "#project_name", ".project-submit" | |
10 | + $('form #project_default_branch').chosen() | |
11 | + disableButtonIfEmtpyField '#project_name', '.project-submit' | |
13 | 12 | |
14 | 13 | # Git clone panel switcher |
15 | 14 | $ -> |
16 | - scope = $('.project_clone_holder') | |
15 | + scope = $ '.project_clone_holder' | |
17 | 16 | if scope.length > 0 |
18 | 17 | $('a, button', scope).click -> |
19 | - $('a, button', scope).removeClass('active') | |
20 | - $(this).addClass('active') | |
21 | - $('#project_clone', scope).val($(this).data('clone')) | |
18 | + $('a, button', scope).removeClass 'active' | |
19 | + $(@).addClass 'active' | |
20 | + $('#project_clone', scope).val $(@).data 'clone' | ... | ... |
app/assets/javascripts/snippets.js
app/assets/javascripts/team.js
app/assets/stylesheets/gitlab_bootstrap/files.scss
app/assets/stylesheets/main.scss
1 | 1 | @import "bootstrap"; |
2 | 2 | @import "bootstrap-responsive"; |
3 | 3 | |
4 | -/** GITLAB colors **/ | |
4 | +/** GitLab colors **/ | |
5 | 5 | $link_color:#3A89A3; |
6 | 6 | $blue_link: #2fa0bb; |
7 | 7 | $style_color: #474d57; |
8 | 8 | $hover: #fdf5d9; |
9 | 9 | |
10 | -/** GITLAB Fonts **/ | |
10 | +/** GitLab Fonts **/ | |
11 | 11 | @font-face { font-family: Korolev; src: url('korolev-medium-compressed.otf'); } |
12 | 12 | |
13 | 13 | /** MIXINS **/ |
... | ... | @@ -113,9 +113,9 @@ $hover: #fdf5d9; |
113 | 113 | @import "themes/ui_modern.scss"; |
114 | 114 | |
115 | 115 | /** |
116 | - * Gitlab bootstrap. | |
116 | + * GitLab bootstrap. | |
117 | 117 | * Overrides some styles of twitter bootstrap. |
118 | - * Also give some common classes for gitlab app | |
118 | + * Also give some common classes for GitLab app | |
119 | 119 | */ |
120 | 120 | @import "gitlab_bootstrap/common.scss"; |
121 | 121 | @import "gitlab_bootstrap/typography.scss"; | ... | ... |
app/assets/stylesheets/sections/header.scss
... | ... | @@ -22,7 +22,7 @@ header { |
22 | 22 | * |
23 | 23 | */ |
24 | 24 | .app_logo { |
25 | - width:230px; | |
25 | + width:200px; | |
26 | 26 | float:left; |
27 | 27 | position:relative; |
28 | 28 | top:-5px; |
... | ... | @@ -31,7 +31,7 @@ header { |
31 | 31 | |
32 | 32 | h1 { |
33 | 33 | padding-top: 5px; |
34 | - width:102px; | |
34 | + width:90px; | |
35 | 35 | background: url('logo_dark.png') no-repeat 0px -3px; |
36 | 36 | float:left; |
37 | 37 | margin-left:5px; | ... | ... |
app/assets/stylesheets/sections/nav.scss
... | ... | @@ -2,7 +2,7 @@ |
2 | 2 | * Main Menu of Application |
3 | 3 | * |
4 | 4 | */ |
5 | -ul.main_menu { | |
5 | +ul.main_menu { | |
6 | 6 | border-radius: 4px; |
7 | 7 | margin: auto; |
8 | 8 | margin:30px 0; |
... | ... | @@ -12,7 +12,7 @@ ul.main_menu { |
12 | 12 | position:relative; |
13 | 13 | overflow:hidden; |
14 | 14 | @include shade; |
15 | - .count { | |
15 | + .count { | |
16 | 16 | position: relative; |
17 | 17 | top: -1px; |
18 | 18 | display: inline-block; |
... | ... | @@ -29,12 +29,12 @@ ul.main_menu { |
29 | 29 | border-radius: 8px; |
30 | 30 | -moz-border-radius: 8px; |
31 | 31 | } |
32 | - .label { | |
32 | + .label { | |
33 | 33 | background:$hover; |
34 | 34 | text-shadow:none; |
35 | 35 | color:$style_color; |
36 | 36 | } |
37 | - li { | |
37 | + li { | |
38 | 38 | list-style-type: none; |
39 | 39 | margin: 0; |
40 | 40 | display: table-cell; |
... | ... | @@ -43,7 +43,7 @@ ul.main_menu { |
43 | 43 | border-left: 1px solid #EEE; |
44 | 44 | border-bottom:2px solid #CFCFCF; |
45 | 45 | |
46 | - &:first-child{ | |
46 | + &:first-child{ | |
47 | 47 | -webkit-border-top-left-radius: 4px; |
48 | 48 | -webkit-border-bottom-left-radius: 4px; |
49 | 49 | -moz-border-radius-topleft: 4px; |
... | ... | @@ -53,31 +53,31 @@ ul.main_menu { |
53 | 53 | border-left: 0; |
54 | 54 | } |
55 | 55 | |
56 | - &.current { | |
56 | + &.current { | |
57 | 57 | background-color:#D5D5D5; |
58 | - border-bottom: 2px solid $style_color; | |
58 | + border-bottom: 1px solid #AAA; | |
59 | 59 | border-right: 1px solid #BBB; |
60 | 60 | border-left: 1px solid #BBB; |
61 | 61 | border-radius: 0 0 1px 1px; |
62 | - &:first-child{ | |
62 | + &:first-child{ | |
63 | 63 | border-bottom:none; |
64 | 64 | border-left:none; |
65 | 65 | } |
66 | 66 | } |
67 | 67 | |
68 | - &.home { | |
69 | - a { | |
68 | + &.home { | |
69 | + a { | |
70 | 70 | background: url(home_icon.PNG) no-repeat center center; |
71 | 71 | text-indent:-9999px; |
72 | 72 | min-width:20px; |
73 | - img { | |
73 | + img { | |
74 | 74 | position:relative; |
75 | 75 | top:4px; |
76 | 76 | } |
77 | 77 | } |
78 | 78 | } |
79 | 79 | } |
80 | - a { | |
80 | + a { | |
81 | 81 | display: block; |
82 | 82 | text-align: center; |
83 | 83 | font-weight:bold; | ... | ... |
app/controllers/commits_controller.rb
... | ... | @@ -64,19 +64,14 @@ class CommitsController < ApplicationController |
64 | 64 | @commit.to_patch, |
65 | 65 | type: "text/plain", |
66 | 66 | disposition: 'attachment', |
67 | - filename: (@commit.id.to_s + ".patch") | |
67 | + filename: "#{@commit.id.patch}" | |
68 | 68 | ) |
69 | 69 | end |
70 | 70 | |
71 | 71 | protected |
72 | 72 | |
73 | 73 | def load_refs |
74 | - if params[:ref].blank? | |
75 | - @branch = params[:branch].blank? ? nil : params[:branch] | |
76 | - @tag = params[:tag].blank? ? nil : params[:tag] | |
77 | - @ref = @branch || @tag || @project.try(:default_branch) || 'master' | |
78 | - else | |
79 | - @ref = params[:ref] | |
80 | - end | |
74 | + @ref ||= params[:ref].presence || params[:branch].presence || params[:tag].presence | |
75 | + @ref ||= @ref || @project.try(:default_branch) || 'master' | |
81 | 76 | end |
82 | 77 | end | ... | ... |
app/mailers/notify.rb
... | ... | @@ -111,18 +111,18 @@ class Notify < ActionMailer::Base |
111 | 111 | # Examples |
112 | 112 | # |
113 | 113 | # >> subject('Lorem ipsum') |
114 | - # => "gitlab | Lorem ipsum" | |
114 | + # => "GitLab | Lorem ipsum" | |
115 | 115 | # |
116 | 116 | # # Automatically inserts Project name when @project is set |
117 | 117 | # >> @project = Project.last |
118 | 118 | # => #<Project id: 1, name: "Ruby on Rails", path: "ruby_on_rails", ...> |
119 | 119 | # >> subject('Lorem ipsum') |
120 | - # => "gitlab | Lorem ipsum | Ruby on Rails" | |
120 | + # => "GitLab | Lorem ipsum | Ruby on Rails" | |
121 | 121 | # |
122 | 122 | # # Accepts multiple arguments |
123 | 123 | # >> subject('Lorem ipsum', 'Dolor sit amet') |
124 | - # => "gitlab | Lorem ipsum | Dolor sit amet" | |
124 | + # => "GitLab | Lorem ipsum | Dolor sit amet" | |
125 | 125 | def subject(*extra) |
126 | - "gitlab | " << extra.join(' | ') << (@project ? " | #{@project.name}" : "") | |
126 | + "GitLab | " << extra.join(' | ') << (@project ? " | #{@project.name}" : "") | |
127 | 127 | end |
128 | 128 | end | ... | ... |
app/views/errors/gitolite.html.haml
app/views/help/index.html.haml
app/views/help/markdown.html.haml
1 | -%h3.page_title Gitlab Flavored Markdown | |
1 | +%h3.page_title GitLab Flavored Markdown | |
2 | 2 | .back_link |
3 | 3 | = link_to help_path do |
4 | 4 | ← to index |
... | ... | @@ -7,7 +7,7 @@ |
7 | 7 | .row |
8 | 8 | .span8 |
9 | 9 | %p |
10 | - For Gitlab we developed something we call "Gitlab Flavored Markdown" (GFM). | |
10 | + For GitLab we developed something we call "GitLab Flavored Markdown" (GFM). | |
11 | 11 | It extends the standard Markdown in a few significant ways adds some useful functionality. |
12 | 12 | |
13 | 13 | %p You can use GFM in: |
... | ... | @@ -62,7 +62,7 @@ |
62 | 62 | %p becomes |
63 | 63 | = markdown %Q{```ruby\nrequire 'redcarpet'\nmarkdown = Redcarpet.new("Hello World!")\nputs markdown.to_html\n```} |
64 | 64 | |
65 | - %h4 Special Gitlab references | |
65 | + %h4 Special GitLab references | |
66 | 66 | |
67 | 67 | %p |
68 | 68 | GFM recognizes special references. | ... | ... |
app/views/help/ssh.html.haml
... | ... | @@ -5,7 +5,7 @@ |
5 | 5 | %hr |
6 | 6 | |
7 | 7 | %p.slead |
8 | - SSH key allows you to establish a secure connection between your computer and Gitlab | |
8 | + SSH key allows you to establish a secure connection between your computer and GitLab | |
9 | 9 | |
10 | 10 | %p.slead |
11 | 11 | To generate a new SSH key just open your terminal and use code below. |
... | ... | @@ -17,7 +17,7 @@ |
17 | 17 | \# Generating public/private rsa key pair... |
18 | 18 | |
19 | 19 | %p.slead |
20 | - Next just use code below to dump your public key and add to GITLAB SSH Keys | |
20 | + Next just use code below to dump your public key and add to GitLab SSH Keys | |
21 | 21 | |
22 | 22 | %pre.dark |
23 | 23 | cat ~/.ssh/id_rsa.pub | ... | ... |
app/views/help/system_hooks.html.haml
... | ... | @@ -5,7 +5,7 @@ |
5 | 5 | %hr |
6 | 6 | |
7 | 7 | %p.slead |
8 | - Your Gitlab instance can perform HTTP POST request on next event: create_project, delete_project, create_user, delete_user, change_team_member. | |
8 | + Your GitLab instance can perform HTTP POST request on next event: create_project, delete_project, create_user, delete_user, change_team_member. | |
9 | 9 | %br |
10 | 10 | System Hooks can be used for logging or change information in LDAP server. |
11 | 11 | %br | ... | ... |
app/views/help/web_hooks.html.haml
... | ... | @@ -5,11 +5,11 @@ |
5 | 5 | %hr |
6 | 6 | |
7 | 7 | %p.slead |
8 | - Every Gitlab project can trigger a web server whenever the repo is pushed to. | |
8 | + Every GitLab project can trigger a web server whenever the repo is pushed to. | |
9 | 9 | %br |
10 | 10 | Web Hooks can be used to update an external issue tracker, trigger CI builds, update a backup mirror, or even deploy to your production server. |
11 | 11 | %br |
12 | - GITLAB will send POST request with commits information on every push. | |
12 | + GitLab will send POST request with commits information on every push. | |
13 | 13 | %h5 Hooks request example: |
14 | 14 | = render "hooks/data_ex" |
15 | 15 | ... | ... |
app/views/help/workflow.html.haml
app/views/hooks/_data_ex.html.erb
app/views/issues/_form.html.haml
... | ... | @@ -38,7 +38,7 @@ |
38 | 38 | = f.label :description, "Details" |
39 | 39 | .input |
40 | 40 | = f.text_area :description, maxlength: 2000, class: "xxlarge", rows: 14 |
41 | - %p.hint Issues are parsed with #{link_to "Gitlab Flavored Markdown", help_markdown_path, target: '_blank'}. | |
41 | + %p.hint Issues are parsed with #{link_to "GitLab Flavored Markdown", help_markdown_path, target: '_blank'}. | |
42 | 42 | |
43 | 43 | |
44 | 44 | .actions | ... | ... |
app/views/keys/index.html.haml
app/views/layouts/notify.html.haml
... | ... | @@ -2,7 +2,7 @@ |
2 | 2 | %head |
3 | 3 | %meta{content: "text/html; charset=utf-8", "http-equiv" => "Content-Type"} |
4 | 4 | %title |
5 | - gitlabhq | |
5 | + GitLab | |
6 | 6 | :css |
7 | 7 | .header h1 {color: #BBBBBB !important; font: bold 32px Helvetica, Arial, sans-serif; margin: 0; padding: 0; line-height: 40px;} |
8 | 8 | .header p {color: #c6c6c6; font: normal 12px Helvetica, Arial, sans-serif; margin: 0; padding: 0; line-height: 18px;} |
... | ... | @@ -21,7 +21,7 @@ |
21 | 21 | \ |
22 | 22 | %td{align: "left", style: "padding: 18px 0 10px;", width: "580"} |
23 | 23 | %h1{style: "color: #BBBBBB; font: normal 32px Helvetica, Arial, sans-serif; margin: 0; padding: 0; line-height: 40px;"} |
24 | - gitlab | |
24 | + GITLAB | |
25 | 25 | - if @project |
26 | 26 | | #{@project.name} |
27 | 27 | %table{align: "center", bgcolor: "#fff", border: "0", cellpadding: "0", cellspacing: "0", style: "font-family: Helvetica, Arial, sans-serif; background: #fff;", width: "600"} | ... | ... |
app/views/milestones/_form.html.haml
... | ... | @@ -22,7 +22,7 @@ |
22 | 22 | = f.label :description, "Description", class: "control-label" |
23 | 23 | .controls |
24 | 24 | = f.text_area :description, maxlength: 2000, class: "input-xlarge", rows: 10 |
25 | - %p.hint Milestones are parsed with #{link_to "Gitlab Flavored Markdown", help_markdown_path, target: '_blank'}. | |
25 | + %p.hint Milestones are parsed with #{link_to "GitLab Flavored Markdown", help_markdown_path, target: '_blank'}. | |
26 | 26 | .span6 |
27 | 27 | .control-group |
28 | 28 | = f.label :due_date, "Due Date", class: "control-label" | ... | ... |
app/views/notes/_form.html.haml
... | ... | @@ -11,7 +11,7 @@ |
11 | 11 | = f.text_area :note, size: 255, class: 'note-text' |
12 | 12 | #preview-note.preview_note.hide |
13 | 13 | .hint |
14 | - .right Comments are parsed with #{link_to "Gitlab Flavored Markdown", help_markdown_path, target: '_blank'}. | |
14 | + .right Comments are parsed with #{link_to "GitLab Flavored Markdown", help_markdown_path, target: '_blank'}. | |
15 | 15 | .clearfix |
16 | 16 | |
17 | 17 | .row.note_advanced_opts.hide | ... | ... |
app/views/notify/new_user_email.html.haml
... | ... | @@ -6,7 +6,7 @@ |
6 | 6 | %h2{style: "color:#646464; font-weight: bold; margin: 0; padding: 0; line-height: 26px; font-size: 18px; font-family: Helvetica, Arial, sans-serif; "} |
7 | 7 | Hi #{@user['name']}! |
8 | 8 | %p{style: "color:#767676; font-weight: normal; margin: 0; padding: 0; line-height: 20px; font-size: 12px;font-family: Helvetica, Arial, sans-serif; "} |
9 | - Administrator created account for you. Now you are a member of company gitlab application. | |
9 | + Administrator created account for you. Now you are a member of company GitLab application. | |
10 | 10 | %td{style: "font-size: 1px; line-height: 1px;", width: "21"} |
11 | 11 | %tr |
12 | 12 | %td{style: "font-size: 1px; line-height: 1px;", width: "21"} | ... | ... |
app/views/wikis/_form.html.haml
... | ... | @@ -14,7 +14,7 @@ |
14 | 14 | .middle_box_content |
15 | 15 | .input |
16 | 16 | %span.cgray |
17 | - Wiki content is parsed with #{link_to "Gitlab Flavored Markdown", help_markdown_path, target: '_blank'}. | |
17 | + Wiki content is parsed with #{link_to "GitLab Flavored Markdown", help_markdown_path, target: '_blank'}. | |
18 | 18 | To link to a (new) page you can just type |
19 | 19 | %code [Link Title](page-slug) |
20 | 20 | \. | ... | ... |
doc/api/README.md
1 | -# Gitlab API | |
1 | +# GitLab API | |
2 | 2 | |
3 | 3 | All API requests require authentication. You need to pass a `private_token` parameter to authenticate. You can find or reset your private token in your profile. |
4 | 4 | |
... | ... | @@ -10,7 +10,7 @@ If no, or an invalid, `private_token` is provided then an error message will be |
10 | 10 | } |
11 | 11 | ``` |
12 | 12 | |
13 | -API requests should be prefixed with `api` and the API version. The API version is equal to the Gitlab major version number, which is defined in `lib/api.rb`. | |
13 | +API requests should be prefixed with `api` and the API version. The API version is equal to the GitLab major version number, which is defined in `lib/api.rb`. | |
14 | 14 | |
15 | 15 | Example of a valid API request: |
16 | 16 | ... | ... |
doc/installation.md
... | ... | @@ -167,7 +167,7 @@ and ensure you have followed all of the above steps carefully. |
167 | 167 | # Login to MySQL |
168 | 168 | $ mysql -u root -p |
169 | 169 | |
170 | - # Create the gitlabhq production database | |
170 | + # Create the GitLab production database | |
171 | 171 | mysql> CREATE DATABASE IF NOT EXISTS `gitlabhq_production` DEFAULT CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`; |
172 | 172 | |
173 | 173 | # Create the MySQL User change $password to a real password | ... | ... |
features/projects/issues/issues.feature
... | ... | @@ -4,7 +4,7 @@ Feature: Issues |
4 | 4 | And I own project "Shop" |
5 | 5 | And project "Shop" have "Release 0.4" open issue |
6 | 6 | And project "Shop" have "Release 0.3" closed issue |
7 | - And I visit project "Shop" issues page | |
7 | + And I visit project "Shop" issues page | |
8 | 8 | |
9 | 9 | Scenario: I should see open issues |
10 | 10 | Given I should see "Release 0.4" in issues |
... | ... | @@ -36,3 +36,31 @@ Feature: Issues |
36 | 36 | Given I visit issue page "Release 0.4" |
37 | 37 | And I leave a comment like "XML attached" |
38 | 38 | Then I should see comment "XML attached" |
39 | + | |
40 | + @javascript | |
41 | + Scenario: I search issue | |
42 | + Given I fill in issue search with "Release" | |
43 | + Then I should see "Release 0.4" in issues | |
44 | + And I should not see "Release 0.3" in issues | |
45 | + | |
46 | + @javascript | |
47 | + Scenario: I search issue that not exist | |
48 | + Given I fill in issue search with "Bug" | |
49 | + Then I should not see "Release 0.4" in issues | |
50 | + And I should not see "Release 0.3" in issues | |
51 | + | |
52 | + | |
53 | + @javascript | |
54 | + Scenario: I search all issues | |
55 | + Given I click link "All" | |
56 | + And I fill in issue search with "0.3" | |
57 | + Then I should see "Release 0.3" in issues | |
58 | + And I should not see "Release 0.4" in issues | |
59 | + | |
60 | + @javascript | |
61 | + Scenario: I clear search | |
62 | + Given I click link "All" | |
63 | + And I fill in issue search with "Something" | |
64 | + And I fill in issue search with "" | |
65 | + Then I should see "Release 0.4" in issues | |
66 | + And I should see "Release 0.3" in issues | ... | ... |
... | ... | @@ -0,0 +1,21 @@ |
1 | +include LoginHelpers | |
2 | + | |
3 | +Given /^I signin as a user$/ do | |
4 | + login_as :user | |
5 | +end | |
6 | + | |
7 | +When /^I click link "(.*?)"$/ do |link| | |
8 | + click_link link | |
9 | +end | |
10 | + | |
11 | +When /^I click button "(.*?)"$/ do |button| | |
12 | + click_button button | |
13 | +end | |
14 | + | |
15 | +When /^I fill in "(.*?)" with "(.*?)"$/ do |field, value| | |
16 | + fill_in field, :with => value | |
17 | +end | |
18 | + | |
19 | +Given /^show me page$/ do | |
20 | + save_and_open_page | |
21 | +end | ... | ... |
features/step_definitions/dashboard_steps.rb
1 | -Given /^I visit dashboard page$/ do | |
2 | - visit dashboard_path | |
3 | -end | |
4 | - | |
5 | 1 | Then /^I should see "(.*?)" link$/ do |arg1| |
6 | 2 | page.should have_link(arg1) |
7 | 3 | end |
... | ... | @@ -51,10 +47,10 @@ Then /^I click "(.*?)" link$/ do |arg1| |
51 | 47 | end |
52 | 48 | |
53 | 49 | Then /^I see prefilled new Merge Request page$/ do |
54 | - current_path.should == new_project_merge_request_path(@project) | |
55 | - find("#merge_request_source_branch").value.should == "new_design" | |
56 | - find("#merge_request_target_branch").value.should == "master" | |
57 | - find("#merge_request_title").value.should == "New Design" | |
50 | + current_path.should == new_project_merge_request_path(@project) | |
51 | + find("#merge_request_source_branch").value.should == "new_design" | |
52 | + find("#merge_request_target_branch").value.should == "master" | |
53 | + find("#merge_request_title").value.should == "New Design" | |
58 | 54 | end |
59 | 55 | |
60 | 56 | Given /^I visit dashboard search page$/ do |
... | ... | @@ -66,10 +62,6 @@ Given /^I search for "(.*?)"$/ do |arg1| |
66 | 62 | click_button "Search" |
67 | 63 | end |
68 | 64 | |
69 | -Given /^I visit dashboard issues page$/ do | |
70 | - visit dashboard_issues_path | |
71 | -end | |
72 | - | |
73 | 65 | Then /^I should see issues assigned to me$/ do |
74 | 66 | issues = @user.issues |
75 | 67 | issues.each do |issue| |
... | ... | @@ -78,10 +70,6 @@ Then /^I should see issues assigned to me$/ do |
78 | 70 | end |
79 | 71 | end |
80 | 72 | |
81 | -Given /^I visit dashboard merge requests page$/ do | |
82 | - visit dashboard_merge_requests_path | |
83 | -end | |
84 | - | |
85 | 73 | Then /^I should see my merge requests$/ do |
86 | 74 | merge_requests = @user.merge_requests |
87 | 75 | merge_requests.each do |mr| | ... | ... |
features/step_definitions/profile/profile_steps.rb
1 | -Given /^I visit profile page$/ do | |
2 | - visit profile_path | |
3 | -end | |
4 | - | |
5 | 1 | Then /^I should see my profile info$/ do |
6 | 2 | page.should have_content "Profile" |
7 | 3 | page.should have_content @user.name |
8 | 4 | page.should have_content @user.email |
9 | 5 | end |
10 | 6 | |
11 | -Given /^I visit profile password page$/ do | |
12 | - visit profile_password_path | |
13 | -end | |
14 | - | |
15 | 7 | Then /^I change my password$/ do |
16 | 8 | fill_in "user_password", :with => "222333" |
17 | 9 | fill_in "user_password_confirmation", :with => "222333" |
... | ... | @@ -22,10 +14,6 @@ Then /^I should be redirected to sign in page$/ do |
22 | 14 | current_path.should == new_user_session_path |
23 | 15 | end |
24 | 16 | |
25 | -Given /^I visit profile token page$/ do | |
26 | - visit profile_token_path | |
27 | -end | |
28 | - | |
29 | 17 | Then /^I reset my token$/ do |
30 | 18 | @old_token = @user.private_token |
31 | 19 | click_button "Reset" | ... | ... |
features/step_definitions/project/browse_code_steps.rb
1 | -Given /^I visit project source page$/ do | |
2 | - visit tree_project_ref_path(@project, @project.root_ref) | |
3 | -end | |
4 | - | |
5 | 1 | Then /^I should see files from repository$/ do |
6 | 2 | page.should have_content("app") |
7 | 3 | page.should have_content("History") |
8 | 4 | page.should have_content("Gemfile") |
9 | 5 | end |
10 | 6 | |
11 | -Given /^I visit project source page for "(.*?)"$/ do |arg1| | |
12 | - visit tree_project_ref_path(@project, arg1) | |
13 | -end | |
14 | - | |
15 | 7 | Then /^I should see files from repository for "(.*?)"$/ do |arg1| |
16 | 8 | current_path.should == tree_project_ref_path(@project, arg1) |
17 | 9 | page.should have_content("app") |
... | ... | @@ -31,10 +23,6 @@ Given /^I click on raw button$/ do |
31 | 23 | click_link "raw" |
32 | 24 | end |
33 | 25 | |
34 | -Given /^I visit blob file from repo$/ do | |
35 | - visit tree_project_ref_path(@project, ValidCommit::ID, :path => ValidCommit::BLOB_FILE_PATH) | |
36 | -end | |
37 | - | |
38 | 26 | Then /^I should see raw file content$/ do |
39 | 27 | page.source.should == ValidCommit::BLOB_FILE |
40 | 28 | end | ... | ... |
features/step_definitions/project/project_commits_steps.rb
1 | -Given /^I visit project commits page$/ do | |
2 | - visit project_commits_path(@project) | |
3 | -end | |
4 | - | |
5 | 1 | Then /^I see project commits$/ do |
6 | 2 | current_path.should == project_commits_path(@project) |
7 | 3 | |
... | ... | @@ -23,19 +19,11 @@ Then /^I see commits atom feed$/ do |
23 | 19 | page.body.should have_selector("entry summary", :text => commit.description) |
24 | 20 | end |
25 | 21 | |
26 | -Given /^I click on commit link$/ do | |
27 | - visit project_commit_path(@project, ValidCommit::ID) | |
28 | -end | |
29 | - | |
30 | 22 | Then /^I see commit info$/ do |
31 | 23 | page.should have_content ValidCommit::MESSAGE |
32 | 24 | page.should have_content "Showing 1 changed file" |
33 | 25 | end |
34 | 26 | |
35 | -Given /^I visit compare refs page$/ do | |
36 | - visit compare_project_commits_path(@project) | |
37 | -end | |
38 | - | |
39 | 27 | Given /^I fill compare fields with refs$/ do |
40 | 28 | fill_in "from", :with => "master" |
41 | 29 | fill_in "to", :with => "stable" |
... | ... | @@ -48,18 +36,6 @@ Given /^I see compared refs$/ do |
48 | 36 | page.should have_content "Showing 73 changed files" |
49 | 37 | end |
50 | 38 | |
51 | -Given /^I visit project branches page$/ do | |
52 | - visit branches_project_repository_path(@project) | |
53 | -end | |
54 | - | |
55 | -Given /^I visit project commit page$/ do | |
56 | - visit project_commit_path(@project, ValidCommit::ID) | |
57 | -end | |
58 | - | |
59 | -Given /^I visit project tags page$/ do | |
60 | - visit tags_project_repository_path(@project) | |
61 | -end | |
62 | - | |
63 | 39 | Then /^I should see "(.*?)" recent branches list$/ do |arg1| |
64 | 40 | page.should have_content("Branches") |
65 | 41 | page.should have_content("master") |
... | ... | @@ -76,7 +52,7 @@ Then /^I should see "(.*?)" all tags list$/ do |arg1| |
76 | 52 | end |
77 | 53 | |
78 | 54 | Then /^I should see "(.*?)" protected branches list$/ do |arg1| |
79 | - within "table" do | |
55 | + within "table" do | |
80 | 56 | page.should have_content "stable" |
81 | 57 | page.should_not have_content "master" |
82 | 58 | end | ... | ... |
features/step_definitions/project/project_issues_steps.rb
... | ... | @@ -8,16 +8,12 @@ Given /^project "(.*?)" have "(.*?)" closed issue$/ do |arg1, arg2| |
8 | 8 | Factory.create(:issue, :title => arg2, :project => project, :author => project.users.first, :closed => true) |
9 | 9 | end |
10 | 10 | |
11 | -Given /^I visit project "(.*?)" issues page$/ do |arg1| | |
12 | - visit project_issues_path(Project.find_by_name(arg1)) | |
13 | -end | |
14 | - | |
15 | 11 | Given /^I should see "(.*?)" in issues$/ do |arg1| |
16 | - page.should have_content arg1 | |
12 | + page.should have_content arg1 | |
17 | 13 | end |
18 | 14 | |
19 | 15 | Given /^I should not see "(.*?)" in issues$/ do |arg1| |
20 | - page.should_not have_content arg1 | |
16 | + page.should_not have_content arg1 | |
21 | 17 | end |
22 | 18 | |
23 | 19 | Then /^I should see issue "(.*?)"$/ do |arg1| |
... | ... | @@ -27,11 +23,6 @@ Then /^I should see issue "(.*?)"$/ do |arg1| |
27 | 23 | page.should have_content issue.project.name |
28 | 24 | end |
29 | 25 | |
30 | -Given /^I visit issue page "(.*?)"$/ do |arg1| | |
31 | - issue = Issue.find_by_title(arg1) | |
32 | - visit project_issue_path(issue.project, issue) | |
33 | -end | |
34 | - | |
35 | 26 | Given /^I submit new issue "(.*?)"$/ do |arg1| |
36 | 27 | fill_in "issue_title", with: arg1 |
37 | 28 | click_button "Submit new issue" |
... | ... | @@ -51,7 +42,16 @@ Given /^I visit project "(.*?)" labels page$/ do |arg1| |
51 | 42 | end |
52 | 43 | |
53 | 44 | Then /^I should see label "(.*?)"$/ do |arg1| |
54 | - within ".labels-table" do | |
45 | + within ".labels-table" do | |
55 | 46 | page.should have_content arg1 |
56 | 47 | end |
57 | 48 | end |
49 | + | |
50 | +Given /^I fill in issue search with "(.*?)"$/ do |arg1| | |
51 | + # Because fill_in, with: "" triggers nothing | |
52 | + # we need to trigger a keyup event | |
53 | + if arg1 == '' | |
54 | + page.execute_script("$('.issue_search').val('').keyup();"); | |
55 | + end | |
56 | + fill_in 'issue_search', with: arg1 | |
57 | +end | ... | ... |
features/step_definitions/project/project_merge_requests_steps.rb
... | ... | @@ -8,21 +8,17 @@ Given /^project "(.*?)" have "(.*?)" closed merge request$/ do |arg1, arg2| |
8 | 8 | Factory.create(:merge_request, :title => arg2, :project => project, :author => project.users.first, :closed => true) |
9 | 9 | end |
10 | 10 | |
11 | -Given /^I visit project "(.*?)" merge requests page$/ do |arg1| | |
12 | - visit project_merge_requests_path(Project.find_by_name(arg1)) | |
13 | -end | |
14 | - | |
15 | 11 | Then /^I should see "(.*?)" in merge requests$/ do |arg1| |
16 | - page.should have_content arg1 | |
12 | + page.should have_content arg1 | |
17 | 13 | end |
18 | 14 | |
19 | 15 | Then /^I should not see "(.*?)" in merge requests$/ do |arg1| |
20 | - page.should_not have_content arg1 | |
16 | + page.should_not have_content arg1 | |
21 | 17 | end |
22 | 18 | |
23 | 19 | Then /^I should see merge request "(.*?)"$/ do |arg1| |
24 | 20 | merge_request = MergeRequest.find_by_title(arg1) |
25 | - page.should have_content(merge_request.title[0..10]) | |
21 | + page.should have_content(merge_request.title[0..10]) | |
26 | 22 | page.should have_content(merge_request.target_branch) |
27 | 23 | page.should have_content(merge_request.source_branch) |
28 | 24 | end |
... | ... | @@ -34,11 +30,6 @@ Given /^I submit new merge request "(.*?)"$/ do |arg1| |
34 | 30 | click_button "Save" |
35 | 31 | end |
36 | 32 | |
37 | -Given /^I visit merge request page "(.*?)"$/ do |arg1| | |
38 | - mr = MergeRequest.find_by_title(arg1) | |
39 | - visit project_merge_request_path(mr.project, mr) | |
40 | -end | |
41 | - | |
42 | 33 | Then /^I should see closed merge request "(.*?)"$/ do |arg1| |
43 | 34 | mr = MergeRequest.find_by_title(arg1) |
44 | 35 | mr.closed.should be_true | ... | ... |
features/step_definitions/project/project_milestones_steps.rb
... | ... | @@ -12,11 +12,6 @@ Given /^project "(.*?)" has milestone "(.*?)"$/ do |arg1, arg2| |
12 | 12 | end |
13 | 13 | end |
14 | 14 | |
15 | -Given /^I visit project "(.*?)" milestones page$/ do |arg1| | |
16 | - @project = Project.find_by_name(arg1) | |
17 | - visit project_milestones_path(@project) | |
18 | -end | |
19 | - | |
20 | 15 | Then /^I should see active milestones$/ do |
21 | 16 | milestone = @project.milestones.first |
22 | 17 | page.should have_content(milestone.title[0..10]) | ... | ... |
features/step_definitions/project/project_team_steps.rb
... | ... | @@ -8,10 +8,6 @@ Given /^"(.*?)" is "(.*?)" developer$/ do |arg1, arg2| |
8 | 8 | project.add_access(user, :write) |
9 | 9 | end |
10 | 10 | |
11 | -Given /^I visit project "(.*?)" team page$/ do |arg1| | |
12 | - visit team_project_path(Project.find_by_name(arg1)) | |
13 | -end | |
14 | - | |
15 | 11 | Then /^I should be able to see myself in team$/ do |
16 | 12 | page.should have_content(@user.name) |
17 | 13 | page.should have_content(@user.email) |
... | ... | @@ -23,13 +19,9 @@ Then /^I should see "(.*?)" in team list$/ do |arg1| |
23 | 19 | page.should have_content(user.email) |
24 | 20 | end |
25 | 21 | |
26 | -Given /^I click link "(.*?)"$/ do |arg1| | |
27 | - click_link arg1 | |
28 | -end | |
29 | - | |
30 | 22 | Given /^I select "(.*?)" as "(.*?)"$/ do |arg1, arg2| |
31 | 23 | user = User.find_by_name(arg1) |
32 | - within "#new_team_member" do | |
24 | + within "#new_team_member" do | |
33 | 25 | select user.name, :from => "team_member_user_id" |
34 | 26 | select arg2, :from => "team_member_project_access" |
35 | 27 | end |
... | ... | @@ -44,7 +36,7 @@ end |
44 | 36 | |
45 | 37 | Given /^I change "(.*?)" role to "(.*?)"$/ do |arg1, arg2| |
46 | 38 | user = User.find_by_name(arg1) |
47 | - within ".user_#{user.id}" do | |
39 | + within ".user_#{user.id}" do | |
48 | 40 | select arg2, :from => "team_member_project_access" |
49 | 41 | end |
50 | 42 | end | ... | ... |
features/step_definitions/project/project_wiki_steps.rb
features/step_definitions/project/projects_steps.rb
1 | -include LoginHelpers | |
2 | - | |
3 | -Given /^I signin as a user$/ do | |
4 | - login_as :user | |
5 | -end | |
6 | - | |
7 | 1 | When /^I visit new project page$/ do |
8 | 2 | visit new_project_path |
9 | 3 | end |
... | ... | @@ -65,10 +59,6 @@ Given /^I visit project "(.*?)" network page$/ do |arg1| |
65 | 59 | visit graph_project_path(project) |
66 | 60 | end |
67 | 61 | |
68 | -Given /^show me page$/ do | |
69 | - save_and_open_page | |
70 | -end | |
71 | - | |
72 | 62 | Given /^page should have network graph$/ do |
73 | 63 | page.should have_content "Project Network Graph" |
74 | 64 | within ".graph" do | ... | ... |
... | ... | @@ -0,0 +1,91 @@ |
1 | +Given /^I visit project "(.*?)" issues page$/ do |arg1| | |
2 | + visit project_issues_path(Project.find_by_name(arg1)) | |
3 | +end | |
4 | + | |
5 | +Given /^I visit issue page "(.*?)"$/ do |arg1| | |
6 | + issue = Issue.find_by_title(arg1) | |
7 | + visit project_issue_path(issue.project, issue) | |
8 | +end | |
9 | + | |
10 | +Given /^I visit project "(.*?)" merge requests page$/ do |arg1| | |
11 | + visit project_merge_requests_path(Project.find_by_name(arg1)) | |
12 | +end | |
13 | + | |
14 | +Given /^I visit merge request page "(.*?)"$/ do |arg1| | |
15 | + mr = MergeRequest.find_by_title(arg1) | |
16 | + visit project_merge_request_path(mr.project, mr) | |
17 | +end | |
18 | + | |
19 | +Given /^I visit project "(.*?)" milestones page$/ do |arg1| | |
20 | + @project = Project.find_by_name(arg1) | |
21 | + visit project_milestones_path(@project) | |
22 | +end | |
23 | + | |
24 | +Given /^I visit project commits page$/ do | |
25 | + visit project_commits_path(@project) | |
26 | +end | |
27 | + | |
28 | +Given /^I visit compare refs page$/ do | |
29 | + visit compare_project_commits_path(@project) | |
30 | +end | |
31 | + | |
32 | +Given /^I visit project branches page$/ do | |
33 | + visit branches_project_repository_path(@project) | |
34 | +end | |
35 | + | |
36 | +Given /^I visit project commit page$/ do | |
37 | + visit project_commit_path(@project, ValidCommit::ID) | |
38 | +end | |
39 | + | |
40 | +Given /^I visit project tags page$/ do | |
41 | + visit tags_project_repository_path(@project) | |
42 | +end | |
43 | + | |
44 | +Given /^I click on commit link$/ do | |
45 | + visit project_commit_path(@project, ValidCommit::ID) | |
46 | +end | |
47 | + | |
48 | +Given /^I visit project source page$/ do | |
49 | + visit tree_project_ref_path(@project, @project.root_ref) | |
50 | +end | |
51 | + | |
52 | +Given /^I visit project source page for "(.*?)"$/ do |arg1| | |
53 | + visit tree_project_ref_path(@project, arg1) | |
54 | +end | |
55 | + | |
56 | +Given /^I visit blob file from repo$/ do | |
57 | + visit tree_project_ref_path(@project, ValidCommit::ID, :path => ValidCommit::BLOB_FILE_PATH) | |
58 | +end | |
59 | + | |
60 | +Given /^I visit project "(.*?)" team page$/ do |arg1| | |
61 | + visit team_project_path(Project.find_by_name(arg1)) | |
62 | +end | |
63 | + | |
64 | +Given /^I visit project wiki page$/ do | |
65 | + visit project_wiki_path(@project, :index) | |
66 | +end | |
67 | + | |
68 | +Given /^I visit profile page$/ do | |
69 | + visit profile_path | |
70 | +end | |
71 | + | |
72 | +Given /^I visit profile token page$/ do | |
73 | + visit profile_token_path | |
74 | +end | |
75 | + | |
76 | +Given /^I visit profile password page$/ do | |
77 | + visit profile_password_path | |
78 | +end | |
79 | + | |
80 | +Given /^I visit dashboard page$/ do | |
81 | + visit dashboard_path | |
82 | +end | |
83 | + | |
84 | +Given /^I visit dashboard issues page$/ do | |
85 | + visit dashboard_issues_path | |
86 | +end | |
87 | + | |
88 | +Given /^I visit dashboard merge requests page$/ do | |
89 | + visit dashboard_merge_requests_path | |
90 | +end | |
91 | + | ... | ... |
lib/gitlab/backend/gitolite.rb
lib/gitlab/markdown.rb
1 | 1 | module Gitlab |
2 | - # Custom parser for Gitlab-flavored Markdown | |
2 | + # Custom parser for GitLab-flavored Markdown | |
3 | 3 | # |
4 | 4 | # It replaces references in the text with links to the appropriate items in |
5 | - # Gitlab. | |
5 | + # GitLab. | |
6 | 6 | # |
7 | 7 | # Supported reference formats are: |
8 | 8 | # * @foo for team members | ... | ... |
lib/hooks/post-receive
lib/tasks/gitlab/write_hook.rake
1 | 1 | namespace :gitlab do |
2 | 2 | namespace :gitolite do |
3 | - desc "GITLAB | Write GITLAB hook for gitolite" | |
3 | + desc "GITLAB | Write GitLab hook for gitolite" | |
4 | 4 | task :write_hooks => :environment do |
5 | 5 | gitolite_hooks_path = File.join(Gitlab.config.git_hooks_path, "common") |
6 | 6 | gitlab_hooks_path = Rails.root.join("lib", "hooks") | ... | ... |
spec/factories_spec.rb
1 | 1 | require 'spec_helper' |
2 | 2 | |
3 | -describe "Factories" do | |
4 | - describe 'User' do | |
5 | - it "builds a valid instance" do | |
6 | - build(:user).should be_valid | |
7 | - end | |
8 | - | |
9 | - it "builds a valid admin instance" do | |
10 | - build(:admin).should be_valid | |
11 | - end | |
12 | - end | |
13 | - | |
14 | - describe 'Project' do | |
15 | - it "builds a valid instance" do | |
16 | - build(:project).should be_valid | |
17 | - end | |
18 | - end | |
19 | - | |
20 | - describe 'Issue' do | |
21 | - it "builds a valid instance" do | |
22 | - build(:issue).should be_valid | |
23 | - end | |
24 | - | |
25 | - it "builds a valid closed instance" do | |
26 | - build(:closed_issue).should be_valid | |
27 | - end | |
28 | - end | |
29 | - | |
30 | - describe 'MergeRequest' do | |
31 | - it "builds a valid instance" do | |
32 | - build(:merge_request).should be_valid | |
33 | - end | |
34 | - end | |
35 | - | |
36 | - describe 'Note' do | |
37 | - it "builds a valid instance" do | |
38 | - build(:note).should be_valid | |
39 | - end | |
40 | - end | |
41 | - | |
42 | - describe 'Event' do | |
43 | - it "builds a valid instance" do | |
44 | - build(:event).should be_valid | |
45 | - end | |
46 | - end | |
47 | - | |
48 | - describe 'Key' do | |
49 | - it "builds a valid instance" do | |
50 | - build(:key).should be_valid | |
51 | - end | |
52 | - | |
53 | - it "builds a valid deploy key instance" do | |
54 | - build(:deploy_key).should be_valid | |
55 | - end | |
56 | - | |
57 | - it "builds a valid personal key instance" do | |
58 | - build(:personal_key).should be_valid | |
59 | - end | |
60 | - end | |
61 | - | |
62 | - describe 'Milestone' do | |
63 | - it "builds a valid instance" do | |
64 | - build(:milestone).should be_valid | |
65 | - end | |
66 | - end | |
67 | - | |
68 | - describe 'SystemHook' do | |
69 | - it "builds a valid instance" do | |
70 | - build(:system_hook).should be_valid | |
71 | - end | |
72 | - end | |
73 | - | |
74 | - describe 'ProjectHook' do | |
75 | - it "builds a valid instance" do | |
76 | - build(:project_hook).should be_valid | |
77 | - end | |
78 | - end | |
79 | - | |
80 | - describe 'Wiki' do | |
81 | - it "builds a valid instance" do | |
82 | - build(:wiki).should be_valid | |
83 | - end | |
84 | - end | |
85 | - | |
86 | - describe 'Snippet' do | |
87 | - it "builds a valid instance" do | |
88 | - build(:snippet).should be_valid | |
3 | +FactoryGirl.factories.map(&:name).each do |factory_name| | |
4 | + describe "#{factory_name} factory" do | |
5 | + it 'should be valid' do | |
6 | + build(factory_name).should be_valid | |
89 | 7 | end |
90 | 8 | end |
91 | 9 | end | ... | ... |
spec/mailers/notify_spec.rb
... | ... | @@ -24,7 +24,7 @@ describe Notify do |
24 | 24 | end |
25 | 25 | |
26 | 26 | it 'has the correct subject' do |
27 | - should have_subject /^gitlab \| Account was created for you$/ | |
27 | + should have_subject /^gitlab \| Account was created for you$/i | |
28 | 28 | end |
29 | 29 | |
30 | 30 | it 'contains the new user\'s login name' do | ... | ... |