mirror of
https://github.com/wahyd4/gitlabhq.git
synced 2026-08-22 11:06:10 +10:00
Merge branch 'master' into 8-3-stable
This commit is contained in:
@@ -1 +1 @@
|
||||
0.5.0
|
||||
0.5.1
|
||||
|
||||
@@ -251,7 +251,7 @@ group :development, :test do
|
||||
|
||||
gem 'capybara', '~> 2.4.0'
|
||||
gem 'capybara-screenshot', '~> 1.0.0'
|
||||
gem 'poltergeist', '~> 1.6.0'
|
||||
gem 'poltergeist', '~> 1.8.1'
|
||||
|
||||
gem 'teaspoon', '~> 1.0.0'
|
||||
gem 'teaspoon-jasmine', '~> 2.2.0'
|
||||
|
||||
+5
-5
@@ -405,7 +405,7 @@ GEM
|
||||
method_source (0.8.2)
|
||||
mime-types (1.25.1)
|
||||
mimemagic (0.3.0)
|
||||
mini_portile (0.6.2)
|
||||
mini_portile2 (2.0.0)
|
||||
minitest (5.7.0)
|
||||
mousetrap-rails (1.4.6)
|
||||
multi_json (1.11.2)
|
||||
@@ -420,8 +420,8 @@ GEM
|
||||
grape
|
||||
newrelic_rpm
|
||||
newrelic_rpm (3.9.4.245)
|
||||
nokogiri (1.6.6.4)
|
||||
mini_portile (~> 0.6.0)
|
||||
nokogiri (1.6.7)
|
||||
mini_portile2 (~> 2.0.0.rc2)
|
||||
nprogress-rails (0.1.6.7)
|
||||
oauth (0.4.7)
|
||||
oauth2 (1.0.0)
|
||||
@@ -488,7 +488,7 @@ GEM
|
||||
parser (2.2.3.0)
|
||||
ast (>= 1.1, < 3.0)
|
||||
pg (0.18.4)
|
||||
poltergeist (1.6.0)
|
||||
poltergeist (1.8.1)
|
||||
capybara (~> 2.1)
|
||||
cliver (~> 0.3.1)
|
||||
multi_json (~> 1.0)
|
||||
@@ -905,7 +905,7 @@ DEPENDENCIES
|
||||
org-ruby (~> 0.9.12)
|
||||
paranoia (~> 2.0)
|
||||
pg (~> 0.18.2)
|
||||
poltergeist (~> 1.6.0)
|
||||
poltergeist (~> 1.8.1)
|
||||
pry-rails
|
||||
quiet_assets (~> 1.0.2)
|
||||
rack-attack (~> 4.3.0)
|
||||
|
||||
@@ -18,7 +18,7 @@ class @IssuableContext
|
||||
|
||||
$('.issuable-affix').affix offset:
|
||||
top: ->
|
||||
@top = ($('.issuable-affix').offset().top - 60)
|
||||
@top = ($('.issuable-affix').offset().top - 70)
|
||||
bottom: ->
|
||||
@bottom = $('.footer').outerHeight(true)
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
|
||||
&.affix {
|
||||
position: fixed;
|
||||
top: 60px;
|
||||
top: 70px;
|
||||
margin-right: 35px;
|
||||
}
|
||||
}
|
||||
@@ -39,16 +39,9 @@
|
||||
section {
|
||||
border-right: 1px solid $border-white-light;
|
||||
|
||||
> .tab-content {
|
||||
.issuable-discussion {
|
||||
margin-right: 1px;
|
||||
}
|
||||
|
||||
.issue-discussion > .gray-content-block,
|
||||
> .gray-content-block {
|
||||
margin-top: 0;
|
||||
border-top: none;
|
||||
margin-right: -15px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -141,18 +141,6 @@ form.edit-issue {
|
||||
}
|
||||
}
|
||||
|
||||
.issue-closed-by-widget {
|
||||
padding: 16px 0;
|
||||
margin: 0px;
|
||||
}
|
||||
|
||||
.issue-form .select2-container {
|
||||
width: 250px !important;
|
||||
}
|
||||
|
||||
|
||||
.issue-discussion {
|
||||
.common-note-form {
|
||||
border-right: 1px solid $border-white-light;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,3 +1,2 @@
|
||||
.issue-closed-by-widget
|
||||
= icon('check')
|
||||
.issue-closed-by-widget.gray-content-block.second-block.white
|
||||
This issue will be closed automatically when merge request #{markdown(merge_requests_sentence(@closed_by_merge_requests), pipeline: :gfm)} is accepted.
|
||||
|
||||
@@ -5,8 +5,5 @@
|
||||
- else
|
||||
= link_to 'Close Issue', issue_path(@issue, issue: {state_event: :close}, status_only: true), method: :put, class: 'btn btn-grouped btn-close js-note-target-close', title: 'Close Issue'
|
||||
|
||||
.gray-content-block.second-block.oneline-block
|
||||
= render 'votes/votes_block', votable: @issue
|
||||
|
||||
#notes
|
||||
= render 'projects/notes/notes_with_form'
|
||||
|
||||
@@ -37,26 +37,30 @@
|
||||
Edit
|
||||
|
||||
.issue-details.issuable-details
|
||||
.detail-page-description.gray-content-block.second-block
|
||||
%h2.title
|
||||
= markdown escape_once(@issue.title), pipeline: :single_line
|
||||
%div
|
||||
- if @issue.description.present?
|
||||
.description{class: can?(current_user, :update_issue, @issue) ? 'js-task-list-container' : ''}
|
||||
.wiki
|
||||
= preserve do
|
||||
= markdown(@issue.description, cache_key: [@issue, "description"])
|
||||
%textarea.hidden.js-task-list-field
|
||||
= @issue.description
|
||||
|
||||
.merge-requests
|
||||
= render 'merge_requests'
|
||||
|
||||
.gray-content-block.second-block.oneline-block
|
||||
= render 'votes/votes_block', votable: @issue
|
||||
|
||||
- if @closed_by_merge_requests.present?
|
||||
= render 'projects/issues/closed_by_box'
|
||||
|
||||
.row
|
||||
%section.col-md-9
|
||||
.detail-page-description.gray-content-block
|
||||
%h2.title
|
||||
= markdown escape_once(@issue.title), pipeline: :single_line
|
||||
%div
|
||||
- if @issue.description.present?
|
||||
.description{class: can?(current_user, :update_issue, @issue) ? 'js-task-list-container' : ''}
|
||||
.wiki
|
||||
= preserve do
|
||||
= markdown(@issue.description, cache_key: [@issue, "description"])
|
||||
%textarea.hidden.js-task-list-field
|
||||
= @issue.description
|
||||
|
||||
.merge-requests
|
||||
= render 'merge_requests'
|
||||
|
||||
- if @closed_by_merge_requests.present?
|
||||
= render 'projects/issues/closed_by_box'
|
||||
.issue-discussion
|
||||
.issuable-discussion
|
||||
= render 'projects/issues/discussion'
|
||||
|
||||
%aside.col-md-3
|
||||
|
||||
@@ -5,7 +5,4 @@
|
||||
- if @merge_request.closed?
|
||||
= link_to 'Reopen', merge_request_path(@merge_request, merge_request: {state_event: :reopen }), method: :put, class: "btn btn-grouped btn-reopen reopen-mr-link js-note-target-reopen", title: "Reopen merge request"
|
||||
|
||||
.gray-content-block.second-block.oneline-block
|
||||
= render 'votes/votes_block', votable: @merge_request
|
||||
|
||||
#notes= render "projects/notes/notes_with_form"
|
||||
|
||||
@@ -8,79 +8,81 @@
|
||||
= render "projects/merge_requests/show/mr_title"
|
||||
|
||||
.merge-request-details.issuable-details
|
||||
.row
|
||||
%section.col-md-9
|
||||
= render "projects/merge_requests/show/mr_box"
|
||||
.append-bottom-default.mr-source-target.prepend-top-default
|
||||
- if @merge_request.open?
|
||||
.pull-right
|
||||
- if @merge_request.source_branch_exists?
|
||||
= link_to "#modal_merge_info", class: "btn btn-sm", "data-toggle" => "modal" do
|
||||
= icon('cloud-download fw')
|
||||
Check out branch
|
||||
= render "projects/merge_requests/show/mr_box"
|
||||
.append-bottom-default.mr-source-target.prepend-top-default
|
||||
- if @merge_request.open?
|
||||
.pull-right
|
||||
- if @merge_request.source_branch_exists?
|
||||
= link_to "#modal_merge_info", class: "btn btn-sm", "data-toggle" => "modal" do
|
||||
= icon('cloud-download fw')
|
||||
Check out branch
|
||||
|
||||
%span.dropdown
|
||||
%a.btn.btn-sm.dropdown-toggle{ data: {toggle: :dropdown} }
|
||||
= icon('download')
|
||||
Download as
|
||||
%span.caret
|
||||
%ul.dropdown-menu
|
||||
%li= link_to "Email Patches", merge_request_path(@merge_request, format: :patch)
|
||||
%li= link_to "Plain Diff", merge_request_path(@merge_request, format: :diff)
|
||||
.normal
|
||||
%span Request to merge
|
||||
%span.label-branch= source_branch_with_namespace(@merge_request)
|
||||
%span into
|
||||
= link_to namespace_project_commits_path(@project.namespace, @project, @merge_request.target_branch), class: "label-branch" do
|
||||
= @merge_request.target_branch
|
||||
%span.dropdown
|
||||
%a.btn.btn-sm.dropdown-toggle{ data: {toggle: :dropdown} }
|
||||
= icon('download')
|
||||
Download as
|
||||
%span.caret
|
||||
%ul.dropdown-menu
|
||||
%li= link_to "Email Patches", merge_request_path(@merge_request, format: :patch)
|
||||
%li= link_to "Plain Diff", merge_request_path(@merge_request, format: :diff)
|
||||
.normal
|
||||
%span Request to merge
|
||||
%span.label-branch= source_branch_with_namespace(@merge_request)
|
||||
%span into
|
||||
= link_to namespace_project_commits_path(@project.namespace, @project, @merge_request.target_branch), class: "label-branch" do
|
||||
= @merge_request.target_branch
|
||||
|
||||
= render "projects/merge_requests/show/how_to_merge"
|
||||
= render "projects/merge_requests/widget/show.html.haml"
|
||||
= render "projects/merge_requests/show/how_to_merge"
|
||||
= render "projects/merge_requests/widget/show.html.haml"
|
||||
|
||||
- if @merge_request.open? && @merge_request.source_branch_exists? && @merge_request.can_be_merged? && @merge_request.can_be_merged_by?(current_user)
|
||||
.light.prepend-top-default
|
||||
You can also accept this merge request manually using the
|
||||
= succeed '.' do
|
||||
= link_to "command line", "#modal_merge_info", class: "how_to_merge_link vlink", title: "How To Merge", "data-toggle" => "modal"
|
||||
- if @merge_request.open? && @merge_request.source_branch_exists? && @merge_request.can_be_merged? && @merge_request.can_be_merged_by?(current_user)
|
||||
.light.prepend-top-default
|
||||
You can also accept this merge request manually using the
|
||||
= succeed '.' do
|
||||
= link_to "command line", "#modal_merge_info", class: "how_to_merge_link vlink", title: "How To Merge", "data-toggle" => "modal"
|
||||
|
||||
- if @commits.present?
|
||||
%ul.merge-request-tabs.center-top-menu.no-top.no-bottom
|
||||
%li.notes-tab
|
||||
= link_to namespace_project_merge_request_path(@project.namespace, @project, @merge_request), data: {target: 'div#notes', action: 'notes', toggle: 'tab'} do
|
||||
Discussion
|
||||
%span.badge= @merge_request.mr_and_commit_notes.user.count
|
||||
%li.commits-tab
|
||||
= link_to commits_namespace_project_merge_request_path(@project.namespace, @project, @merge_request), data: {target: 'div#commits', action: 'commits', toggle: 'tab'} do
|
||||
Commits
|
||||
%span.badge= @commits.size
|
||||
- if @ci_commit
|
||||
%li.builds-tab
|
||||
= link_to builds_namespace_project_merge_request_path(@project.namespace, @project, @merge_request), data: {target: '#builds', action: 'builds', toggle: 'tab'} do
|
||||
Builds
|
||||
%span.badge= @statuses.size
|
||||
%li.diffs-tab
|
||||
= link_to diffs_namespace_project_merge_request_path(@project.namespace, @project, @merge_request), data: {target: 'div#diffs', action: 'diffs', toggle: 'tab'} do
|
||||
Changes
|
||||
%span.badge= @merge_request.diffs.size
|
||||
- if @commits.present?
|
||||
%ul.merge-request-tabs.center-top-menu.no-top.no-bottom
|
||||
%li.notes-tab
|
||||
= link_to namespace_project_merge_request_path(@project.namespace, @project, @merge_request), data: {target: 'div#notes', action: 'notes', toggle: 'tab'} do
|
||||
Discussion
|
||||
%span.badge= @merge_request.mr_and_commit_notes.user.count
|
||||
%li.commits-tab
|
||||
= link_to commits_namespace_project_merge_request_path(@project.namespace, @project, @merge_request), data: {target: 'div#commits', action: 'commits', toggle: 'tab'} do
|
||||
Commits
|
||||
%span.badge= @commits.size
|
||||
- if @ci_commit
|
||||
%li.builds-tab
|
||||
= link_to builds_namespace_project_merge_request_path(@project.namespace, @project, @merge_request), data: {target: '#builds', action: 'builds', toggle: 'tab'} do
|
||||
Builds
|
||||
%span.badge= @statuses.size
|
||||
%li.diffs-tab
|
||||
= link_to diffs_namespace_project_merge_request_path(@project.namespace, @project, @merge_request), data: {target: 'div#diffs', action: 'diffs', toggle: 'tab'} do
|
||||
Changes
|
||||
%span.badge= @merge_request.diffs.size
|
||||
|
||||
.tab-content
|
||||
#notes.notes.tab-pane.voting_notes
|
||||
= render "projects/merge_requests/discussion"
|
||||
#commits.commits.tab-pane
|
||||
- # This tab is always loaded via AJAX
|
||||
#builds.builds.tab-pane
|
||||
- # This tab is always loaded via AJAX
|
||||
#diffs.diffs.tab-pane
|
||||
- # This tab is always loaded via AJAX
|
||||
.tab-content
|
||||
#notes.notes.tab-pane.voting_notes
|
||||
.gray-content-block.second-block.oneline-block
|
||||
= render 'votes/votes_block', votable: @merge_request
|
||||
|
||||
.mr-loading-status
|
||||
= spinner
|
||||
.row
|
||||
%section.col-md-9
|
||||
.issuable-discussion
|
||||
= render "projects/merge_requests/discussion"
|
||||
%aside.col-md-3
|
||||
= render 'shared/issuable/sidebar', issuable: @merge_request
|
||||
= render 'shared/show_aside'
|
||||
|
||||
%aside.col-md-3
|
||||
= render 'shared/issuable/sidebar', issuable: @merge_request
|
||||
|
||||
= render 'shared/show_aside'
|
||||
#commits.commits.tab-pane
|
||||
- # This tab is always loaded via AJAX
|
||||
#builds.builds.tab-pane
|
||||
- # This tab is always loaded via AJAX
|
||||
#diffs.diffs.tab-pane
|
||||
- # This tab is always loaded via AJAX
|
||||
|
||||
.mr-loading-status
|
||||
= spinner
|
||||
|
||||
:javascript
|
||||
var merge_request;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
.detail-page-description.gray-content-block.middle-block
|
||||
.detail-page-description.gray-content-block.second-block
|
||||
%h2.title
|
||||
= markdown escape_once(@merge_request.title), pipeline: :single_line
|
||||
|
||||
|
||||
@@ -26,7 +26,8 @@ class MigrateCiToProject < ActiveRecord::Migration
|
||||
|
||||
def migrate_project_column(column, new_column = nil)
|
||||
new_column ||= column
|
||||
subquery = "SELECT ci_projects.#{column} FROM ci_projects WHERE projects.id = ci_projects.gitlab_id"
|
||||
subquery = "SELECT ci_projects.#{column} FROM ci_projects WHERE projects.id = ci_projects.gitlab_id " \
|
||||
'ORDER BY ci_projects.updated_at DESC LIMIT 1'
|
||||
execute("UPDATE projects SET #{new_column}=(#{subquery}) WHERE (#{subquery}) IS NOT NULL")
|
||||
end
|
||||
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
# Using Docker Images
|
||||
|
||||
GitLab CI in conjuction with [GitLab Runner](../runners/README.md) can use
|
||||
GitLab CI in conjunction with [GitLab Runner](../runners/README.md) can use
|
||||
[Docker Engine](https://www.docker.com/) to test and build any application.
|
||||
|
||||
Docker is an open-source project that allows you to use predefined images to
|
||||
run applications in independent "containers" that are run within a single Linux
|
||||
instance. [Docker Hub][hub] has a rich database of prebuilt images that can be
|
||||
instance. [Docker Hub][hub] has a rich database of pre-built images that can be
|
||||
used to test and build your applications.
|
||||
|
||||
Docker, when used with GitLab CI, runs each build in a separate and isolated
|
||||
@@ -136,6 +136,24 @@ Look for the `[runners.docker]` section:
|
||||
The image and services defined this way will be added to all builds run by
|
||||
that runner.
|
||||
|
||||
## Define an image from a private Docker registry
|
||||
|
||||
Starting with GitLab Runner 0.6.0, you are able to define images located to
|
||||
private registries that could also require authentication.
|
||||
|
||||
All you have to do is be explicit on the image definition in `.gitlab-ci.yml`.
|
||||
|
||||
```yaml
|
||||
image: my.registry.tld:5000/namepace/image:tag
|
||||
```
|
||||
|
||||
In the example above, GitLab Runner will look at `my.registry.tld:5000` for the
|
||||
image `namespace/image:tag`.
|
||||
|
||||
If the repository is private you need to authenticate your GitLab Runner in the
|
||||
registry. Learn how to do that on
|
||||
[GitLab Runner's documentation][runner-priv-reg].
|
||||
|
||||
## Accessing the services
|
||||
|
||||
Let's say that you need a Wordpress instance to test some API integration with
|
||||
@@ -258,3 +276,4 @@ creation.
|
||||
[tutum/wordpress]: https://registry.hub.docker.com/u/tutum/wordpress/
|
||||
[postgres-hub]: https://registry.hub.docker.com/u/library/postgres/
|
||||
[mysql-hub]: https://registry.hub.docker.com/u/library/mysql/
|
||||
[runner-priv-reg]: https://gitlab.com/gitlab-org/gitlab-ci-multi-runner/blob/master/docs/configuration/advanced-configuration.md#using-a-private-docker-registry
|
||||
|
||||
@@ -348,7 +348,7 @@ GitLab Shell is an SSH access and repository management software developed speci
|
||||
cd /home/git
|
||||
sudo -u git -H git clone https://gitlab.com/gitlab-org/gitlab-workhorse.git
|
||||
cd gitlab-workhorse
|
||||
sudo -u git -H git checkout 0.5.0
|
||||
sudo -u git -H git checkout 0.5.1
|
||||
sudo -u git -H make
|
||||
|
||||
### Initialize Database and Activate Advanced Features
|
||||
|
||||
@@ -78,7 +78,7 @@ which should already be on your system from GitLab 8.1.
|
||||
```bash
|
||||
cd /home/git/gitlab-workhorse
|
||||
sudo -u git -H git fetch --all
|
||||
sudo -u git -H git checkout 0.5.0
|
||||
sudo -u git -H git checkout 0.5.1
|
||||
sudo -u git -H make
|
||||
```
|
||||
|
||||
|
||||
@@ -41,7 +41,8 @@ class Spinach::Features::ProjectForkedMergeRequests < Spinach::FeatureSteps
|
||||
|
||||
click_button "Compare branches and continue"
|
||||
|
||||
expect(page).to have_content "New Merge Request"
|
||||
expect(page).to have_css("h3.page-title", text: "New Merge Request")
|
||||
|
||||
fill_in "merge_request_title", with: "Merge Request On Forked Project"
|
||||
end
|
||||
|
||||
|
||||
@@ -166,7 +166,7 @@ module SharedDiffNote
|
||||
end
|
||||
|
||||
step 'I should see add a diff comment button' do
|
||||
expect(page).to have_css('.js-add-diff-note-button', visible: true)
|
||||
expect(page).to have_css('.js-add-diff-note-button')
|
||||
end
|
||||
|
||||
step 'I should see an empty diff comment form' do
|
||||
|
||||
Reference in New Issue
Block a user