Commit f438bd415ffc4405c2e81360a92ffaf907cd87ad

Authored by Dmitriy Zaporozhets
2 parents 0904cc48 d9c02f30

Merge branch 'master' into 6-0-dev

Conflicts:
	app/controllers/admin/teams/projects_controller.rb
	app/views/team_members/_team_member.html.haml
	app/views/teams/members/_member.html.haml
CONTRIBUTING.md
@@ -4,11 +4,15 @@ This guide details how to use issues and pull requests to improve GitLab. @@ -4,11 +4,15 @@ This guide details how to use issues and pull requests to improve GitLab.
4 4
5 ## Closing policy for issues and pull requests 5 ## Closing policy for issues and pull requests
6 6
7 -Issues and pull requests not in line with the guidelines listed in this document will be closed. GitLab is a popular open source project and the capacity to deal with issues and pull requests is limited. To get support for your problems please use other channels as detailed in [the getting help section of the readme](https://github.com/gitlabhq/gitlabhq#getting-help). Professional [support subscriptions](http://www.gitlab.com/subscription/) and [consulting services](http://www.gitlab.com/consultancy/) are available from [GitLab.com](http://www.gitlab.com/). 7 +GitLab is a popular open source project and the capacity to deal with issues and pull requests is limited. Out of respect for our volunteers, issues and pull requests not in line with the guidelines listed in this document may be closed without notice.
  8 +
  9 +Please treat our volunteers with courtesy and respect, it will go a long way towards getting your issue resolved.
8 10
9 ## Issue tracker 11 ## Issue tracker
10 12
11 -The [issue tracker](https://github.com/gitlabhq/gitlabhq/issues) is only for obvious bugs or misbehavior in the latest [stable or development release of GitLab](MAINTENANCE.md). When submitting an issue please conform to the issue submission guidelines listed below. 13 +To get support for your particular problem please use the channels as detailed in [the getting help section of the readme](https://github.com/gitlabhq/gitlabhq#getting-help). Professional [support subscriptions](http://www.gitlab.com/subscription/) and [consulting services](http://www.gitlab.com/consultancy/) are available from [GitLab.com](http://www.gitlab.com/).
  14 +
  15 +The [issue tracker](https://github.com/gitlabhq/gitlabhq/issues) is only for obvious bugs or misbehavior in the latest [stable or development release of GitLab](MAINTENANCE.md). When submitting an issue please conform to the issue submission guidelines listed below. Not all issues will be addressed and your issue is more likely to be addressed if you submit a pull request which partially or fully addresses the issue.
12 16
13 Do not use the issue tracker for feature requests. We have a specific [feedback and suggestions forum](http://feedback.gitlab.com) for this purpose. 17 Do not use the issue tracker for feature requests. We have a specific [feedback and suggestions forum](http://feedback.gitlab.com) for this purpose.
14 18
@@ -16,7 +20,7 @@ Please send a pull request with a tested solution or a pull request with a faili @@ -16,7 +20,7 @@ Please send a pull request with a tested solution or a pull request with a faili
16 20
17 ### Issue tracker guidelines 21 ### Issue tracker guidelines
18 22
19 -**[Search](https://github.com/gitlabhq/gitlabhq/search?q=&ref=cmdform&type=Issues)** for similar entries before submitting your own, there's a good chance somebody else had the same issue. Show your support with `:+1:` and/or join the discussion. Please submit issues in the following format: 23 +**[Search](https://github.com/gitlabhq/gitlabhq/search?q=&ref=cmdform&type=Issues)** for similar entries before submitting your own, there's a good chance somebody else had the same issue. Show your support with `:+1:` and/or join the discussion. Please submit issues in the following format (as the first post):
20 24
21 1. **Summary:** Summarize your issue in one sentence (what goes wrong, what did you expect to happen) 25 1. **Summary:** Summarize your issue in one sentence (what goes wrong, what did you expect to happen)
22 2. **Steps to reproduce:** How can we reproduce the issue, preferably on the [GitLab Vagrant virtual machine](https://github.com/gitlabhq/gitlab-vagrant-vm) (start with: `vagrant destroy && vagrant up && vagrant ssh`) 26 2. **Steps to reproduce:** How can we reproduce the issue, preferably on the [GitLab Vagrant virtual machine](https://github.com/gitlabhq/gitlab-vagrant-vm) (start with: `vagrant destroy && vagrant up && vagrant ssh`)
@@ -36,7 +40,7 @@ We welcome pull requests with fixes and improvements to GitLab code, tests, and/ @@ -36,7 +40,7 @@ We welcome pull requests with fixes and improvements to GitLab code, tests, and/
36 40
37 ### Pull request guidelines 41 ### Pull request guidelines
38 42
39 -If you can, please submit a pull request with the fix or improvements including tests. If you don't know how to fix the issue but can write a test that exposes the issue we will accept that as well. The workflow to make a pull request is as follows: 43 +If you can, please submit a pull request with the fix or improvements including tests. If you don't know how to fix the issue but can write a test that exposes the issue we will accept that as well. In general bug fixes that include a regression test are merged quickly while new features without proper tests are least likely to receive timely feedback. The workflow to make a pull request is as follows:
40 44
41 1. Fork the project on GitHub 45 1. Fork the project on GitHub
42 1. Create a feature branch 46 1. Create a feature branch
@@ -51,10 +55,11 @@ We will accept pull requests if: @@ -51,10 +55,11 @@ We will accept pull requests if:
51 * The code has proper tests and all tests pass (or it is a test exposing a failure in existing code) 55 * The code has proper tests and all tests pass (or it is a test exposing a failure in existing code)
52 * It can be merged without problems (if not please use: `git rebase master`) 56 * It can be merged without problems (if not please use: `git rebase master`)
53 * It doesn't break any existing functionality 57 * It doesn't break any existing functionality
54 -* It's quality code that conforms to the [Rails style guide](https://github.com/bbatsov/rails-style-guide) and best practices 58 +* It's quality code that conforms to the [Ruby](https://github.com/bbatsov/ruby-style-guide) and [Rails](https://github.com/bbatsov/rails-style-guide) style guides and best practices
55 * The description includes a motive for your change and the method you used to achieve it 59 * The description includes a motive for your change and the method you used to achieve it
56 * It keeps the GitLab code base clean and well structured 60 * It keeps the GitLab code base clean and well structured
57 * We think other users will benefit from the same functionality 61 * We think other users will benefit from the same functionality
58 * If it makes changes to the UI the pull request should include screenshots 62 * If it makes changes to the UI the pull request should include screenshots
  63 +* It is a single commit (please use git rebase -i to squash commits)
59 64
60 For examples of feedback on pull requests please look at already [closed pull requests](https://github.com/gitlabhq/gitlabhq/pulls?direction=desc&page=1&sort=created&state=closed). 65 For examples of feedback on pull requests please look at already [closed pull requests](https://github.com/gitlabhq/gitlabhq/pulls?direction=desc&page=1&sort=created&state=closed).
@@ -2,6 +2,8 @@ @@ -2,6 +2,8 @@
2 2
3 ![logo](https://raw.github.com/gitlabhq/gitlabhq/master/public/gitlab_logo.png) 3 ![logo](https://raw.github.com/gitlabhq/gitlabhq/master/public/gitlab_logo.png)
4 4
  5 +![animated-screenshots](http://makeagif.com/media/6-23-2013/AN3Mo6.gif)
  6 +
5 ### GitLab allows you to 7 ### GitLab allows you to
6 * keep your code secure on your own server 8 * keep your code secure on your own server
7 * manage repositories, users and access permissions 9 * manage repositories, users and access permissions
@@ -22,7 +24,7 @@ @@ -22,7 +24,7 @@
22 24
23 * [![Code Climate](https://codeclimate.com/github/gitlabhq/gitlabhq.png)](https://codeclimate.com/github/gitlabhq/gitlabhq) 25 * [![Code Climate](https://codeclimate.com/github/gitlabhq/gitlabhq.png)](https://codeclimate.com/github/gitlabhq/gitlabhq)
24 26
25 -* [![Dependency Status](https://gemnasium.com/gitlabhq/gitlabhq.png)](https://gemnasium.com/gitlabhq/gitlabhq) this button can be yellow (small updates are available) but must not be red (a security fix or an important update is available) 27 +* [![Dependency Status](https://gemnasium.com/gitlabhq/gitlabhq.png)](https://gemnasium.com/gitlabhq/gitlabhq) this button can be yellow (small updates are available) but must not be red (a security fix or an important update is available), gems are updated in major releases of GitLab.
26 28
27 * [![Coverage Status](https://coveralls.io/repos/gitlabhq/gitlabhq/badge.png?branch=master)](https://coveralls.io/r/gitlabhq/gitlabhq) 29 * [![Coverage Status](https://coveralls.io/repos/gitlabhq/gitlabhq/badge.png?branch=master)](https://coveralls.io/r/gitlabhq/gitlabhq)
28 30
app/assets/stylesheets/gitlab_bootstrap/avatar.scss
@@ -15,6 +15,7 @@ @@ -15,6 +15,7 @@
15 15
16 &.s16 { width: 16px; height: 16px; margin-right: 6px; } 16 &.s16 { width: 16px; height: 16px; margin-right: 6px; }
17 &.s24 { width: 24px; height: 24px; margin-right: 8px; } 17 &.s24 { width: 24px; height: 24px; margin-right: 8px; }
  18 + &.s26 { width: 26px; height: 26px; margin-right: 8px; }
18 &.s32 { width: 32px; height: 32px; margin-right: 10px; } 19 &.s32 { width: 32px; height: 32px; margin-right: 10px; }
19 &.s90 { width: 90px; height: 90px; margin-right: 15px; } 20 &.s90 { width: 90px; height: 90px; margin-right: 15px; }
20 } 21 }
app/contexts/merge_requests_load_context.rb
@@ -9,7 +9,7 @@ class MergeRequestsLoadContext < BaseContext @@ -9,7 +9,7 @@ class MergeRequestsLoadContext < BaseContext
9 merge_requests = case type 9 merge_requests = case type
10 when 'all' then merge_requests 10 when 'all' then merge_requests
11 when 'closed' then merge_requests.closed 11 when 'closed' then merge_requests.closed
12 - when 'assigned-to-me' then merge_requests.opened.assigned(current_user) 12 + when 'assigned-to-me' then merge_requests.opened.assigned_to(current_user)
13 else merge_requests.opened 13 else merge_requests.opened
14 end 14 end
15 15
app/helpers/issues_helper.rb
@@ -15,7 +15,7 @@ module IssuesHelper @@ -15,7 +15,7 @@ module IssuesHelper
15 # to allow filtering issues by an unassigned User or Milestone 15 # to allow filtering issues by an unassigned User or Milestone
16 def unassigned_filter 16 def unassigned_filter
17 # Milestone uses :title, Issue uses :name 17 # Milestone uses :title, Issue uses :name
18 - OpenStruct.new(id: 0, title: 'Unspecified', name: 'Unassigned') 18 + OpenStruct.new(id: 0, title: 'None (backlog)', name: 'Unassigned')
19 end 19 end
20 20
21 def issues_filter 21 def issues_filter
app/helpers/projects_helper.rb
@@ -25,7 +25,7 @@ module ProjectsHelper @@ -25,7 +25,7 @@ module ProjectsHelper
25 author_html = "" 25 author_html = ""
26 26
27 # Build avatar image tag 27 # Build avatar image tag
28 - author_html << image_tag(gravatar_icon(author.try(:email), opts[:size]), width: opts[:size], class: "avatar avatar-inline #{"s#{opts[:size]}" if opts[:size]}") if opts[:avatar] 28 + author_html << image_tag(gravatar_icon(author.try(:email), opts[:size]), width: opts[:size], class: "avatar avatar-inline #{"s#{opts[:size]}" if opts[:size]}", alt:'') if opts[:avatar]
29 29
30 # Build name span tag 30 # Build name span tag
31 author_html << content_tag(:span, sanitize(author.name), class: 'author') if opts[:name] 31 author_html << content_tag(:span, sanitize(author.name), class: 'author') if opts[:name]
app/views/events/_commit.html.haml
1 %li.commit 1 %li.commit
2 %p 2 %p
3 - = link_to commit[:id][0..8], project_commit_path(project, commit[:id]), class: "commit_short_id" 3 + = link_to commit[:id][0..8], project_commit_path(project, commit[:id]), class: "commit_short_id", alt: ''
4 %span= commit[:author][:name] 4 %span= commit[:author][:name]
5 &ndash; 5 &ndash;
6 = image_tag gravatar_icon(commit[:author][:email]), class: "avatar", width: 16 6 = image_tag gravatar_icon(commit[:author][:email]), class: "avatar", width: 16
app/views/events/_event.html.haml
@@ -4,7 +4,7 @@ @@ -4,7 +4,7 @@
4 #{time_ago_in_words(event.created_at)} ago. 4 #{time_ago_in_words(event.created_at)} ago.
5 5
6 = cache event do 6 = cache event do
7 - = image_tag gravatar_icon(event.author_email), class: "avatar s24" 7 + = image_tag gravatar_icon(event.author_email), class: "avatar s24", alt:''
8 8
9 - if event.push? 9 - if event.push?
10 = render "events/event/push", event: event 10 = render "events/event/push", event: event
app/views/help/markdown.html.haml
@@ -2,126 +2,6 @@ @@ -2,126 +2,6 @@
2 %h3.page_title GitLab Flavored Markdown 2 %h3.page_title GitLab Flavored Markdown
3 %br 3 %br
4 4
5 - .row  
6 - .span8  
7 - %p  
8 - For GitLab we developed something we call "GitLab Flavored Markdown" (GFM).  
9 - It extends the standard Markdown in a few significant ways adds some useful functionality.  
10 -  
11 - %p You can use GFM in:  
12 - %ul  
13 - %li commit messages  
14 - %li comments  
15 - %li wall posts  
16 - %li issues  
17 - %li merge requests  
18 - %li milestones  
19 - %li wiki pages  
20 -  
21 - .span4  
22 - .alert.alert-info  
23 - %p  
24 - If you're not already familiar with Markdown, you should spend 15 minutes and go over the excellent  
25 - %strong= link_to "Markdown Syntax Guide", "http://daringfireball.net/projects/markdown/syntax"  
26 - at Daring Fireball.  
27 -  
28 - .row  
29 - .span8  
30 - %h3 Differences from traditional Markdown  
31 -  
32 - %h4 Newlines  
33 -  
34 - %p  
35 - The biggest difference that GFM introduces is in the handling of linebreaks.  
36 - With traditional Markdown you can hard wrap paragraphs of text and they will be combined into a single paragraph. We find this to be the cause of a huge number of unintentional formatting errors.  
37 - GFM treats newlines in paragraph-like content as real line breaks, which is probably what you intended.  
38 -  
39 -  
40 - %p The next paragraph contains two phrases separated by a single newline character:  
41 - %pre= "Roses are red\nViolets are blue"  
42 - %p becomes  
43 - = markdown "Roses are red\nViolets are blue"  
44 -  
45 - %h4 Multiple underscores in words  
46 -  
47 - %p  
48 - It is not reasonable to italicize just <em>part</em> of a word, especially when you're dealing with code and names often appear with multiple underscores.  
49 - Therefore, GFM ignores multiple underscores in words.  
50 -  
51 - %pre= "perform_complicated_task\ndo_this_and_do_that_and_another_thing"  
52 - %p becomes  
53 - = markdown "perform_complicated_task\ndo_this_and_do_that_and_another_thing"  
54 -  
55 - %h4 URL autolinking  
56 -  
57 - %p  
58 - GFM will autolink standard URLs you copy and paste into your text.  
59 - So if you want to link to a URL (instead of a textual link), you can simply put the URL in verbatim and it will be turned into a link to that URL.  
60 -  
61 - %h4 Fenced code blocks  
62 -  
63 - %p  
64 - Markdown converts text with four spaces at the front of each line to code blocks.  
65 - GFM supports that, but we also support fenced blocks.  
66 - Just wrap your code blocks in <code>```</code> and you won't need to indent manually to trigger a code block.  
67 -  
68 - %pre= %Q{```ruby\nrequire 'redcarpet'\nmarkdown = Redcarpet.new("Hello World!")\nputs markdown.to_html\n```}  
69 - %p becomes  
70 - = markdown %Q{```ruby\nrequire 'redcarpet'\nmarkdown = Redcarpet.new("Hello World!")\nputs markdown.to_html\n```}  
71 -  
72 - %h4 Emoji  
73 -  
74 - .row  
75 - .span8  
76 - :ruby  
77 - puts markdown %Q{Sometimes you want to be :cool: and add some :sparkles: to your :speech_balloon:. Well we have a :gift: for you:  
78 -  
79 - :exclamation: You can use emoji anywhere GFM is supported. :sunglasses:  
80 -  
81 - You can use it to point out a :bug: or warn about :monkey:patches. And if someone improves your really :snail: code, send them a :bouquet: or some :candy:. People will :heart: you for that.  
82 -  
83 - If you are :new: to this, don't be :fearful:. You can easily join the emoji :circus_tent:. All you need to do is to :book: up on the supported codes.  
84 - }  
85 -  
86 - .span4  
87 - .alert.alert-info  
88 - %p  
89 - Consult the  
90 - %strong= link_to "Emoji Cheat Sheet", "http://www.emoji-cheat-sheet.com/"  
91 - for a list of all supported emoji codes.  
92 -  
93 - .row  
94 - .span8  
95 - %h4 Special GitLab references  
96 -  
97 - %p  
98 - GFM recognizes special references.  
99 - You can easily reference e.g. a team member, an issue or a commit within a project.  
100 - GFM will turn that reference into a link so you can navigate between them easily.  
101 -  
102 - %p GFM will recognize the following references:  
103 - %ul  
104 - %li  
105 - %code @foo  
106 - for team members  
107 - %li  
108 - %code #123  
109 - for issues  
110 - %li  
111 - %code !123  
112 - for merge request  
113 - %li  
114 - %code $123  
115 - for snippets  
116 - %li  
117 - %code 1234567  
118 - for commits  
119 -  
120 - -# this example will only be shown if the user has a project with at least one issue  
121 - - if @project = current_user.authorized_projects.first  
122 - - if issue = @project.issues.first  
123 - %p For example in your #{link_to @project.name, project_path(@project)} project, writing:  
124 - %pre= "This is related to ##{issue.id}. @#{current_user.username} is working on solving it."  
125 - %p becomes:  
126 - = markdown "This is related to ##{issue.id}. @#{current_user.username} is working on solving it."  
127 - - @project = nil # Prevent this from bubbling up to page title 5 + .help_body
  6 + = preserve do
  7 + = markdown File.read(Rails.root.join("doc", "markdown", "markdown.md"))
app/views/profiles/show.html.haml
1 .profile_avatar_holder 1 .profile_avatar_holder
2 - = image_tag gravatar_icon(@user.email, 90) 2 + = image_tag gravatar_icon(@user.email, 90), alt: ''
3 %h3.page_title 3 %h3.page_title
4 = @user.name 4 = @user.name
5 %br 5 %br
app/views/projects/issues/_issues.html.haml
@@ -53,7 +53,7 @@ @@ -53,7 +53,7 @@
53 - @project.team.members.sort_by(&:name).each do |user| 53 - @project.team.members.sort_by(&:name).each do |user|
54 %li 54 %li
55 = link_to project_issues_with_filter_path(@project, assignee_id: user.id) do 55 = link_to project_issues_with_filter_path(@project, assignee_id: user.id) do
56 - = image_tag gravatar_icon(user.email), class: "avatar s16" 56 + = image_tag gravatar_icon(user.email), class: "avatar s16", alt: ''
57 = user.name 57 = user.name
58 58
59 .dropdown.inline.prepend-left-10 59 .dropdown.inline.prepend-left-10
@@ -63,7 +63,7 @@ @@ -63,7 +63,7 @@
63 - if @milestone.present? 63 - if @milestone.present?
64 %strong= @milestone.title 64 %strong= @milestone.title
65 - elsif params[:milestone_id] == "0" 65 - elsif params[:milestone_id] == "0"
66 - Unspecified 66 + None (backlog)
67 - else 67 - else
68 Any 68 Any
69 %b.caret 69 %b.caret
@@ -72,7 +72,7 @@ @@ -72,7 +72,7 @@
72 = link_to project_issues_with_filter_path(@project, milestone_id: nil) do 72 = link_to project_issues_with_filter_path(@project, milestone_id: nil) do
73 Any 73 Any
74 = link_to project_issues_with_filter_path(@project, milestone_id: 0) do 74 = link_to project_issues_with_filter_path(@project, milestone_id: 0) do
75 - Unspecified 75 + None (backlog)
76 - issues_active_milestones.each do |milestone| 76 - issues_active_milestones.each do |milestone|
77 %li 77 %li
78 = link_to project_issues_with_filter_path(@project, milestone_id: milestone.id) do 78 = link_to project_issues_with_filter_path(@project, milestone_id: milestone.id) do
app/views/projects/repositories/_branch.html.haml
@@ -12,7 +12,7 @@ @@ -12,7 +12,7 @@
12 %td 12 %td
13 = link_to project_commit_path(@project, commit.id), class: 'commit_short_id' do 13 = link_to project_commit_path(@project, commit.id), class: 'commit_short_id' do
14 = commit.short_id 14 = commit.short_id
15 - = image_tag gravatar_icon(commit.author_email), class: "avatar s16" 15 + = image_tag gravatar_icon(commit.author_email), class: "avatar s16", alt: ''
16 %span.light 16 %span.light
17 = gfm escape_once(truncate(commit.title, length: 40)) 17 = gfm escape_once(truncate(commit.title, length: 40))
18 %span 18 %span
app/views/projects/repositories/_feed.html.haml
@@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@
11 %div 11 %div
12 = link_to project_commits_path(@project, commit.id) do 12 = link_to project_commits_path(@project, commit.id) do
13 %code= commit.short_id 13 %code= commit.short_id
14 - = image_tag gravatar_icon(commit.author_email), class: "", width: 16 14 + = image_tag gravatar_icon(commit.author_email), class: "", width: 16, alt: ''
15 = gfm escape_once(truncate(commit.title, length: 40)) 15 = gfm escape_once(truncate(commit.title, length: 40))
16 %td 16 %td
17 %span.pull-right.cgray 17 %span.pull-right.cgray
app/views/projects/repositories/stats.html.haml
@@ -19,7 +19,7 @@ @@ -19,7 +19,7 @@
19 %ol.styled 19 %ol.styled
20 - @stats.authors[0...50].each do |author| 20 - @stats.authors[0...50].each do |author|
21 %li 21 %li
22 - = image_tag gravatar_icon(author.email, 16), class: 'avatar s16' 22 + = image_tag gravatar_icon(author.email, 16), class: 'avatar s16', alt: ''
23 = author.name 23 = author.name
24 %small.light= author.email 24 %small.light= author.email
25 .pull-right 25 .pull-right
app/views/snippets/_snippet.html.haml
@@ -25,6 +25,6 @@ @@ -25,6 +25,6 @@
25 = "##{snippet.id}" 25 = "##{snippet.id}"
26 %span.light 26 %span.light
27 by 27 by
28 - = image_tag gravatar_icon(snippet.author_email), class: "avatar avatar-inline s16" 28 + = image_tag gravatar_icon(snippet.author_email), class: "avatar avatar-inline s16", alt: ''
29 = snippet.author_name 29 = snippet.author_name
30 30
app/views/users/show.html.haml
1 .row 1 .row
2 .span8 2 .span8
3 %h3.page_title 3 %h3.page_title
4 - = image_tag gravatar_icon(@user.email, 90), class: "avatar s90" 4 + = image_tag gravatar_icon(@user.email, 90), class: "avatar s90", alt: ''
5 = @user.name 5 = @user.name
6 - if @user == current_user 6 - if @user == current_user
7 .pull-right 7 .pull-right
config/gitlab.yml.example
1 -# # # # # # # # # # # # # # # # # # 1 +# # # # # # # # # # # # # # # # # #
2 # GitLab application config file # 2 # GitLab application config file #
3 # # # # # # # # # # # # # # # # # # 3 # # # # # # # # # # # # # # # # # #
4 # 4 #
@@ -37,7 +37,7 @@ production: &amp;base @@ -37,7 +37,7 @@ production: &amp;base
37 # default_can_create_group: false # default: true 37 # default_can_create_group: false # default: true
38 # default_can_create_team: false # default: true 38 # default_can_create_team: false # default: true
39 # username_changing_enabled: false # default: true - User can change her username/namespace 39 # username_changing_enabled: false # default: true - User can change her username/namespace
40 - 40 +
41 ## Users management 41 ## Users management
42 # signup_enabled: true # default: false - Account passwords are not sent via the email if signup is enabled. 42 # signup_enabled: true # default: false - Account passwords are not sent via the email if signup is enabled.
43 43
@@ -168,12 +168,12 @@ production: &amp;base @@ -168,12 +168,12 @@ production: &amp;base
168 # 4. Extra customization 168 # 4. Extra customization
169 # ========================== 169 # ==========================
170 170
171 - extra: 171 + extra:
172 ## Google analytics. Uncomment if you want it 172 ## Google analytics. Uncomment if you want it
173 # google_analytics_id: '_your_tracking_id' 173 # google_analytics_id: '_your_tracking_id'
174 174
175 ## Text under sign-in page (Markdown enabled) 175 ## Text under sign-in page (Markdown enabled)
176 - # sign_in_text: | 176 + # sign_in_text: |
177 # ![Company Logo](http://www.companydomain.com/logo.png) 177 # ![Company Logo](http://www.companydomain.com/logo.png)
178 # [Learn more about CompanyName](http://www.companydomain.com/) 178 # [Learn more about CompanyName](http://www.companydomain.com/)
179 179
doc/install/installation.md
@@ -173,6 +173,9 @@ You can change `5-3-stable` to `master` if you want the *bleeding edge* version, @@ -173,6 +173,9 @@ You can change `5-3-stable` to `master` if you want the *bleeding edge* version,
173 # Create directory for satellites 173 # Create directory for satellites
174 sudo -u git -H mkdir /home/git/gitlab-satellites 174 sudo -u git -H mkdir /home/git/gitlab-satellites
175 175
  176 + # Make config/database.yml readable to git only
  177 + sudo -u git -H chmod o-rwx config/database.yml
  178 +
176 # Create directories for sockets/pids and make sure GitLab can write to them 179 # Create directories for sockets/pids and make sure GitLab can write to them
177 sudo -u git -H mkdir tmp/pids/ 180 sudo -u git -H mkdir tmp/pids/
178 sudo -u git -H mkdir tmp/sockets/ 181 sudo -u git -H mkdir tmp/sockets/
doc/markdown/markdown.md 0 → 100644
@@ -0,0 +1,451 @@ @@ -0,0 +1,451 @@
  1 +
  2 +----------------------------------------------
  3 +
  4 +Table of Contents
  5 +=================
  6 +
  7 +----------------------------------------------
  8 +
  9 +[GitLab Flavored Markdown](#toc_3)
  10 +-------------------------------
  11 +[Newlines](#toc_4)
  12 +[Multiple underscores in words](#toc_5)
  13 +[URL autolinking](#toc_6)
  14 +[Code and Syntax Highlighting](#toc_7)
  15 +[Emoji](#toc_8)
  16 +[Special GitLab references](#toc_9)
  17 +
  18 +
  19 +
  20 +[Standard Markdown](#toc_10)
  21 +------------------------------
  22 +[Headers](#toc_11)
  23 +[Emphasis](#toc_20)
  24 +[Lists](#toc_21)
  25 +[Links](#toc_22)
  26 +[Images](#toc_23)
  27 +[Blockquotes](#toc_24)
  28 +[Inline HTML](#toc_25)
  29 +[Horizontal Rule](#toc_26)
  30 +[Line Breaks](#toc_27)
  31 +
  32 +[References](#toc_28)
  33 +---------------------
  34 +
  35 +----------------------------------------------
  36 +
  37 +<a name="gfm" />
  38 +GitLab Flavored Markdown (GFM)
  39 +==============================
  40 +For GitLab we developed something we call "GitLab Flavored Markdown" (GFM). It extends the standard Markdown in a few significant ways to add some useful functionality.
  41 +
  42 +You can use GFM in
  43 +
  44 +* commit messages
  45 +* comments
  46 +* wall posts
  47 +* issues
  48 +* merge requests
  49 +* milestones
  50 +* wiki pages
  51 +
  52 +<a name="newlines" />
  53 +Newlines
  54 +--------
  55 +The biggest difference that GFM introduces is in the handling of linebreaks. With traditional Markdown you can hard wrap paragraphs of text and they will be combined into a single paragraph. We find this to be the cause of a huge number of unintentional formatting errors. GFM treats newlines in paragraph-like content as real line breaks, which is probably what you intended.
  56 +
  57 +The next paragraph contains two phrases separated by a single newline character:
  58 +
  59 + Roses are red
  60 + Violets are blue
  61 +
  62 +Roses are red
  63 +Violets are blue
  64 +
  65 +<a name="underscores" />
  66 +Multiple underscores in words
  67 +-----------------------------
  68 +It is not reasonable to italicize just _part_ of a word, especially when you're dealing with code and names that often appear with multiple underscores. Therefore, GFM ignores multiple underscores in words.
  69 +
  70 + perform_complicated_task
  71 + do_this_and_do_that_and_another_thing
  72 +
  73 +perform_complicated_task
  74 +do_this_and_do_that_and_another_thing
  75 +
  76 +<a name="autolink" />
  77 +URL autolinking
  78 +---------------
  79 +GFM will autolink standard URLs you copy and paste into your text.
  80 +So if you want to link to a URL (instead of a textural link), you can simply put the URL in verbatim and it will be turned into a link to that URL.
  81 +
  82 + http://www.google.com
  83 +
  84 +http://www.google.com
  85 +
  86 +<a name="code"/>
  87 +## Code and Syntax Highlighting
  88 +
  89 +Blocks of code are either fenced by lines with three back-ticks <code>```</code>, or are indented with four spaces. Only the fenced code blocks support syntax highlighting.
  90 +
  91 +
  92 +```no-highlight
  93 +Inline `code` has `back-ticks around` it.
  94 +```
  95 +
  96 +Inline `code` has `back-ticks around` it.
  97 +
  98 +Example:
  99 +
  100 + ```javascript
  101 + var s = "JavaScript syntax highlighting";
  102 + alert(s);
  103 + ```
  104 +
  105 + ```python
  106 + def function():
  107 + #indenting works just fine in the fenced code block
  108 + s = "Python syntax highlighting"
  109 + print s
  110 + ```
  111 +
  112 + ```ruby
  113 + require 'redcarpet'
  114 + markdown = Redcarpet.new("Hello World!")
  115 + puts markdown.to_html
  116 + ```
  117 +
  118 + ```
  119 + No language indicated, so no syntax highlighting.
  120 + s = "There is no highlighting for this."
  121 + But let's throw in a <b>tag</b>.
  122 + ```
  123 +
  124 +becomes:
  125 +
  126 +```javascript
  127 +var s = "JavaScript syntax highlighting";
  128 +alert(s);
  129 +```
  130 +
  131 +```python
  132 +def function():
  133 + #indenting works just fine in the fenced code block
  134 + s = "Python syntax highlighting"
  135 + print s
  136 +```
  137 +
  138 +```ruby
  139 +require 'redcarpet'
  140 +markdown = Redcarpet.new("Hello World!")
  141 +puts markdown.to_html
  142 +```
  143 +
  144 +```
  145 +No language indicated, so no syntax highlighting.
  146 +s = "There is no highlighting for this."
  147 +But let's throw in a <b>tag</b>.
  148 +```
  149 +
  150 +<a name="emoji"/>
  151 +Emoji
  152 +-----
  153 +
  154 + Sometimes you want to be :cool: and add some :sparkles: to your :speech_balloon:. Well we have a :gift: for you:
  155 +
  156 + :exclamation: You can use emoji anywhere GFM is supported. :sunglasses:
  157 +
  158 + You can use it to point out a :bug: or warn about :monkey:patches. And if someone improves your really :snail: code, send them a :bouquet: or some :candy:. People will :heart: you for that.
  159 +
  160 + If you are :new: to this, don't be :fearful:. You can easily join the emoji :circus_tent:. All you need to do is to :book: up on the supported codes.
  161 +
  162 + Consult the [Emoji Cheat Sheet]( "http://www.emoji-cheat-sheet.com/") for a list of all supported emoji codes. :thumbsup:
  163 +
  164 +Sometimes you want to be :cool: and add some :sparkles: to your :speech_balloon:. Well we have a :gift: for you:
  165 +
  166 +:exclamation: You can use emoji anywhere GFM is supported. :sunglasses:
  167 +
  168 +You can use it to point out a :bug: or warn about :monkey:patches. And if someone improves your really :snail: code, send them a :bouquet: or some :candy:. People will :heart: you for that.
  169 +
  170 +If you are :new: to this, don't be :fearful:. You can easily join the emoji :circus_tent:. All you need to do is to :book: up on the supported codes.
  171 +
  172 +Consult the [Emoji Cheat Sheet]( "http://www.emoji-cheat-sheet.com/") for a list of all supported emoji codes. :thumbsup:
  173 +
  174 +<a name="special"/>
  175 +Special GitLab References
  176 +-----
  177 +
  178 +GFM recognized special references.
  179 +You can easily reference e.g. a team member, an issue, or a commit within a project.
  180 +GFM will turn that reference into a link so you can navigate between them easily.
  181 +
  182 +
  183 +GFM will recognize the following:
  184 +
  185 +* @foo : for team members
  186 +* #123 : for issues
  187 +* !123 : for merge requests
  188 +* $123 : for snippets
  189 +* 1234567 : for commits
  190 +* [file](path/to/file) : for file references
  191 +
  192 +<a name="standard"/>
  193 +
  194 +----------------------------------
  195 +# Standard Markdown
  196 +
  197 +----------------------------------
  198 +<a name="headers"/>
  199 +## Headers
  200 +
  201 +```no-highlight
  202 +# H1
  203 +## H2
  204 +### H3
  205 +#### H4
  206 +##### H5
  207 +###### H6
  208 +
  209 +Alternatively, for H1 and H2, an underline-ish style:
  210 +
  211 +Alt-H1
  212 +======
  213 +
  214 +Alt-H2
  215 +------
  216 +```
  217 +
  218 +# H1
  219 +## H2
  220 +### H3
  221 +#### H4
  222 +##### H5
  223 +###### H6
  224 +
  225 +Alternatively, for H1 and H2, an underline-ish style:
  226 +
  227 +Alt-H1
  228 +======
  229 +
  230 +Alt-H2
  231 +------
  232 +
  233 +<a name="emphasis"/>
  234 +## Emphasis
  235 +
  236 +```no-highlight
  237 +Emphasis, aka italics, with *asterisks* or _underscores_.
  238 +
  239 +Strong emphasis, aka bold, with **asterisks** or __underscores__.
  240 +
  241 +Combined emphasis with **asterisks and _underscores_**.
  242 +
  243 +Strikethrough uses two tildes. ~~Scratch this.~~
  244 +```
  245 +
  246 +Emphasis, aka italics, with *asterisks* or _underscores_.
  247 +
  248 +Strong emphasis, aka bold, with **asterisks** or __underscores__.
  249 +
  250 +Combined emphasis with **asterisks and _underscores_**.
  251 +
  252 +Strikethrough uses two tildes. ~~Scratch this.~~
  253 +
  254 +
  255 +<a name="lists"/>
  256 +## Lists
  257 +
  258 +```no-highlight
  259 +1. First ordered list item
  260 +2. Another item
  261 + * Unordered sub-list.
  262 +1. Actual numbers don't matter, just that it's a number
  263 + 1. Ordered sub-list
  264 +4. And another item.
  265 +
  266 + Some text that should be aligned with the above item.
  267 +
  268 +* Unordered list can use asterisks
  269 +- Or minuses
  270 ++ Or pluses
  271 +```
  272 +
  273 +1. First ordered list item
  274 +2. Another item
  275 + * Unordered sub-list.
  276 +1. Actual numbers don't matter, just that it's a number
  277 + 1. Ordered sub-list
  278 +4. And another item.
  279 +
  280 + Some text that should be aligned with the above item.
  281 +
  282 +* Unordered list can use asterisks
  283 +- Or minuses
  284 ++ Or pluses
  285 +
  286 +<a name="links"/>
  287 +## Links
  288 +
  289 +There are two ways to create links.
  290 +
  291 + [I'm an inline-style link](https://www.google.com)
  292 +
  293 + [I'm a reference-style link][Arbitrary case-insensitive reference text]
  294 +
  295 + [I'm a relative reference to a repository file](../blob/master/LICENSE)
  296 +
  297 + [You can use numbers for reference-style link definitions][1]
  298 +
  299 + Or leave it empty and use the [link text itself][]
  300 +
  301 + Some text to show that the reference links can follow later.
  302 +
  303 + [arbitrary case-insensitive reference text]: https://www.mozilla.org
  304 + [1]: http://slashdot.org
  305 + [link text itself]: http://www.reddit.com
  306 +
  307 +[I'm an inline-style link](https://www.google.com)
  308 +
  309 +[I'm a reference-style link][Arbitrary case-insensitive reference text]
  310 +
  311 +[I'm a relative reference to a repository file](../blob/master/LICENSE)
  312 +
  313 +[You can use numbers for reference-style link definitions][1]
  314 +
  315 +Or leave it empty and use the [link text itself][]
  316 +
  317 +Some text to show that the reference links can follow later.
  318 +
  319 +[arbitrary case-insensitive reference text]: https://www.mozilla.org
  320 +[1]: http://slashdot.org
  321 +[link text itself]: http://www.reddit.com
  322 +
  323 +<a name="images"/>
  324 +## Images
  325 +
  326 + Here's our logo (hover to see the title text):
  327 +
  328 + Inline-style:
  329 + ![alt text](/assets/logo-white.png "Logo Title Text 1")
  330 +
  331 + Reference-style:
  332 + ![alt text][logo]
  333 +
  334 + [logo]: /assets/logo-white.png "Logo Title Text 2"
  335 +
  336 +Here's our logo (hover to see the title text):
  337 +
  338 +Inline-style:
  339 +![alt text](/assets/logo-white.png "Logo Title Text 1")
  340 +
  341 +Reference-style:
  342 +![alt text][logo]
  343 +
  344 +[logo]: /assets/logo-white.png "Logo Title Text 2"
  345 +
  346 +<a name="blockquotes"/>
  347 +## Blockquotes
  348 +
  349 +```no-highlight
  350 +> Blockquotes are very handy in email to emulate reply text.
  351 +> This line is part of the same quote.
  352 +
  353 +Quote break.
  354 +
  355 +> This is a very long line that will still be quoted properly when it wraps. Oh boy let's keep writing to make sure this is long enough to actually wrap for everyone. Oh, you can *put* **Markdown** into a blockquote.
  356 +```
  357 +
  358 +> Blockquotes are very handy in email to emulate reply text.
  359 +> This line is part of the same quote.
  360 +
  361 +Quote break.
  362 +
  363 +> This is a very long line that will still be quoted properly when it wraps. Oh boy let's keep writing to make sure this is long enough to actually wrap for everyone. Oh, you can *put* **Markdown** into a blockquote.
  364 +
  365 +<a name="html"/>
  366 +## Inline HTML
  367 +
  368 +You can also use raw HTML in your Markdown, and it'll mostly work pretty well.
  369 +
  370 +```no-highlight
  371 +<dl>
  372 + <dt>Definition list</dt>
  373 + <dd>Is something people use sometimes.</dd>
  374 +
  375 + <dt>Markdown in HTML</dt>
  376 + <dd>Does *not* work **very** well. Use HTML <em>tags</em>.</dd>
  377 +</dl>
  378 +```
  379 +
  380 +<dl>
  381 + <dt>Definition list</dt>
  382 + <dd>Is something people use sometimes.</dd>
  383 +
  384 + <dt>Markdown in HTML</dt>
  385 + <dd>Does *not* work **very** well. Use HTML <em>tags</em>.</dd>
  386 +</dl>
  387 +
  388 +<a name="hr"/>
  389 +## Horizontal Rule
  390 +
  391 +```
  392 +Three or more...
  393 +
  394 +---
  395 +
  396 +Hyphens
  397 +
  398 +***
  399 +
  400 +Asterisks
  401 +
  402 +___
  403 +
  404 +Underscores
  405 +```
  406 +
  407 +Three or more...
  408 +
  409 +---
  410 +
  411 +Hyphens
  412 +
  413 +***
  414 +
  415 +Asterisks
  416 +
  417 +___
  418 +
  419 +Underscores
  420 +
  421 +<a name="lines"/>
  422 +## Line Breaks
  423 +
  424 +My basic recommendation for learning how line breaks work is to experiment and discover -- hit &lt;Enter&gt; once (i.e., insert one newline), then hit it twice (i.e., insert two newlines), see what happens. You'll soon learn to get what you want. "Markdown Toggle" is your friend.
  425 +
  426 +Here are some things to try out:
  427 +
  428 +```
  429 +Here's a line for us to start with.
  430 +
  431 +This line is separated from the one above by two newlines, so it will be a *separate paragraph*.
  432 +
  433 +This line is also a separate paragraph, but...
  434 +This line is only separated by a single newline, so it's a separate line in the *same paragraph*.
  435 +```
  436 +
  437 +Here's a line for us to start with.
  438 +
  439 +This line is separated from the one above by two newlines, so it will be a *separate paragraph*.
  440 +
  441 +This line is also begins a separate paragraph, but...
  442 +This line is only separated by a single newline, so it's a separate line in the *same paragraph*.
  443 +
  444 +------------
  445 +
  446 +<a name="references"/>
  447 +## References
  448 +
  449 +* This document leveraged heavily from the [Markdown-Cheatsheet](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet).
  450 +* The [Markdown Syntax Guide](http://daringfireball.net/projects/markdown/syntax) at Daring Fireball is an excellent resource for a detailed explanation of standard markdown.
  451 +* [Dillinger.io](http://dillinger.io) is a handy tool for testing standard markdown.
doc/update/5.1-to-5.2.md
@@ -52,17 +52,26 @@ sudo -u git -H bundle exec rake db:migrate RAILS_ENV=production @@ -52,17 +52,26 @@ sudo -u git -H bundle exec rake db:migrate RAILS_ENV=production
52 ### 6. Update Init script 52 ### 6. Update Init script
53 53
54 ```bash 54 ```bash
  55 +cd /home/git/gitlab
55 sudo rm /etc/init.d/gitlab 56 sudo rm /etc/init.d/gitlab
56 -sudo curl --output /etc/init.d/gitlab https://raw.github.com/gitlabhq/gitlabhq/5-2-stable/lib/support/init.d/gitlab 57 +sudo cp lib/support/init.d/gitlab /etc/init.d/gitlab
57 sudo chmod +x /etc/init.d/gitlab 58 sudo chmod +x /etc/init.d/gitlab
58 ``` 59 ```
59 60
60 -### 6. Start application 61 +### 7. Create uploads directory
  62 +
  63 +```bash
  64 +cd /home/git/gitlab
  65 +sudo -u git -H mkdir public/uploads
  66 +sudo chmod -R u+rwX public/uploads
  67 +```
  68 +
  69 +### 8. Start application
61 70
62 sudo service gitlab start 71 sudo service gitlab start
63 sudo service nginx restart 72 sudo service nginx restart
64 73
65 -### 7. Check application status 74 +### 9. Check application status
66 75
67 Check if GitLab and its environment are configured correctly: 76 Check if GitLab and its environment are configured correctly:
68 77
spec/routing/project_routing_spec.rb
@@ -237,7 +237,7 @@ end @@ -237,7 +237,7 @@ end
237 # project_snippet GET /:project_id/snippets/:id(.:format) snippets#show 237 # project_snippet GET /:project_id/snippets/:id(.:format) snippets#show
238 # PUT /:project_id/snippets/:id(.:format) snippets#update 238 # PUT /:project_id/snippets/:id(.:format) snippets#update
239 # DELETE /:project_id/snippets/:id(.:format) snippets#destroy 239 # DELETE /:project_id/snippets/:id(.:format) snippets#destroy
240 -describe Project::SnippetsController, "routing" do 240 +describe Projects::SnippetsController, "routing" do
241 it "to #raw" do 241 it "to #raw" do
242 get("/gitlabhq/snippets/1/raw").should route_to('projects/snippets#raw', project_id: 'gitlabhq', id: '1') 242 get("/gitlabhq/snippets/1/raw").should route_to('projects/snippets#raw', project_id: 'gitlabhq', id: '1')
243 end 243 end