Merge branch 'master' into readable-doc-readme
Conflicts: doc/README.md
This commit is contained in:
commit
b8ea26f7a6
|
@ -6,6 +6,7 @@ v 6.8.0
|
|||
- Drop all tables before restoring a Postgres backup
|
||||
- Make the repository downloads path configurable
|
||||
- Create branches via API (sponsored by O'Reilly Media)
|
||||
- Changed permission of gitlab-satellites directory not to be world accessible
|
||||
|
||||
v 6.7.2
|
||||
- Fix upgrader script
|
||||
|
|
2
Gemfile
2
Gemfile
|
@ -12,8 +12,6 @@ gem "rails", "~> 4.0.0"
|
|||
|
||||
gem "protected_attributes"
|
||||
gem 'rails-observers'
|
||||
gem 'actionpack-page_caching'
|
||||
gem 'actionpack-action_caching'
|
||||
|
||||
# Default values for AR models
|
||||
gem "default_value_for", "~> 3.0.0"
|
||||
|
|
|
@ -27,10 +27,6 @@ GEM
|
|||
erubis (~> 2.7.0)
|
||||
rack (~> 1.5.2)
|
||||
rack-test (~> 0.6.2)
|
||||
actionpack-action_caching (1.1.0)
|
||||
actionpack (>= 4.0.0, < 5.0)
|
||||
actionpack-page_caching (1.0.2)
|
||||
actionpack (>= 4.0.0, < 5)
|
||||
activemodel (4.0.3)
|
||||
activesupport (= 4.0.3)
|
||||
builder (~> 3.1.0)
|
||||
|
@ -567,8 +563,6 @@ PLATFORMS
|
|||
|
||||
DEPENDENCIES
|
||||
ace-rails-ap
|
||||
actionpack-action_caching
|
||||
actionpack-page_caching
|
||||
acts-as-taggable-on
|
||||
annotate (~> 2.6.0.beta2)
|
||||
asciidoctor
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
* This is a manifest file that'll automatically include all the stylesheets available in this directory
|
||||
* and any sub-directories. You're free to add application-wide styles to this file and they'll appear at
|
||||
* the top of the compiled file, but it's generally better to create a new file per style scope.
|
||||
*= require jquery.ui.gitlab
|
||||
*= require jquery.ui.datepicker
|
||||
*= require jquery.atwho
|
||||
*= require select2
|
||||
*= require highlightjs.min
|
||||
|
@ -43,6 +43,7 @@
|
|||
@import "generic/forms.scss";
|
||||
@import "generic/selects.scss";
|
||||
@import "generic/highlight.scss";
|
||||
@import "generic/jquery.scss";
|
||||
|
||||
/**
|
||||
* Page specific styles (issues, projects etc):
|
||||
|
|
|
@ -0,0 +1,20 @@
|
|||
.ui-widget {
|
||||
font-family: $regular_font;
|
||||
font-size: $font-size-base;
|
||||
|
||||
&.ui-datepicker-inline {
|
||||
border: 1px solid #DDD;
|
||||
padding: 10px;
|
||||
width: 270px;
|
||||
|
||||
.ui-datepicker-header {
|
||||
background: #EEE;
|
||||
border-color: #DDD;
|
||||
}
|
||||
|
||||
.ui-datepicker-calendar td a {
|
||||
padding: 5px;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,257 +0,0 @@
|
|||
/* Interaction Cues
|
||||
----------------------------------*/
|
||||
.ui-state-disabled { cursor: default !important; }
|
||||
|
||||
|
||||
/* Icons
|
||||
----------------------------------*/
|
||||
|
||||
/* states and images */
|
||||
.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
|
||||
|
||||
|
||||
/* Misc visuals
|
||||
----------------------------------*/
|
||||
|
||||
/* Overlays */
|
||||
.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
|
||||
|
||||
|
||||
/*
|
||||
* jQuery UI CSS Framework 1.8.7
|
||||
*
|
||||
* Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
|
||||
* Dual licensed under the MIT or GPL Version 2 licenses.
|
||||
* http://jquery.org/license
|
||||
*
|
||||
* http://docs.jquery.com/UI/Theming/API
|
||||
*
|
||||
* To view and modify this theme, visit http://jqueryui.com/themeroller/?ctl=themeroller
|
||||
*/
|
||||
|
||||
|
||||
/* Component containers
|
||||
----------------------------------*/
|
||||
.ui-widget { font-family: Arial,sans-serif; font-size: 1.1em; }
|
||||
.ui-widget .ui-widget { font-size: 1em; }
|
||||
.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Arial,sans-serif; font-size: 1em; }
|
||||
.ui-widget-content { border: 1px solid #CCC; background: #ffffff; color: #4F4F4F; }
|
||||
.ui-widget-content a { color: #4F4F4F; }
|
||||
.ui-widget-header { border: 1px solid #B6B6B6; color: #4F4F4F; font-weight: bold; }
|
||||
.ui-widget-header {
|
||||
background: #ededed url(bg_fallback.png) 0 0 repeat-x; /* Old browsers */
|
||||
background: -moz-linear-gradient(top, #ededed 0%, #c4c4c4 100%); /* FF3.6+ */
|
||||
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ededed), color-stop(100%,#c4c4c4)); /* Chrome,Safari4+ */
|
||||
background: -webkit-linear-gradient(top, #ededed 0%,#c4c4c4 100%); /* Chrome10+,Safari5.1+ */
|
||||
background: -o-linear-gradient(top, #ededed 0%,#c4c4c4 100%); /* Opera11.10+ */
|
||||
background: -ms-linear-gradient(top, #ededed 0%,#c4c4c4 100%); /* IE10+ */
|
||||
background: linear-gradient(top, #ededed 0%,#c4c4c4 100%); /* W3C */
|
||||
}
|
||||
.ui-widget-header a { color: #4F4F4F; }
|
||||
|
||||
/* Interaction states
|
||||
----------------------------------*/
|
||||
.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #B6B6B6; font-weight: normal; color: #4F4F4F; }
|
||||
.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default {
|
||||
background: #ededed url(bg_fallback.png) 0 0 repeat-x; /* Old browsers */
|
||||
background: -moz-linear-gradient(top, #ededed 0%, #c4c4c4 100%); /* FF3.6+ */
|
||||
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ededed), color-stop(100%,#c4c4c4)); /* Chrome,Safari4+ */
|
||||
background: -webkit-linear-gradient(top, #ededed 0%,#c4c4c4 100%); /* Chrome10+,Safari5.1+ */
|
||||
background: -o-linear-gradient(top, #ededed 0%,#c4c4c4 100%); /* Opera11.10+ */
|
||||
background: -ms-linear-gradient(top, #ededed 0%,#c4c4c4 100%); /* IE10+ */
|
||||
background: linear-gradient(top, #ededed 0%,#c4c4c4 100%); /* W3C */
|
||||
-webkit-box-shadow: 0 1px 0 rgba(255,255,255,0.6) inset;
|
||||
-moz-box-shadow: 0 1px 0 rgba(255,255,255,0.6) inset;
|
||||
box-shadow: 0 1px 0 rgba(255,255,255,0.6) inset;
|
||||
}
|
||||
.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #4F4F4F; text-decoration: none; }
|
||||
.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #9D9D9D; font-weight: normal; color: #313131; }
|
||||
.ui-state-hover a, .ui-state-hover a:hover { color: #313131; text-decoration: none; }
|
||||
.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active {
|
||||
outline: none;
|
||||
color: #1c4257; border: 1px solid #7096ab;
|
||||
background: #ededed url(bg_fallback.png) 0 -50px repeat-x; /* Old browsers */
|
||||
background: -moz-linear-gradient(top, #b9e0f5 0%, #92bdd6 100%); /* FF3.6+ */
|
||||
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#b9e0f5), color-stop(100%,#92bdd6)); /* Chrome,Safari4+ */
|
||||
background: -webkit-linear-gradient(top, #b9e0f5 0%,#92bdd6 100%); /* Chrome10+,Safari5.1+ */
|
||||
background: -o-linear-gradient(top, #b9e0f5 0%,#92bdd6 100%); /* Opera11.10+ */
|
||||
background: -ms-linear-gradient(top, #b9e0f5 0%,#92bdd6 100%); /* IE10+ */
|
||||
background: linear-gradient(top, #b9e0f5 0%,#92bdd6 100%); /* W3C */
|
||||
-webkit-box-shadow: none;
|
||||
-moz-box-shadow: none;
|
||||
box-shadow: none;
|
||||
}
|
||||
.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #313131; text-decoration: none; }
|
||||
.ui-widget :active { outline: none; }
|
||||
|
||||
/* Interaction Cues
|
||||
----------------------------------*/
|
||||
.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight { border: 1px solid #d2dbf4; background: #f4f8fd; color: #0d2054; -moz-border-radius: 0 !important; -webkit-border-radius: 0 !important; border-radius: 0 !important; }
|
||||
.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; }
|
||||
.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error { border: 1px solid #e2d0d0; background: #fcf0f0; color: #280b0b; -moz-border-radius: 0 !important; -webkit-border-radius: 0 !important; border-radius: 0 !important; }
|
||||
.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a; }
|
||||
.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a; }
|
||||
.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }
|
||||
.ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
|
||||
.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
|
||||
|
||||
/* Icons
|
||||
----------------------------------*/
|
||||
|
||||
/* states and images */
|
||||
.ui-icon { width: 16px; height: 16px; background-image: url(ui-icons_222222_256x240.png); }
|
||||
.ui-widget-content .ui-icon {background-image: url(ui-icons_222222_256x240.png); }
|
||||
.ui-widget-header .ui-icon {background-image: url(ui-icons_222222_256x240.png); }
|
||||
.ui-state-default .ui-icon { background-image: url(ui-icons_454545_256x240.png); }
|
||||
.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(ui-icons_454545_256x240.png); }
|
||||
.ui-state-active .ui-icon {background-image: url(ui-icons_454545_256x240.png); }
|
||||
.ui-state-highlight .ui-icon {background-image: url(ui-icons_454545_256x240.png); }
|
||||
.ui-state-error .ui-icon, .ui-state-error-text .ui-icon { background: url(icon_sprite.png) -16px 0 no-repeat !important; }
|
||||
.ui-state-highlight .ui-icon, .ui-state-error .ui-icon { margin-top: -1px; }
|
||||
|
||||
|
||||
/* Misc visuals
|
||||
----------------------------------*/
|
||||
|
||||
/* Overlays */
|
||||
.ui-widget-overlay { background: #262b33; opacity: .70;filter:Alpha(Opacity=70); }
|
||||
.ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #000000; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }
|
||||
/*
|
||||
* jQuery UI Selectable 1.8.7
|
||||
*
|
||||
* Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
|
||||
* Dual licensed under the MIT or GPL Version 2 licenses.
|
||||
* http://jquery.org/license
|
||||
*
|
||||
* http://docs.jquery.com/UI/Selectable#theming
|
||||
*/
|
||||
.ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; }
|
||||
/*
|
||||
* jQuery UI Autocomplete 1.8.7
|
||||
*
|
||||
* Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
|
||||
* Dual licensed under the MIT or GPL Version 2 licenses.
|
||||
* http://jquery.org/license
|
||||
*
|
||||
* http://docs.jquery.com/UI/Autocomplete#theming
|
||||
*/
|
||||
.ui-autocomplete {
|
||||
position: absolute; cursor: default; z-index: 3;
|
||||
-moz-border-radius: 0;
|
||||
-webkit-border-radius: 0;
|
||||
border-radius: 0;
|
||||
-moz-box-shadow: 0 1px 5px rgba(0,0,0,0.3);
|
||||
-webkit-box-shadow: 0 1px 5px rgba(0,0,0,0.3);
|
||||
box-shadow: 0 1px 5px rgba(0,0,0,0.3);
|
||||
}
|
||||
|
||||
/* workarounds */
|
||||
* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
|
||||
|
||||
/*
|
||||
* jQuery UI Menu 1.8.7
|
||||
*
|
||||
* Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
|
||||
* Dual licensed under the MIT or GPL Version 2 licenses.
|
||||
* http://jquery.org/license
|
||||
*
|
||||
* http://docs.jquery.com/UI/Menu#theming
|
||||
*/
|
||||
.ui-menu {
|
||||
list-style:none;
|
||||
padding: 1px;
|
||||
margin: 0;
|
||||
display:block;
|
||||
float: left;
|
||||
}
|
||||
.ui-menu .ui-menu {
|
||||
margin-top: -3px;
|
||||
}
|
||||
.ui-menu .ui-menu-item {
|
||||
margin:0;
|
||||
padding: 0;
|
||||
zoom: 1;
|
||||
float: left;
|
||||
clear: left;
|
||||
width: 100%;
|
||||
}
|
||||
.ui-menu .ui-menu-item a {
|
||||
text-decoration:none;
|
||||
display:block;
|
||||
padding:.2em .4em;
|
||||
line-height:1.5;
|
||||
zoom:1;
|
||||
color: #666;
|
||||
font-size: 13px;
|
||||
}
|
||||
.ui-menu .ui-menu-item a.ui-state-hover,
|
||||
.ui-menu .ui-menu-item a.ui-state-active {
|
||||
font-weight: normal;
|
||||
margin: -1px;
|
||||
background: #D9EDF7;
|
||||
color: #3A89A3;
|
||||
text-shadow: 0px 1px 1px #fff;
|
||||
border: none;
|
||||
border: 1px solid #ADE;
|
||||
cursor: pointer;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
/*
|
||||
* jQuery UI Datepicker 1.8.7
|
||||
*
|
||||
* Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
|
||||
* Dual licensed under the MIT or GPL Version 2 licenses.
|
||||
* http://jquery.org/license
|
||||
*
|
||||
* http://docs.jquery.com/UI/Datepicker#theming
|
||||
*/
|
||||
.ui-datepicker {
|
||||
width: 17em;
|
||||
padding: 0;
|
||||
display: none;
|
||||
border-color: #DDDDDD;
|
||||
border: none;
|
||||
box-shadow: none;
|
||||
}
|
||||
.ui-datepicker .ui-datepicker-header {
|
||||
position:relative;
|
||||
padding:.35em 0;
|
||||
border: none;
|
||||
border-bottom: 1px solid #B6B6B6;
|
||||
-moz-border-radius: 0;
|
||||
-webkit-border-radius: 0;
|
||||
border-radius: 0;
|
||||
margin-bottom: 10px;
|
||||
border: 1px solid #bbb;
|
||||
-webkit-box-shadow: 0 0 0 3px #F1F1F1;
|
||||
-moz-box-shadow: 0 0 0 3px #f1f1f1;
|
||||
-ms-box-shadow: 0 0 0 3px #f1f1f1;
|
||||
-o-box-shadow: 0 0 0 3px #f1f1f1;
|
||||
box-shadow: 0 0 0 3px #F1F1F1;
|
||||
}
|
||||
|
||||
.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 6px; width: 1.8em; height: 1.8em; }
|
||||
.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { border: 1px none; }
|
||||
.ui-datepicker .ui-datepicker-prev { left:2px; }
|
||||
.ui-datepicker .ui-datepicker-next { right:2px; }
|
||||
.ui-datepicker .ui-datepicker-prev span { background-position: 0px -32px !important; }
|
||||
.ui-datepicker .ui-datepicker-next span { background-position: -16px -32px !important; }
|
||||
.ui-datepicker .ui-datepicker-prev-hover span { background-position: 0px -48px !important; }
|
||||
.ui-datepicker .ui-datepicker-next-hover span { background-position: -16px -48px !important; }
|
||||
.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; background: url(icon_sprite.png) no-repeat; }
|
||||
.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; font-size: 12px; text-shadow: 0 1px 0 rgba(255,255,255,0.6); }
|
||||
.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }
|
||||
.ui-datepicker select.ui-datepicker-month-year {width: 100%;}
|
||||
.ui-datepicker select.ui-datepicker-month,
|
||||
.ui-datepicker select.ui-datepicker-year { width: 49%;}
|
||||
.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
|
||||
.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; }
|
||||
.ui-datepicker td { border: 0; padding: 1px; line-height: 24px; background-color: #FFF!important; }
|
||||
.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
|
||||
.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
|
||||
.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
|
||||
.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
|
||||
.ui-datepicker table .ui-state-highlight { border-color: #ADE; }
|
||||
.ui-datepicker-calendar .ui-state-default { background: transparent; border-color: #FFF; }
|
||||
.ui-datepicker-calendar .ui-state-active { background: #D9EDF7; border-color: #ADE; color: #3A89A3; font-weight: bold; text-shadow: 0 1px 1px #fff; }
|
|
@ -1,2 +1,3 @@
|
|||
/** Typo **/
|
||||
$monospace_font: 'Menlo', 'Liberation Mono', 'Consolas', 'Courier New', 'andale mono', 'lucida console', monospace;
|
||||
$regular_font: "Helvetica Neue", Helvetica, Arial, sans-serif;
|
||||
|
|
|
@ -20,7 +20,7 @@ module MergeRequestsHelper
|
|||
target_project_id: target_project.id,
|
||||
source_branch: event.branch_name,
|
||||
target_branch: target_project.repository.root_ref,
|
||||
title: event.branch_name.humanize
|
||||
title: event.branch_name.titleize.humanize
|
||||
}
|
||||
end
|
||||
|
||||
|
|
|
@ -20,6 +20,11 @@
|
|||
= form_tag project_issues_path(@project), method: :get, id: "issue_search_form", class: 'pull-left issue-search-form' do
|
||||
.append-right-10.hidden-xs.hidden-sm
|
||||
= search_field_tag :issue_search, nil, { placeholder: 'Filter by title or description', class: 'form-control issue_search search-text-input input-mn-300' }
|
||||
= hidden_field_tag :state, params['state']
|
||||
= hidden_field_tag :scope, params['scope']
|
||||
= hidden_field_tag :assignee_id, params['assignee_id']
|
||||
= hidden_field_tag :milestone_id, params['milestone_id']
|
||||
= hidden_field_tag :label_id, params['label_id']
|
||||
- if can? current_user, :write_issue, @project
|
||||
= link_to new_project_issue_path(@project, issue: { assignee_id: params[:assignee_id], milestone_id: params[:milestone_id]}), class: "btn btn-new pull-left", title: "New Issue", id: "new_issue_link" do
|
||||
%i.icon-plus
|
||||
|
|
|
@ -3,5 +3,5 @@
|
|||
var mrTitle = $('#merge_request_title');
|
||||
|
||||
if(mrTitle.val().length == 0) {
|
||||
mrTitle.val("#{params[:ref].humanize}");
|
||||
mrTitle.val("#{params[:ref].titleize.humanize}");
|
||||
}
|
||||
|
|
|
@ -64,6 +64,7 @@ module Gitlab
|
|||
config.assets.enabled = true
|
||||
config.assets.paths << Emoji.images_path
|
||||
config.assets.precompile << "emoji/*.png"
|
||||
config.assets.precompile << "print.css"
|
||||
|
||||
# Version of your assets, change this if you want to expire all your assets
|
||||
config.assets.version = '1.0'
|
||||
|
|
|
@ -202,6 +202,7 @@ You can change `6-6-stable` to `master` if you want the *bleeding edge* version,
|
|||
|
||||
# Create directory for satellites
|
||||
sudo -u git -H mkdir /home/git/gitlab-satellites
|
||||
sudo chmod o-rwx /home/git/gitlab-satellites
|
||||
|
||||
# Create directories for sockets/pids and make sure GitLab can write to them
|
||||
sudo -u git -H mkdir tmp/pids/
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
+ [Workflow](workflow/workflow.md)
|
||||
+ [Project Features](workflow/project_features.md)
|
|
@ -0,0 +1,35 @@
|
|||
When in a Project -> Settings, you will find Features on the bottom of the page that you can toggle.
|
||||
Below you will find a more elaborate explanation of each of these.
|
||||
|
||||
|
||||
## Issues
|
||||
|
||||
Issues is a really powerful, but lightweight issue tracking system.
|
||||
You can make tickets, assign them to people, file them under milestones, order them with labels and have discussion in them.
|
||||
They integrate deeply into GitLab and are easily referenced from anywhere by using # and the issuenumber.
|
||||
At GitLab.com, we use this for all our project management needs.
|
||||
|
||||
## Merge Requests
|
||||
|
||||
Using a merge request, you can review and discuss code before it is merged in the branch of your code.
|
||||
As with issues, it can be assigned; people, issues, etc. can be refereced; milestones attached.
|
||||
We see it as an integral part of working together on code and couldn't work without it.
|
||||
|
||||
|
||||
## Wiki
|
||||
|
||||
This is a separate system for documentation, built right into GitLab.
|
||||
It is source controlled and is very convenient if you don't want to keep you documentation in your source code, but you do want to keep it in your GitLab project.
|
||||
|
||||
|
||||
## Wall
|
||||
|
||||
For simple, project specific conversations, the wall can be used.
|
||||
It's very lightweight and simple and works well if you're not interested in using issues, but still want to occasionally communicate within a project.
|
||||
|
||||
|
||||
## Snippets
|
||||
|
||||
Snippets are little bits of code or text.
|
||||
This is a nice place to put code or text that is used semi-regularly within the project, but does not belong in source control.
|
||||
For example, a specific config file that is used by > the team that is only valid for the people that work on the code.
|
|
@ -342,6 +342,7 @@ namespace :gitlab do
|
|||
check_repo_base_is_not_symlink
|
||||
check_repo_base_user_and_group
|
||||
check_repo_base_permissions
|
||||
check_satellites_permissions
|
||||
check_update_hook_is_up_to_date
|
||||
check_repos_update_hooks_is_link
|
||||
check_gitlab_shell_self_test
|
||||
|
@ -443,6 +444,29 @@ namespace :gitlab do
|
|||
end
|
||||
end
|
||||
|
||||
def check_satellites_permissions
|
||||
print "Satellites access is drwxr-x---? ... "
|
||||
|
||||
satellites_path = Gitlab.config.satellites.path
|
||||
unless File.exists?(satellites_path)
|
||||
puts "can't check because of previous errors".magenta
|
||||
return
|
||||
end
|
||||
|
||||
if File.stat(satellites_path).mode.to_s(8).ends_with?("0750")
|
||||
puts "yes".green
|
||||
else
|
||||
puts "no".red
|
||||
try_fixing_it(
|
||||
"sudo chmod u+rwx,g+rx,o-rwx #{satellites_path}",
|
||||
)
|
||||
for_more_information(
|
||||
see_installation_guide_section "GitLab"
|
||||
)
|
||||
fix_and_rerun
|
||||
end
|
||||
end
|
||||
|
||||
def check_repo_base_user_and_group
|
||||
gitlab_shell_ssh_user = Gitlab.config.gitlab_shell.ssh_user
|
||||
gitlab_shell_owner_group = Gitlab.config.gitlab_shell.owner_group
|
||||
|
|
Loading…
Reference in New Issue