Commit a07992d1 authored by Nick Thomas's avatar Nick Thomas

Merge remote-tracking branch 'ce/master' into ce-to-ee-2017-07-13

parents 16b3dfe7 cbcba158
...@@ -10,7 +10,7 @@ linters: ...@@ -10,7 +10,7 @@ linters:
# Reports when you use improper spacing around ! (the "bang") in !default, # Reports when you use improper spacing around ! (the "bang") in !default,
# !global, !important, and !optional flags. # !global, !important, and !optional flags.
BangFormat: BangFormat:
enabled: false enabled: true
# Whether or not to prefer `border: 0` over `border: none`. # Whether or not to prefer `border: 0` over `border: none`.
BorderZero: BorderZero:
...@@ -43,10 +43,11 @@ linters: ...@@ -43,10 +43,11 @@ linters:
# Rule sets should be ordered as follows: # Rule sets should be ordered as follows:
# - @extend declarations # - @extend declarations
# - @include declarations without inner @content # - @include declarations without inner @content
# - properties, @include declarations with inner @content # - properties
# - @include declarations with inner @content
# - nested rule sets. # - nested rule sets.
DeclarationOrder: DeclarationOrder:
enabled: false enabled: true
# `scss-lint:disable` control comments should be preceded by a comment # `scss-lint:disable` control comments should be preceded by a comment
# explaining why these linters are being disabled for this file. # explaining why these linters are being disabled for this file.
...@@ -93,7 +94,7 @@ linters: ...@@ -93,7 +94,7 @@ linters:
# The basenames of @imported SCSS partials should not begin with an # The basenames of @imported SCSS partials should not begin with an
# underscore and should not include the filename extension. # underscore and should not include the filename extension.
ImportPath: ImportPath:
enabled: false enabled: true
# Avoid using !important in properties. It is usually indicative of a # Avoid using !important in properties. It is usually indicative of a
# misunderstanding of CSS specificity and can lead to brittle code. # misunderstanding of CSS specificity and can lead to brittle code.
...@@ -133,7 +134,7 @@ linters: ...@@ -133,7 +134,7 @@ linters:
# Reports when you use an unknown or disabled CSS property # Reports when you use an unknown or disabled CSS property
# (ignoring vendor-prefixed properties). # (ignoring vendor-prefixed properties).
PropertySpelling: PropertySpelling:
enabled: false enabled: true
# Configure which units are allowed for property values. # Configure which units are allowed for property values.
PropertyUnits: PropertyUnits:
...@@ -176,6 +177,10 @@ linters: ...@@ -176,6 +177,10 @@ linters:
# Commas in lists should be followed by a space. # Commas in lists should be followed by a space.
SpaceAfterComma: SpaceAfterComma:
enabled: true
# Comment literals should be followed by a space.
SpaceAfterComment:
enabled: false enabled: false
# Properties should be formatted with a single space separating the colon # Properties should be formatted with a single space separating the colon
...@@ -240,7 +245,7 @@ linters: ...@@ -240,7 +245,7 @@ linters:
# Do not use parent selector references (&) when they would otherwise # Do not use parent selector references (&) when they would otherwise
# be unnecessary. # be unnecessary.
UnnecessaryParentReference: UnnecessaryParentReference:
enabled: false enabled: true
# URLs should be valid and not contain protocols or domain names. # URLs should be valid and not contain protocols or domain names.
UrlFormat: UrlFormat:
......
...@@ -255,6 +255,7 @@ gem 'font-awesome-rails', '~> 4.7' ...@@ -255,6 +255,7 @@ gem 'font-awesome-rails', '~> 4.7'
gem 'gemojione', '~> 3.0' gem 'gemojione', '~> 3.0'
gem 'gon', '~> 6.1.0' gem 'gon', '~> 6.1.0'
gem 'jquery-atwho-rails', '~> 1.3.2' gem 'jquery-atwho-rails', '~> 1.3.2'
<<<<<<< HEAD
gem 'jquery-rails', '~> 4.1.0' gem 'jquery-rails', '~> 4.1.0'
gem 'request_store', '~> 1.3' gem 'request_store', '~> 1.3'
gem 'select2-rails', '~> 3.5.9' gem 'select2-rails', '~> 3.5.9'
...@@ -262,6 +263,13 @@ gem 'virtus', '~> 1.0.1' ...@@ -262,6 +263,13 @@ gem 'virtus', '~> 1.0.1'
gem 'net-ssh', '~> 3.0.1' gem 'net-ssh', '~> 3.0.1'
gem 'base32', '~> 0.3.0' gem 'base32', '~> 0.3.0'
gem "gitlab-license", "~> 1.0" gem "gitlab-license", "~> 1.0"
=======
gem 'jquery-rails', '~> 4.1.0'
gem 'request_store', '~> 1.3'
gem 'select2-rails', '~> 3.5.9'
gem 'virtus', '~> 1.0.1'
gem 'base32', '~> 0.3.0'
>>>>>>> ce/master
# Sentry integration # Sentry integration
gem 'sentry-raven', '~> 2.5.3' gem 'sentry-raven', '~> 2.5.3'
...@@ -345,7 +353,7 @@ group :development, :test do ...@@ -345,7 +353,7 @@ group :development, :test do
gem 'rubocop', '~> 0.47.1', require: false gem 'rubocop', '~> 0.47.1', require: false
gem 'rubocop-rspec', '~> 1.15.0', require: false gem 'rubocop-rspec', '~> 1.15.0', require: false
gem 'scss_lint', '~> 0.47.0', require: false gem 'scss_lint', '~> 0.54.0', require: false
gem 'haml_lint', '~> 0.21.0', require: false gem 'haml_lint', '~> 0.21.0', require: false
gem 'simplecov', '~> 0.14.0', require: false gem 'simplecov', '~> 0.14.0', require: false
gem 'flay', '~> 2.8.0', require: false gem 'flay', '~> 2.8.0', require: false
......
...@@ -500,8 +500,11 @@ GEM ...@@ -500,8 +500,11 @@ GEM
mustermann (= 0.4.0) mustermann (= 0.4.0)
mysql2 (0.4.5) mysql2 (0.4.5)
net-ldap (0.12.1) net-ldap (0.12.1)
<<<<<<< HEAD
net-ntp (2.1.3) net-ntp (2.1.3)
net-ssh (3.0.1) net-ssh (3.0.1)
=======
>>>>>>> ce/master
netrc (0.11.0) netrc (0.11.0)
nokogiri (1.6.8.1) nokogiri (1.6.8.1)
mini_portile2 (~> 2.1.0) mini_portile2 (~> 2.1.0)
...@@ -792,9 +795,9 @@ GEM ...@@ -792,9 +795,9 @@ GEM
sawyer (0.8.1) sawyer (0.8.1)
addressable (>= 2.3.5, < 2.6) addressable (>= 2.3.5, < 2.6)
faraday (~> 0.8, < 1.0) faraday (~> 0.8, < 1.0)
scss_lint (0.47.1) scss_lint (0.54.0)
rake (>= 0.9, < 11) rake (>= 0.9, < 13)
sass (~> 3.4.15) sass (~> 3.4.20)
securecompare (1.0.0) securecompare (1.0.0)
seed-fu (2.3.6) seed-fu (2.3.6)
activerecord (>= 3.1) activerecord (>= 3.1)
...@@ -809,7 +812,7 @@ GEM ...@@ -809,7 +812,7 @@ GEM
rack rack
shoulda-matchers (2.8.0) shoulda-matchers (2.8.0)
activesupport (>= 3.0.0) activesupport (>= 3.0.0)
sidekiq (5.0.0) sidekiq (5.0.4)
concurrent-ruby (~> 1.0) concurrent-ruby (~> 1.0)
connection_pool (~> 2.2, >= 2.2.0) connection_pool (~> 2.2, >= 2.2.0)
rack-protection (>= 1.5.0) rack-protection (>= 1.5.0)
...@@ -1048,10 +1051,14 @@ DEPENDENCIES ...@@ -1048,10 +1051,14 @@ DEPENDENCIES
method_source (~> 0.8) method_source (~> 0.8)
minitest (~> 5.7.0) minitest (~> 5.7.0)
mousetrap-rails (~> 1.4.6) mousetrap-rails (~> 1.4.6)
<<<<<<< HEAD
mysql2 (~> 0.4.5) mysql2 (~> 0.4.5)
net-ldap net-ldap
net-ntp net-ntp
net-ssh (~> 3.0.1) net-ssh (~> 3.0.1)
=======
mysql2 (~> 0.3.16)
>>>>>>> ce/master
nokogiri (~> 1.6.7, >= 1.6.7.2) nokogiri (~> 1.6.7, >= 1.6.7.2)
oauth2 (~> 1.4) oauth2 (~> 1.4)
octokit (~> 4.6.2) octokit (~> 4.6.2)
...@@ -1121,7 +1128,7 @@ DEPENDENCIES ...@@ -1121,7 +1128,7 @@ DEPENDENCIES
rugged (~> 0.25.1.1) rugged (~> 0.25.1.1)
sanitize (~> 2.0) sanitize (~> 2.0)
sass-rails (~> 5.0.6) sass-rails (~> 5.0.6)
scss_lint (~> 0.47.0) scss_lint (~> 0.54.0)
seed-fu (~> 2.3.5) seed-fu (~> 2.3.5)
select2-rails (~> 3.5.9) select2-rails (~> 3.5.9)
sentry-raven (~> 2.5.3) sentry-raven (~> 2.5.3)
......
app/assets/images/new_nav.png

23.2 KB | W: | H:

app/assets/images/new_nav.png

14 KB | W: | H:

app/assets/images/new_nav.png
app/assets/images/new_nav.png
app/assets/images/new_nav.png
app/assets/images/new_nav.png
  • 2-up
  • Swipe
  • Onion skin
...@@ -23,6 +23,7 @@ class BoardService { ...@@ -23,6 +23,7 @@ class BoardService {
url: bulkUpdatePath, url: bulkUpdatePath,
}, },
}); });
<<<<<<< HEAD
} }
allBoards () { allBoards () {
...@@ -34,6 +35,8 @@ class BoardService { ...@@ -34,6 +35,8 @@ class BoardService {
return this.boards.update({ id: board.id }, board); return this.boards.update({ id: board.id }, board);
} }
return this.boards.save({}, board); return this.boards.save({}, board);
=======
>>>>>>> ce/master
} }
all () { all () {
......
...@@ -513,9 +513,9 @@ export default { ...@@ -513,9 +513,9 @@ export default {
<div class="table-section section-15 hidden-xs hidden-sm" role="gridcell"> <div class="table-section section-15 hidden-xs hidden-sm" role="gridcell">
<a <a
v-if="shouldRenderBuildName" v-if="shouldRenderBuildName"
class="build-link" class="build-link flex-truncate-parent"
:href="buildPath"> :href="buildPath">
{{buildName}} <span class="flex-truncate-child">{{buildName}}</span>
</a> </a>
</div> </div>
......
...@@ -42,4 +42,4 @@ ...@@ -42,4 +42,4 @@
/* /*
* Styles for JS behaviors. * Styles for JS behaviors.
*/ */
@import "behaviors.scss"; @import "behaviors";
...@@ -4,49 +4,49 @@ ...@@ -4,49 +4,49 @@
@import 'framework/tw_bootstrap'; @import 'framework/tw_bootstrap';
@import "framework/layout"; @import "framework/layout";
@import "framework/animations.scss"; @import "framework/animations";
@import "framework/avatar.scss"; @import "framework/avatar";
@import "framework/asciidoctor.scss"; @import "framework/asciidoctor";
@import "framework/blocks.scss"; @import "framework/blocks";
@import "framework/buttons.scss"; @import "framework/buttons";
@import "framework/badges.scss"; @import "framework/badges";
@import "framework/calendar.scss"; @import "framework/calendar";
@import "framework/callout.scss"; @import "framework/callout";
@import "framework/common.scss"; @import "framework/common";
@import "framework/dropdowns.scss"; @import "framework/dropdowns";
@import "framework/files.scss"; @import "framework/files";
@import "framework/filters.scss"; @import "framework/filters";
@import "framework/flash.scss"; @import "framework/flash";
@import "framework/forms.scss"; @import "framework/forms";
@import "framework/gfm.scss"; @import "framework/gfm";
@import "framework/header.scss"; @import "framework/header";
@import "framework/highlight.scss"; @import "framework/highlight";
@import "framework/issue_box.scss"; @import "framework/issue_box";
@import "framework/jquery.scss"; @import "framework/jquery";
@import "framework/lists.scss"; @import "framework/lists";
@import "framework/logo.scss"; @import "framework/logo";
@import "framework/markdown_area.scss"; @import "framework/markdown_area";
@import "framework/mobile.scss"; @import "framework/mobile";
@import "framework/modal.scss"; @import "framework/modal";
@import "framework/nav.scss"; @import "framework/nav";
@import "framework/pagination.scss"; @import "framework/pagination";
@import "framework/panels.scss"; @import "framework/panels";
@import "framework/selects.scss"; @import "framework/selects";
@import "framework/sidebar.scss"; @import "framework/sidebar";
@import "framework/tables.scss"; @import "framework/tables";
@import "framework/notes.scss"; @import "framework/notes";
@import "framework/timeline.scss"; @import "framework/timeline";
@import "framework/typography.scss"; @import "framework/typography";
@import "framework/zen.scss"; @import "framework/zen";
@import "framework/blank"; @import "framework/blank";
@import "framework/wells.scss"; @import "framework/wells";
@import "framework/page-header.scss"; @import "framework/page-header";
@import "framework/awards.scss"; @import "framework/awards";
@import "framework/images.scss"; @import "framework/images";
@import "framework/broadcast-messages"; @import "framework/broadcast-messages";
@import "framework/emojis.scss"; @import "framework/emojis";
@import "framework/emoji-sprites.scss"; @import "framework/emoji-sprites";
@import "framework/icons.scss"; @import "framework/icons";
@import "framework/snippets.scss"; @import "framework/snippets";
@import "framework/memory_graph.scss"; @import "framework/memory_graph";
@import "framework/responsive-tables.scss"; @import "framework/responsive-tables";
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
opacity: 0; opacity: 0;
transform: scale(.2); transform: scale(.2);
transform-origin: 0 -45px; transform-origin: 0 -45px;
transition: .3s cubic-bezier(.67,.06,.19,1.44); transition: .3s cubic-bezier(.67, .06, .19, 1.44);
transition-property: transform, opacity; transition-property: transform, opacity;
&.is-aligned-right { &.is-aligned-right {
...@@ -231,11 +231,11 @@ ...@@ -231,11 +231,11 @@
.award-control-icon-positive, .award-control-icon-positive,
.award-control-icon-super-positive { .award-control-icon-super-positive {
@include transition(opacity, transform);
position: absolute; position: absolute;
left: 10px; left: 10px;
bottom: 6px; bottom: 6px;
opacity: 0; opacity: 0;
@include transition(opacity, transform);
} }
.award-control-text { .award-control-text {
......
.blank-state-parent-container { .blank-state-parent-container {
display: flex;
.section-container { .section-container {
display: flex;
flex: 1;
padding: 10px; padding: 10px;
} }
...@@ -13,91 +9,42 @@ ...@@ -13,91 +9,42 @@
padding-bottom: 25px; padding-bottom: 25px;
border: 1px solid $border-color; border: 1px solid $border-color;
border-radius: $border-radius-default; border-radius: $border-radius-default;
&.section-ee-trial {
display: flex;
align-items: center;
justify-content: center;
}
}
}
.blank-state-welcome {
text-align: center;
.blank-state-text {
margin-bottom: 0;
} }
} }
.blank-state { .blank-state {
padding-top: 20px; padding-top: 20px;
padding-bottom: 20px; padding-bottom: 20px;
}
.blank-state.ee-trial {
padding: 20px;
text-align: center; text-align: center;
}
.blank-state-no-icon { &.blank-state-welcome {
padding-top: 40px; .blank-state-welcome-title {
padding-bottom: 40px; font-size: 24px;
} }
.blank-state-text {
margin-bottom: 0;
}
}
.blank-state-icon { .blank-state-icon {
padding-bottom: 20px; padding-bottom: 20px;
font-size: 56px;
svg { svg {
display: block; display: block;
margin: auto; margin: auto;
} }
}
@media (min-width: $screen-sm-max) {
.section-welcome .blank-state-icon svg {
width: 130%;
} }
}
.blank-state-title { .blank-state-title {
margin-top: 0; margin-top: 0;
margin-bottom: 10px; margin-bottom: 10px;
font-size: 18px; font-size: 18px;
}
.blank-state-text {
margin-top: 0;
margin-bottom: $gl-padding;
font-size: 14px;
> strong {
font-weight: 600;
} }
}
.blank-state-welcome-title {
font-size: 24px;
}
@media (max-width: $screen-md-min) { .blank-state-text {
.blank-state-parent-container { max-width: $container-text-max-width;
&, margin: 0 auto $gl-padding;
.section-container { font-size: 14px;
display: block;
}
}
.blank-state {
text-align: center;
}
.blank-state-icon {
padding-bottom: 0;
}
.blank-state-body {
margin-top: 15px;
} }
} }
...@@ -340,11 +340,6 @@ table { ...@@ -340,11 +340,6 @@ table {
text-align: center; text-align: center;
} }
#nprogress .spinner {
top: 15px !important;
right: 10px !important;
}
.header-with-avatar { .header-with-avatar {
h3 { h3 {
margin: 0; margin: 0;
...@@ -454,4 +449,3 @@ table { ...@@ -454,4 +449,3 @@ table {
pointer-events: none; pointer-events: none;
opacity: .5; opacity: .5;
} }
...@@ -35,8 +35,8 @@ ...@@ -35,8 +35,8 @@
.open { .open {
.dropdown-menu, .dropdown-menu,
.dropdown-menu-nav { .dropdown-menu-nav {
display: block;
@include set-visible; @include set-visible;
display: block;
@media (max-width: $screen-xs-max) { @media (max-width: $screen-xs-max) {
width: 100%; width: 100%;
...@@ -184,6 +184,7 @@ ...@@ -184,6 +184,7 @@
.dropdown-menu, .dropdown-menu,
.dropdown-menu-nav { .dropdown-menu-nav {
@include set-invisible;
display: block; display: block;
position: absolute; position: absolute;
width: 100%; width: 100%;
...@@ -200,7 +201,6 @@ ...@@ -200,7 +201,6 @@
border: 1px solid $dropdown-border-color; border: 1px solid $dropdown-border-color;
border-radius: $border-radius-base; border-radius: $border-radius-base;
box-shadow: 0 2px 4px $dropdown-shadow-color; box-shadow: 0 2px 4px $dropdown-shadow-color;
@include set-invisible;
@media (max-width: $screen-sm-min) { @media (max-width: $screen-sm-min) {
width: 100%; width: 100%;
...@@ -675,8 +675,8 @@ ...@@ -675,8 +675,8 @@
} }
.pika-single { .pika-single {
position: relative!important; position: relative !important;
top: 0!important; top: 0 !important;
border: 0; border: 0;
box-shadow: none; box-shadow: none;
} }
......
...@@ -368,7 +368,7 @@ ...@@ -368,7 +368,7 @@
margin-right: 0.3em; margin-right: 0.3em;
} }
& > .value { > .value {
font-weight: 600; font-weight: 600;
} }
} }
...@@ -467,7 +467,7 @@ ...@@ -467,7 +467,7 @@
-webkit-flex-direction: column; -webkit-flex-direction: column;
flex-direction: column; flex-direction: column;
&> span { > span {
white-space: normal; white-space: normal;
word-break: break-all; word-break: break-all;
} }
......
...@@ -330,7 +330,7 @@ header { ...@@ -330,7 +330,7 @@ header {
padding-left: 5px; padding-left: 5px;
.nav > li:not(.hidden-xs) { .nav > li:not(.hidden-xs) {
display: table-cell!important; display: table-cell !important;
width: 25%; width: 25%;
a { a {
......
...@@ -61,7 +61,7 @@ ...@@ -61,7 +61,7 @@
&:focus { &:focus {
outline: none; outline: none;
& i { i {
visibility: visible; visibility: visible;
} }
} }
......
...@@ -165,8 +165,8 @@ ...@@ -165,8 +165,8 @@
.cur { .cur {
.avatar { .avatar {
border: 1px solid $white-light;
@include disableAllAnimation; @include disableAllAnimation;
border: 1px solid $white-light;
} }
} }
......
...@@ -100,9 +100,9 @@ ...@@ -100,9 +100,9 @@
} }
.table-mobile-header { .table-mobile-header {
@include flex-max-width(40);
color: $gl-text-color-secondary; color: $gl-text-color-secondary;
text-align: left; text-align: left;
@include flex-max-width(40);
@media (min-width: $screen-md-min) { @media (min-width: $screen-md-min) {
display: none; display: none;
......
...@@ -176,6 +176,7 @@ $header-height: 50px; ...@@ -176,6 +176,7 @@ $header-height: 50px;
$fixed-layout-width: 1280px; $fixed-layout-width: 1280px;
$limited-layout-width: 990px; $limited-layout-width: 990px;
$limited-layout-width-sm: 790px; $limited-layout-width-sm: 790px;
$container-text-max-width: 540px;
$gl-avatar-size: 40px; $gl-avatar-size: 40px;
$error-exclamation-point: $red-500; $error-exclamation-point: $red-500;
$border-radius-default: 3px; $border-radius-default: 3px;
...@@ -321,7 +322,7 @@ $badge-color: $gl-text-color-secondary; ...@@ -321,7 +322,7 @@ $badge-color: $gl-text-color-secondary;
/* /*
* Award emoji * Award emoji
*/ */
$award-emoji-menu-shadow: rgba(0,0,0,.175); $award-emoji-menu-shadow: rgba(0, 0, 0, .175);
$award-emoji-positive-add-bg: #fed159; $award-emoji-positive-add-bg: #fed159;
$award-emoji-positive-add-lines: #bb9c13; $award-emoji-positive-add-lines: #bb9c13;
...@@ -572,7 +573,7 @@ $kdb-color: #555; ...@@ -572,7 +573,7 @@ $kdb-color: #555;
$kdb-border: #ccc; $kdb-border: #ccc;
$kdb-border-bottom: #bbb; $kdb-border-bottom: #bbb;
$kdb-shadow: #bbb; $kdb-shadow: #bbb;
$body-text-shadow: rgba(255,255,255,0.01); $body-text-shadow: rgba(255, 255, 255, 0.01);
/* /*
* UI Dev Kit * UI Dev Kit
......
...@@ -113,7 +113,7 @@ $white-gc-bg: #eaf2f5; ...@@ -113,7 +113,7 @@ $white-gc-bg: #eaf2f5;
border-color: $line-removed-dark; border-color: $line-removed-dark;
a { a {
color: scale-color($line-number-old,$red: -30%, $green: -30%, $blue: -30%); color: scale-color($line-number-old, $red: -30%, $green: -30%, $blue: -30%);
} }
} }
...@@ -122,7 +122,7 @@ $white-gc-bg: #eaf2f5; ...@@ -122,7 +122,7 @@ $white-gc-bg: #eaf2f5;
border-color: $line-added-dark; border-color: $line-added-dark;
a { a {
color: scale-color($line-number-new,$red: -30%, $green: -30%, $blue: -30%); color: scale-color($line-number-new, $red: -30%, $green: -30%, $blue: -30%);
} }
} }
...@@ -163,7 +163,7 @@ $white-gc-bg: #eaf2f5; ...@@ -163,7 +163,7 @@ $white-gc-bg: #eaf2f5;
background-color: $line-removed; background-color: $line-removed;
&::before { &::before {
color: scale-color($line-number-old,$red: -30%, $green: -30%, $blue: -30%); color: scale-color($line-number-old, $red: -30%, $green: -30%, $blue: -30%);
} }
span.idiff { span.idiff {
...@@ -175,7 +175,7 @@ $white-gc-bg: #eaf2f5; ...@@ -175,7 +175,7 @@ $white-gc-bg: #eaf2f5;
background-color: $line-added; background-color: $line-added;
&::before { &::before {
color: scale-color($line-number-new,$red: -30%, $green: -30%, $blue: -30%); color: scale-color($line-number-new, $red: -30%, $green: -30%, $blue: -30%);
} }
span.idiff { span.idiff {
......
...@@ -2,12 +2,12 @@ ...@@ -2,12 +2,12 @@
@import 'framework/tw_bootstrap_variables'; @import 'framework/tw_bootstrap_variables';
@import "bootstrap/variables"; @import "bootstrap/variables";
$active-background: rgba(0,0,0,.04); $active-background: rgba(0, 0, 0, .04);
$active-border: $indigo-500; $active-border: $indigo-500;
$active-color: $indigo-700; $active-color: $indigo-700;
$active-hover-background: $active-background; $active-hover-background: $active-background;
$active-hover-color: $gl-text-color; $active-hover-color: $gl-text-color;
$inactive-badge-background: rgba(0,0,0,.08); $inactive-badge-background: rgba(0, 0, 0, .08);
$hover-background: $indigo-700; $hover-background: $indigo-700;
$hover-color: $white-light; $hover-color: $white-light;
$inactive-color: $gl-text-color-secondary; $inactive-color: $gl-text-color-secondary;
......
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
.is-dragging { .is-dragging {
// Important because plugin sets inline CSS // Important because plugin sets inline CSS
opacity: 1!important; opacity: 1 !important;
* { * {
-webkit-user-select: none; -webkit-user-select: none;
...@@ -19,8 +19,8 @@ ...@@ -19,8 +19,8 @@
-ms-user-select: none; -ms-user-select: none;
user-select: none; user-select: none;
// !important to make sure no style can override this when dragging // !important to make sure no style can override this when dragging
cursor: -webkit-grabbing!important; cursor: -webkit-grabbing !important;
cursor: grabbing!important; cursor: grabbing !important;
} }
} }
......
...@@ -6,26 +6,26 @@ ...@@ -6,26 +6,26 @@
@keyframes blinking-dots { @keyframes blinking-dots {
0% { 0% {
background-color: rgba($white-light, 1); background-color: rgba($white-light, 1);
box-shadow: 12px 0 0 0 rgba($white-light,0.2), box-shadow: 12px 0 0 0 rgba($white-light, 0.2),
24px 0 0 0 rgba($white-light,0.2); 24px 0 0 0 rgba($white-light, 0.2);
} }
25% { 25% {
background-color: rgba($white-light, 0.4); background-color: rgba($white-light, 0.4);
box-shadow: 12px 0 0 0 rgba($white-light,2), box-shadow: 12px 0 0 0 rgba($white-light, 2),
24px 0 0 0 rgba($white-light,0.2); 24px 0 0 0 rgba($white-light, 0.2);
} }
75% { 75% {
background-color: rgba($white-light, 0.4); background-color: rgba($white-light, 0.4);
box-shadow: 12px 0 0 0 rgba($white-light,0.2), box-shadow: 12px 0 0 0 rgba($white-light, 0.2),
24px 0 0 0 rgba($white-light,1); 24px 0 0 0 rgba($white-light, 1);
} }
100% { 100% {
background-color: rgba($white-light, 1); background-color: rgba($white-light, 1);
box-shadow: 12px 0 0 0 rgba($white-light,0.2), box-shadow: 12px 0 0 0 rgba($white-light, 0.2),
24px 0 0 0 rgba($white-light,0.2); 24px 0 0 0 rgba($white-light, 0.2);
} }
} }
......
...@@ -250,8 +250,8 @@ ...@@ -250,8 +250,8 @@
} }
.committed_ago { .committed_ago {
float: right;
@extend .cgray; @extend .cgray;
float: right;
} }
} }
} }
......
...@@ -24,9 +24,9 @@ ...@@ -24,9 +24,9 @@
.col-headers { .col-headers {
ul { ul {
@include clearfix;
margin: 0; margin: 0;
padding: 0; padding: 0;
@include clearfix;
} }
li { li {
...@@ -189,8 +189,8 @@ ...@@ -189,8 +189,8 @@
} }
li { li {
list-style-type: none;
@include clearfix; @include clearfix;
list-style-type: none;
} }
.stage-nav-item { .stage-nav-item {
...@@ -281,11 +281,11 @@ ...@@ -281,11 +281,11 @@
} }
.stage-event-item { .stage-event-item {
@include clearfix;
list-style-type: none; list-style-type: none;
padding: 0 0 $gl-padding; padding: 0 0 $gl-padding;
margin: 0 $gl-padding $gl-padding; margin: 0 $gl-padding $gl-padding;
border-bottom: 1px solid $gray-darker; border-bottom: 1px solid $gray-darker;
@include clearfix;
&:last-child { &:last-child {
border-bottom: none; border-bottom: none;
...@@ -307,9 +307,9 @@ ...@@ -307,9 +307,9 @@
&.issue-title, &.issue-title,
&.commit-title, &.commit-title,
&.merge-merquest-title { &.merge-merquest-title {
@include text-overflow();
max-width: 100%; max-width: 100%;
display: block; display: block;
@include text-overflow();
a { a {
color: $gl-text-color; color: $gl-text-color;
......
...@@ -91,6 +91,7 @@ ...@@ -91,6 +91,7 @@
.old_line, .old_line,
.new_line { .new_line {
@include user-select(none);
margin: 0; margin: 0;
border: none; border: none;
padding: 0 5px; padding: 0 5px;
...@@ -99,7 +100,6 @@ ...@@ -99,7 +100,6 @@
min-width: 35px; min-width: 35px;
max-width: 50px; max-width: 50px;
width: 35px; width: 35px;
@include user-select(none);
a { a {
float: left; float: left;
...@@ -354,12 +354,12 @@ ...@@ -354,12 +354,12 @@
} }
&.active { &.active {
cursor: default;
color: $gl-text-color;
&:hover { &:hover {
text-decoration: none; text-decoration: none;
} }
cursor: default;
color: $gl-text-color;
} }
&.disabled { &.disabled {
......
...@@ -96,7 +96,7 @@ ...@@ -96,7 +96,7 @@
overflow: visible; overflow: visible;
} }
& > span { > span {
padding-right: 4px; padding-right: 4px;
} }
......
...@@ -121,10 +121,11 @@ ul.notes { ...@@ -121,10 +121,11 @@ ul.notes {
overflow-y: hidden; overflow-y: hidden;
.note-text { .note-text {
word-wrap: break-word;
@include md-typography; @include md-typography;
// Reset ul style types since we're nested inside a ul already // Reset ul style types since we're nested inside a ul already
@include bulleted-list; @include bulleted-list;
word-wrap: break-word;
ul.task-list { ul.task-list {
ul:not(.task-list) { ul:not(.task-list) {
padding-left: 1.3em; padding-left: 1.3em;
...@@ -250,7 +251,7 @@ ul.notes { ...@@ -250,7 +251,7 @@ ul.notes {
} }
.note-text { .note-text {
& p:first-child { p:first-child {
display: none; display: none;
} }
......
.js-pipeline-schedule-form { .js-pipeline-schedule-form {
.dropdown-select, .dropdown-select,
.dropdown-menu-toggle { .dropdown-menu-toggle {
width: 100%!important; width: 100% !important;
} }
.gl-field-error { .gl-field-error {
...@@ -96,12 +96,12 @@ ...@@ -96,12 +96,12 @@
} }
&:last-child { &:last-child {
& .pipeline-variable-row-remove-button { .pipeline-variable-row-remove-button {
display: none; display: none;
} }
@media (max-width: $screen-sm-max) { @media (max-width: $screen-sm-max) {
& .pipeline-variable-value-input { .pipeline-variable-value-input {
margin-right: $pipeline-variable-remove-button-width; margin-right: $pipeline-variable-remove-button-width;
} }
} }
...@@ -137,6 +137,7 @@ ...@@ -137,6 +137,7 @@
} }
.pipeline-variable-row-remove-button { .pipeline-variable-row-remove-button {
@include transition(color);
flex-shrink: 0; flex-shrink: 0;
display: flex; display: flex;
justify-content: center; justify-content: center;
...@@ -147,7 +148,6 @@ ...@@ -147,7 +148,6 @@
background: transparent; background: transparent;
border: 0; border: 0;
color: $gl-text-color-secondary; color: $gl-text-color-secondary;
@include transition(color);
&:hover, &:hover,
&:focus { &:focus {
......
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
margin-bottom: 5px; margin-bottom: 5px;
} }
& > .form-group { > .form-group {
padding-left: 0; padding-left: 0;
} }
...@@ -91,7 +91,7 @@ ...@@ -91,7 +91,7 @@
border: 1px solid $border-color; border: 1px solid $border-color;
} }
& + .select2 a { + .select2 a {
border-top-left-radius: 0; border-top-left-radius: 0;
border-bottom-left-radius: 0; border-bottom-left-radius: 0;
} }
...@@ -595,9 +595,9 @@ pre.light-well { ...@@ -595,9 +595,9 @@ pre.light-well {
} }
.project-row { .project-row {
@include basic-list-stats;
display: flex; display: flex;
align-items: center; align-items: center;
@include basic-list-stats;
} }
h3 { h3 {
......
...@@ -81,7 +81,7 @@ ...@@ -81,7 +81,7 @@
.todo-title { .todo-title {
display: flex; display: flex;
& > .title-item { > .title-item {
-webkit-flex: 0 0 auto; -webkit-flex: 0 0 auto;
flex: 0 0 auto; flex: 0 0 auto;
margin: 0 2px; margin: 0 2px;
......
...@@ -5,13 +5,13 @@ ...@@ -5,13 +5,13 @@
} }
.example { .example {
padding: 15px;
border: 1px dashed $ui-dev-kit-example-border;
margin-bottom: 15px;
&::before { &::before {
content: "Example"; content: "Example";
color: $ui-dev-kit-example-color; color: $ui-dev-kit-example-color;
} }
padding: 15px;
border: 1px dashed $ui-dev-kit-example-border;
margin-bottom: 15px;
} }
} }
...@@ -147,13 +147,13 @@ ...@@ -147,13 +147,13 @@
} }
ul.wiki-pages-list.content-list { ul.wiki-pages-list.content-list {
& ul { ul {
list-style: none; list-style: none;
margin-left: 0; margin-left: 0;
padding-left: 15px; padding-left: 15px;
} }
& ul li { ul li {
padding: 5px 0; padding: 5px 0;
} }
} }
......
...@@ -37,7 +37,7 @@ ul.notes-form, ...@@ -37,7 +37,7 @@ ul.notes-form,
.issuable-details .content-block-small, .issuable-details .content-block-small,
.edit-link, .edit-link,
.note-action-button { .note-action-button {
display: none!important; display: none !important;
} }
pre { pre {
......
...@@ -35,7 +35,7 @@ module ApplicationSettingsHelper ...@@ -35,7 +35,7 @@ module ApplicationSettingsHelper
# Return a group of checkboxes that use Bootstrap's button plugin for a # Return a group of checkboxes that use Bootstrap's button plugin for a
# toggle button effect. # toggle button effect.
def restricted_level_checkboxes(help_block_id, checkbox_name) def restricted_level_checkboxes(help_block_id, checkbox_name)
Gitlab::VisibilityLevel.options.map do |name, level| Gitlab::VisibilityLevel.values.map do |level|
checked = restricted_visibility_levels(true).include?(level) checked = restricted_visibility_levels(true).include?(level)
css_class = checked ? 'active' : '' css_class = checked ? 'active' : ''
tag_name = "application_setting_visibility_level_#{level}" tag_name = "application_setting_visibility_level_#{level}"
...@@ -44,7 +44,7 @@ module ApplicationSettingsHelper ...@@ -44,7 +44,7 @@ module ApplicationSettingsHelper
check_box_tag(checkbox_name, level, checked, check_box_tag(checkbox_name, level, checked,
autocomplete: 'off', autocomplete: 'off',
'aria-describedby' => help_block_id, 'aria-describedby' => help_block_id,
id: tag_name) + visibility_level_icon(level) + name id: tag_name) + visibility_level_icon(level) + visibility_level_label(level)
end end
end end
end end
......
...@@ -718,7 +718,7 @@ class User < ActiveRecord::Base ...@@ -718,7 +718,7 @@ class User < ActiveRecord::Base
end end
def sanitize_attrs def sanitize_attrs
%w[name username skype linkedin twitter].each do |attr| %w[username skype linkedin twitter].each do |attr|
value = public_send(attr) value = public_send(attr)
public_send("#{attr}=", Sanitize.clean(value)) if value.present? public_send("#{attr}=", Sanitize.clean(value)) if value.present?
end end
......
...@@ -76,12 +76,15 @@ class MergeRequestPresenter < Gitlab::View::Presenter::Delegated ...@@ -76,12 +76,15 @@ class MergeRequestPresenter < Gitlab::View::Presenter::Delegated
end end
end end
<<<<<<< HEAD
def rebase_path def rebase_path
if !rebase_in_progress? && should_be_rebased? && user_can_push_to_source_branch? if !rebase_in_progress? && should_be_rebased? && user_can_push_to_source_branch?
rebase_project_merge_request_path(project, merge_request) rebase_project_merge_request_path(project, merge_request)
end end
end end
=======
>>>>>>> ce/master
def target_branch_tree_path def target_branch_tree_path
if target_branch_exists? if target_branch_exists?
project_tree_path(project, target_branch) project_tree_path(project, target_branch)
......
.row.blank-state.clearfix .blank-state
.col-md-1.col-md-offset-3.blank-state-icon .blank-state-icon
= custom_icon("add_new_user", size: 50) = custom_icon("add_new_user", size: 50)
.col-md-5.blank-state-body .blank-state-body
%h3.blank-state-title %h3.blank-state-title
Add user Add user
%p.blank-state-text %p.blank-state-text
...@@ -9,10 +9,10 @@ ...@@ -9,10 +9,10 @@
= link_to new_admin_user_path, class: "btn btn-new" do = link_to new_admin_user_path, class: "btn btn-new" do
New user New user
.row.blank-state.clearfix .blank-state
.col-md-1.col-md-offset-3.blank-state-icon .blank-state-icon
= custom_icon("configure_server", size: 50) = custom_icon("configure_server", size: 50)
.col-md-5.blank-state-body .blank-state-body
%h3.blank-state-title %h3.blank-state-title
Configure GitLab Configure GitLab
%p.blank-state-text %p.blank-state-text
...@@ -21,10 +21,10 @@ ...@@ -21,10 +21,10 @@
Configure Configure
- if current_user.can_create_group? - if current_user.can_create_group?
.row.blank-state.clearfix .blank-state
.col-md-1.col-md-offset-3.blank-state-icon .blank-state-icon
= custom_icon("add_new_group", size: 50) = custom_icon("add_new_group", size: 50)
.col-md-5.blank-state-body .blank-state-body
%h3.blank-state-title %h3.blank-state-title
Create a group Create a group
%p.blank-state-text %p.blank-state-text
......
- public_project_count = ProjectsFinder.new(current_user: current_user).execute.count - public_project_count = ProjectsFinder.new(current_user: current_user).execute.count
- if current_user.can_create_group? - if current_user.can_create_group?
.row.blank-state.clearfix .blank-state
.col-md-1.col-md-offset-3.blank-state-icon .blank-state-icon
= custom_icon("add_new_group", size: 50) = custom_icon("add_new_group", size: 50)
.col-md-5.blank-state-body .blank-state-body
%h3.blank-state-title %h3.blank-state-title
Create a group for several dependent projects. Create a group for several dependent projects.
%p.blank-state-text %p.blank-state-text
...@@ -12,10 +12,10 @@ ...@@ -12,10 +12,10 @@
= link_to new_group_path, class: "btn btn-new" do = link_to new_group_path, class: "btn btn-new" do
New group New group
.row.blank-state.clearfix .blank-state
.col-md-1.col-md-offset-3.blank-state-icon .blank-state-icon
= custom_icon("add_new_project", size: 50) = custom_icon("add_new_project", size: 50)
.col-md-5.blank-state-body .blank-state-body
%h3.blank-state-title %h3.blank-state-title
Create a project Create a project
%p.blank-state-text %p.blank-state-text
...@@ -32,10 +32,10 @@ ...@@ -32,10 +32,10 @@
New project New project
- if public_project_count > 0 - if public_project_count > 0
.row.blank-state.clearfix .blank-state
.col-md-1.col-md-offset-3.blank-state-icon .blank-state-icon
= custom_icon("globe", size: 50) = custom_icon("globe", size: 50)
.col-md-5.blank-state-body .blank-state-body
%h3.blank-state-title %h3.blank-state-title
Explore public projects Explore public projects
%p.blank-state-text %p.blank-state-text
......
.row.blank-state-parent-container .row.blank-state-parent-container
.section-container .section-container.section-welcome{ class: "#{ 'section-admin-welcome' if current_user.admin? }" }
.container.section-body.section-welcome{ class: "#{ 'section-admin-welcome' if current_user.admin? }" } .container.section-body
.blank-state.blank-state-welcome .blank-state.blank-state-welcome
%h2.blank-state-welcome-title %h2.blank-state-welcome-title
Welcome to GitLab Welcome to GitLab
......
...@@ -525,7 +525,7 @@ ...@@ -525,7 +525,7 @@
%h4 %h4
%code .file-holder %code .file-holder
- blob = Snippet.new(content: "Wow\nSuch\nFile") - blob = Snippet.new(content: "Wow\nSuch\nFile").blob
.example .example
.file-holder .file-holder
.js-file-title.file-title .js-file-title.file-title
......
...@@ -87,7 +87,7 @@ ...@@ -87,7 +87,7 @@
%li %li
= link_to "Settings", profile_path = link_to "Settings", profile_path
%li %li
= link_to "Turn on new nav", profile_preferences_path(anchor: "new-navigation") = link_to "Turn on new navigation", profile_preferences_path(anchor: "new-navigation")
%li.divider %li.divider
%li %li
= link_to "Sign out", destroy_user_session_path, method: :delete, class: "sign-out-link" = link_to "Sign out", destroy_user_session_path, method: :delete, class: "sign-out-link"
......
...@@ -69,7 +69,7 @@ ...@@ -69,7 +69,7 @@
%li %li
= link_to "Settings", profile_path = link_to "Settings", profile_path
%li %li
= link_to "Turn off new nav", profile_preferences_path(anchor: "new-navigation") = link_to "Turn off new navigation", profile_preferences_path(anchor: "new-navigation")
%li.divider %li.divider
%li %li
= link_to "Sign out", destroy_user_session_path, method: :delete, class: "sign-out-link" = link_to "Sign out", destroy_user_session_path, method: :delete, class: "sign-out-link"
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
- hide_top_links = @hide_top_links || false - hide_top_links = @hide_top_links || false
%nav.breadcrumbs{ role: "navigation" } %nav.breadcrumbs{ role: "navigation" }
.breadcrumbs-container{ class: container_class } .breadcrumbs-container{ class: [container_class, @content_class] }
.breadcrumbs-links.js-title-container .breadcrumbs-links.js-title-container
- unless hide_top_links - unless hide_top_links
.title .title
......
...@@ -74,9 +74,9 @@ ...@@ -74,9 +74,9 @@
= nav_link(controller: @project.default_issues_tracker? ? [:issues, :labels, :milestones, :boards] : :issues) do = nav_link(controller: @project.default_issues_tracker? ? [:issues, :labels, :milestones, :boards] : :issues) do
= link_to project_issues_path(@project), title: 'Issues', class: 'shortcuts-issues' do = link_to project_issues_path(@project), title: 'Issues', class: 'shortcuts-issues' do
%span %span
Issues
- if @project.default_issues_tracker? - if @project.default_issues_tracker?
%span.badge.count.issue_counter= number_with_delimiter(IssuesFinder.new(current_user, project_id: @project.id).execute.opened.count) %span.badge.count.issue_counter= number_with_delimiter(IssuesFinder.new(current_user, project_id: @project.id).execute.opened.count)
Issues
%ul.sidebar-sub-level-items %ul.sidebar-sub-level-items
- if project_nav_tab?(:issues) && !current_controller?(:merge_requests) - if project_nav_tab?(:issues) && !current_controller?(:merge_requests)
...@@ -112,8 +112,8 @@ ...@@ -112,8 +112,8 @@
= nav_link(controller: @project.default_issues_tracker? ? :merge_requests : [:merge_requests, :labels, :milestones]) do = nav_link(controller: @project.default_issues_tracker? ? :merge_requests : [:merge_requests, :labels, :milestones]) do
= link_to project_merge_requests_path(@project), title: 'Merge Requests', class: 'shortcuts-merge_requests' do = link_to project_merge_requests_path(@project), title: 'Merge Requests', class: 'shortcuts-merge_requests' do
%span %span
Merge Requests
%span.badge.count.merge_counter.js-merge-counter= number_with_delimiter(MergeRequestsFinder.new(current_user, project_id: @project.id).execute.opened.count) %span.badge.count.merge_counter.js-merge-counter= number_with_delimiter(MergeRequestsFinder.new(current_user, project_id: @project.id).execute.opened.count)
Merge Requests
- if project_nav_tab? :pipelines - if project_nav_tab? :pipelines
= nav_link(controller: [:pipelines, :builds, :jobs, :pipeline_schedules, :environments, :artifacts]) do = nav_link(controller: [:pipelines, :builds, :jobs, :pipeline_schedules, :environments, :artifacts]) do
......
...@@ -30,7 +30,7 @@ ...@@ -30,7 +30,7 @@
%ul.dropdown-menu.dropdown-menu-align-right %ul.dropdown-menu.dropdown-menu-align-right
%li.visible-xs-block.visible-sm-block %li.visible-xs-block.visible-sm-block
= link_to project_tree_path(@project, @commit) do = link_to project_tree_path(@project, @commit) do
_('Browse Files') #{ _('Browse Files') }
- unless @commit.has_been_reverted?(current_user) - unless @commit.has_been_reverted?(current_user)
%li.clearfix %li.clearfix
= revert_commit_link(@commit, project_commit_path(@project, @commit.id), has_tooltip: false) = revert_commit_link(@commit, project_commit_path(@project, @commit.id), has_tooltip: false)
......
- @no_container = true - @no_container = true
- container_class = !fluid_layout && diff_view == :inline ? 'container-limited' : '' - container_class = !fluid_layout && diff_view == :inline ? 'container-limited' : ''
- limited_container_width = fluid_layout ? '' : 'limit-container-width' - limited_container_width = fluid_layout ? '' : 'limit-container-width'
- @content_class = limited_container_width
- page_title "#{@commit.title} (#{@commit.short_id})", "Commits" - page_title "#{@commit.title} (#{@commit.short_id})", "Commits"
- page_description @commit.description - page_description @commit.description
= render "projects/commits/head" = render "projects/commits/head"
......
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
.col-lg-3.profile-settings-sidebar .col-lg-3.profile-settings-sidebar
%h4.prepend-top-0 %h4.prepend-top-0
New project New project
- if import_sources_enabled?
%p %p
Create or Import your project from popular Git services Create or Import your project from popular Git services
.col-lg-9 .col-lg-9
......
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
- schedule_path_proc = ->(scope) { pipeline_schedules_path(@project, scope: scope) } - schedule_path_proc = ->(scope) { pipeline_schedules_path(@project, scope: scope) }
= render "tabs", schedule_path_proc: schedule_path_proc, all_schedules: @all_schedules, scope: @scope = render "tabs", schedule_path_proc: schedule_path_proc, all_schedules: @all_schedules, scope: @scope
- if can?(current_user, :create_pipeline_schedule, @project)
.nav-controls .nav-controls
= link_to new_project_pipeline_schedule_path(@project), class: 'btn btn-create' do = link_to new_project_pipeline_schedule_path(@project), class: 'btn btn-create' do
%span= _('New schedule') %span= _('New schedule')
......
- @no_container = true - @no_container = true
- @content_class = "limit-container-width" unless fluid_layout
- flash_message_container = show_new_nav? ? :new_global_flash : :flash_message - flash_message_container = show_new_nav? ? :new_global_flash : :flash_message
= content_for :meta_tags do = content_for :meta_tags do
......
- @no_container = true - @no_container = true
- @content_class = "limit-container-width" unless fluid_layout
- page_title @path.presence || _("Files"), @ref - page_title @path.presence || _("Files"), @ref
= content_for :meta_tags do = content_for :meta_tags do
......
---
title: "Insert user name directly without encoding"
merge_request: 10085
author: Nathan Neulinger <nneul@neulinger.org>
---
title: Return `is_admin` attribute in the GET /user endpoint for admins
merge_request: 12811
author:
---
title: Fix crash on /help/ui
merge_request:
author:
---
title: Bump scss-lint to 0.54.0
merge_request: 12733
author: Takuya Noguchi
---
title: Remove net-ssh gem
merge_request:
author: Takuya Noguchi
---
title: Do not show pipeline schedule button for non-member
merge_request: 12757
author: Takuya Noguchi
---
title: Remove public/ci/favicon.ico
merge_request: 12803
author: Takuya Noguchi
---
title: Enable BangFormat in scss-lint [ci skip]
merge_request: 12815
author: Takuya Noguchi
---
title: Enable DeclarationOrder in scss-lint
merge_request: 12805
author: Takuya Noguchi
---
title: Enable ImportPath in scss-lint
merge_request: 12749
author: Takuya Noguchi
---
title: Enable PropertySpelling in scss-lint
merge_request: 12752
author: Takuya Noguchi
---
title: Enable SpaceAfterComma in scss-lint
merge_request: 12734
author: Takuya Noguchi
---
title: Enable UnnecessaryParentReference in scss-lint
merge_request: 12738
author: Takuya Noguchi
---
title: Improve issue rendering performance with lots of notes from other users
merge_request:
author:
---
title: Remove CSS for nprogress removed
merge_request: 12737
author: Takuya Noguchi
---
title: Replace 'browse_files.feature' spinach test with an rspec analog
merge_request: 12251
author: @blackst0ne
---
title: Add a simple mode to merge request API
merge_request:
author:
---
title: Toggle import description with import_sources_enabled
merge_request: 12691
author: Brianna Kicia
\ No newline at end of file
...@@ -25,6 +25,7 @@ Parameters: ...@@ -25,6 +25,7 @@ Parameters:
| `order_by`| string | no | Return requests ordered by `created_at` or `updated_at` fields. Default is `created_at` | | `order_by`| string | no | Return requests ordered by `created_at` or `updated_at` fields. Default is `created_at` |
| `sort` | string | no | Return requests sorted in `asc` or `desc` order. Default is `desc` | | `sort` | string | no | Return requests sorted in `asc` or `desc` order. Default is `desc` |
| `milestone` | string | no | Return merge requests for a specific milestone | | `milestone` | string | no | Return merge requests for a specific milestone |
| `view` | string | no | If `simple`, returns the `iid`, URL, title, description, and basic state of merge request |
| `labels` | string | no | Return merge requests matching a comma separated list of labels | | `labels` | string | no | Return merge requests matching a comma separated list of labels |
| `created_after` | datetime | no | Return merge requests created after the given time (inclusive) | | `created_after` | datetime | no | Return merge requests created after the given time (inclusive) |
| `created_before` | datetime | no | Return merge requests created before the given time (inclusive) | | `created_before` | datetime | no | Return merge requests created before the given time (inclusive) |
......
...@@ -369,7 +369,7 @@ GET /user ...@@ -369,7 +369,7 @@ GET /user
Parameters: Parameters:
- `sudo` (required) - the ID of a user - `sudo` (optional) - the ID of a user to make the call in their place
``` ```
GET /user GET /user
......
...@@ -294,9 +294,9 @@ sudo usermod -aG redis git ...@@ -294,9 +294,9 @@ sudo usermod -aG redis git
### Clone the Source ### Clone the Source
# Clone GitLab repository # Clone GitLab repository
sudo -u git -H git clone https://gitlab.com/gitlab-org/gitlab-ce.git -b 9-3-stable gitlab sudo -u git -H git clone https://gitlab.com/gitlab-org/gitlab-ce.git -b 9-4-stable gitlab
**Note:** You can change `9-3-stable` to `master` if you want the *bleeding edge* version, but never install master on a production server! **Note:** You can change `9-4-stable` to `master` if you want the *bleeding edge* version, but never install master on a production server!
### Configure It ### Configure It
......
...@@ -69,7 +69,7 @@ so keep in mind that you need at least 4GB available before running GitLab. With ...@@ -69,7 +69,7 @@ so keep in mind that you need at least 4GB available before running GitLab. With
less memory GitLab will give strange errors during the reconfigure run and 500 less memory GitLab will give strange errors during the reconfigure run and 500
errors during usage. errors during usage.
- 1GB RAM + 3GB of swap is the absolute minimum but we strongly **advise against** this amount of memory. See the unicorn worker section below for more advice. - 1GB RAM + 3GB of swap is the absolute minimum but we strongly **advise against** this amount of memory. See the [unicorn worker section below](#unicorn-workers) for more advice.
- 2GB RAM + 2GB swap supports up to 100 users but it will be very slow - 2GB RAM + 2GB swap supports up to 100 users but it will be very slow
- **4GB RAM** is the **recommended** memory size for all installations and supports up to 100 users - **4GB RAM** is the **recommended** memory size for all installations and supports up to 100 users
- 8GB RAM supports up to 1,000 users - 8GB RAM supports up to 1,000 users
......
...@@ -72,8 +72,8 @@ More information can be found on the [yarn website](https://yarnpkg.com/en/docs/ ...@@ -72,8 +72,8 @@ More information can be found on the [yarn website](https://yarnpkg.com/en/docs/
### 5. Update Go ### 5. Update Go
NOTE: GitLab 9.4 and higher only supports Go 1.8.3 and dropped support for Go 1.5.x through 1.7.x. Be NOTE: GitLab 9.2 and higher only supports Go 1.8.3 and dropped support for Go
sure to upgrade your installation if necessary 1.5.x through 1.7.x. Be sure to upgrade your installation if necessary.
You can check which version you are running with `go version`. You can check which version you are running with `go version`.
...@@ -117,7 +117,7 @@ cd /home/git/gitlab ...@@ -117,7 +117,7 @@ cd /home/git/gitlab
sudo -u git -H git checkout 9-4-stable-ee sudo -u git -H git checkout 9-4-stable-ee
``` ```
### 5. Update gitlab-shell ### 7. Update gitlab-shell
```bash ```bash
cd /home/git/gitlab-shell cd /home/git/gitlab-shell
...@@ -127,11 +127,10 @@ sudo -u git -H git checkout v$(</home/git/gitlab/GITLAB_SHELL_VERSION) ...@@ -127,11 +127,10 @@ sudo -u git -H git checkout v$(</home/git/gitlab/GITLAB_SHELL_VERSION)
sudo -u git -H bin/compile sudo -u git -H bin/compile
``` ```
### 6. Update gitlab-workhorse ### 8. Update gitlab-workhorse
Install and compile gitlab-workhorse. This requires Install and compile gitlab-workhorse. GitLab-Workhorse uses
[Go 1.8](https://golang.org/dl) which should already be on your system from [GNU Make](https://www.gnu.org/software/make/).
GitLab 8.1. GitLab-Workhorse uses [GNU Make](https://www.gnu.org/software/make/).
If you are not using Linux you may have to run `gmake` instead of If you are not using Linux you may have to run `gmake` instead of
`make` below. `make` below.
...@@ -143,7 +142,7 @@ sudo -u git -H git checkout v$(</home/git/gitlab/GITLAB_WORKHORSE_VERSION) ...@@ -143,7 +142,7 @@ sudo -u git -H git checkout v$(</home/git/gitlab/GITLAB_WORKHORSE_VERSION)
sudo -u git -H make sudo -u git -H make
``` ```
### 7. Update Gitaly ### 9. Update Gitaly
If you have not yet set up Gitaly then follow [Gitaly section of the installation If you have not yet set up Gitaly then follow [Gitaly section of the installation
guide](../install/installation.md#install-gitaly). guide](../install/installation.md#install-gitaly).
...@@ -171,7 +170,29 @@ sudo -u git -H git checkout v$(</home/git/gitlab/GITALY_SERVER_VERSION) ...@@ -171,7 +170,29 @@ sudo -u git -H git checkout v$(</home/git/gitlab/GITALY_SERVER_VERSION)
sudo -u git -H make sudo -u git -H make
``` ```
### 10. Update configuration files ### 10. Update MySQL permissions
If you are using MySQL you need to grant the GitLab user the necessary
permissions on the database:
```bash
mysql -u root -p -e "GRANT TRIGGER ON \`gitlabhq_production\`.* TO 'git'@'localhost';"
```
If you use MySQL with replication, or just have MySQL configured with binary logging,
you will need to also run the following on all of your MySQL servers:
```bash
mysql -u root -p -e "SET GLOBAL log_bin_trust_function_creators = 1;"
```
You can make this setting permanent by adding it to your `my.cnf`:
```
log_bin_trust_function_creators=1
```
### 11. Update configuration files
#### New configuration options for `gitlab.yml` #### New configuration options for `gitlab.yml`
...@@ -245,7 +266,7 @@ For Ubuntu 16.04.1 LTS: ...@@ -245,7 +266,7 @@ For Ubuntu 16.04.1 LTS:
sudo systemctl daemon-reload sudo systemctl daemon-reload
``` ```
### 11. Install libs, migrations, etc. ### 12. Install libs, migrations, etc.
```bash ```bash
cd /home/git/gitlab cd /home/git/gitlab
...@@ -271,14 +292,14 @@ sudo -u git -H bundle exec rake cache:clear RAILS_ENV=production ...@@ -271,14 +292,14 @@ sudo -u git -H bundle exec rake cache:clear RAILS_ENV=production
**MySQL installations**: Run through the `MySQL strings limits` and `Tables and data conversion to utf8mb4` [tasks](../install/database_mysql.md). **MySQL installations**: Run through the `MySQL strings limits` and `Tables and data conversion to utf8mb4` [tasks](../install/database_mysql.md).
### 12. Start application ### 13. Start application
```bash ```bash
sudo service gitlab start sudo service gitlab start
sudo service nginx restart sudo service nginx restart
``` ```
### 13. Check application status ### 14. Check application status
Check if GitLab and its environment are configured correctly: Check if GitLab and its environment are configured correctly:
......
This diff is collapsed.
...@@ -353,6 +353,13 @@ module API ...@@ -353,6 +353,13 @@ module API
expose :id expose :id
end end
class MergeRequestSimple < ProjectEntity
expose :title
expose :web_url do |merge_request, options|
Gitlab::UrlBuilder.build(merge_request)
end
end
class MergeRequestBasic < ProjectEntity class MergeRequestBasic < ProjectEntity
expose :target_branch, :source_branch expose :target_branch, :source_branch
expose :upvotes do |merge_request, options| expose :upvotes do |merge_request, options|
......
...@@ -50,9 +50,14 @@ module API ...@@ -50,9 +50,14 @@ module API
args[:label_name] = args.delete(:labels) args[:label_name] = args.delete(:labels)
merge_requests = MergeRequestsFinder.new(current_user, args).execute merge_requests = MergeRequestsFinder.new(current_user, args).execute
merge_requests = merge_requests.reorder(args[:order_by] => args[:sort]) .reorder(args[:order_by] => args[:sort])
paginate(merge_requests) merge_requests = paginate(merge_requests)
.preload(:notes, :target_project, :author, :assignee, :milestone, :merge_request_diff, :labels) .preload(:target_project)
return merge_requests if args[:view] == 'simple'
merge_requests
.preload(:notes, :author, :assignee, :milestone, :merge_request_diff, :labels)
end end
params :optional_params_ce do params :optional_params_ce do
...@@ -89,15 +94,25 @@ module API ...@@ -89,15 +94,25 @@ module API
optional :labels, type: String, desc: 'Comma-separated list of label names' optional :labels, type: String, desc: 'Comma-separated list of label names'
optional :created_after, type: DateTime, desc: 'Return merge requests created after the specified time' optional :created_after, type: DateTime, desc: 'Return merge requests created after the specified time'
optional :created_before, type: DateTime, desc: 'Return merge requests created before the specified time' optional :created_before, type: DateTime, desc: 'Return merge requests created before the specified time'
optional :view, type: String, values: %w[simple], desc: 'If simple, returns the `iid`, URL, title, description, and basic state of merge request'
use :pagination use :pagination
end end
get ":id/merge_requests" do get ":id/merge_requests" do
authorize! :read_merge_request, user_project authorize! :read_merge_request, user_project
merge_requests = find_merge_requests(project_id: user_project.id) merge_requests = find_merge_requests(project_id: user_project.id)
issuable_metadata = issuable_meta_data(merge_requests, 'MergeRequest')
present merge_requests, with: Entities::MergeRequestBasic, current_user: current_user, project: user_project, issuable_metadata: issuable_metadata options = { with: Entities::MergeRequestBasic,
current_user: current_user,
project: user_project }
if params[:view] == 'simple'
options[:with] = Entities::MergeRequestSimple
else
options[:issuable_metadata] = issuable_meta_data(merge_requests, 'MergeRequest')
end
present merge_requests, options
end end
desc 'Create a merge request' do desc 'Create a merge request' do
......
...@@ -427,7 +427,16 @@ module API ...@@ -427,7 +427,16 @@ module API
success Entities::UserPublic success Entities::UserPublic
end end
get do get do
present current_user, with: sudo? ? Entities::UserWithPrivateDetails : Entities::UserPublic entity =
if sudo?
Entities::UserWithPrivateDetails
elsif current_user.admin?
Entities::UserWithAdmin
else
Entities::UserPublic
end
present current_user, with: entity
end end
desc "Get the currently authenticated user's SSH keys" do desc "Get the currently authenticated user's SSH keys" do
......
# Gitaly note: JV: not sure what to make of this class. Why does it use
# the full disk path of the repository to look up attributes This is
# problematic in Gitaly, because Gitaly hides the full disk path to the
# repository from gitlab-ce.
module Gitlab module Gitlab
module Git module Git
# Class for parsing Git attribute files and extracting the attributes for # Class for parsing Git attribute files and extracting the attributes for
......
# Gitaly note: JV: needs 1 RPC for #load_blame.
module Gitlab module Gitlab
module Git module Git
class Blame class Blame
...@@ -24,6 +26,7 @@ module Gitlab ...@@ -24,6 +26,7 @@ module Gitlab
private private
# Gitaly migration: https://gitlab.com/gitlab-org/gitaly/issues/376
def load_blame def load_blame
cmd = %W(#{Gitlab.config.git.bin_path} --git-dir=#{@repo.path} blame -p #{@sha} -- #{@path}) cmd = %W(#{Gitlab.config.git.bin_path} --git-dir=#{@repo.path} blame -p #{@sha} -- #{@path})
# Read in binary mode to ensure ASCII-8BIT # Read in binary mode to ensure ASCII-8BIT
......
# Gitaly note: JV: seems to be completely migrated (behind feature flags).
module Gitlab module Gitlab
module Git module Git
class Blob class Blob
...@@ -107,6 +109,8 @@ module Gitlab ...@@ -107,6 +109,8 @@ module Gitlab
detect && detect[:type] == :binary detect && detect[:type] == :binary
end end
private
# Recursive search of blob id by path # Recursive search of blob id by path
# #
# Ex. # Ex.
......
# Gitaly note: JV: no RPC's here.
module Gitlab module Gitlab
module Git module Git
class BlobSnippet class BlobSnippet
......
# Gitaly note: JV: no RPC's here.
module Gitlab module Gitlab
module Git module Git
class Branch < Ref class Branch < Ref
......
...@@ -48,6 +48,7 @@ module Gitlab ...@@ -48,6 +48,7 @@ module Gitlab
# #
# Commit.find(repo, 'master') # Commit.find(repo, 'master')
# #
# Gitaly migration: https://gitlab.com/gitlab-org/gitaly/issues/321
def find(repo, commit_id = "HEAD") def find(repo, commit_id = "HEAD")
return commit_id if commit_id.is_a?(Gitlab::Git::Commit) return commit_id if commit_id.is_a?(Gitlab::Git::Commit)
return decorate(commit_id) if commit_id.is_a?(Rugged::Commit) return decorate(commit_id) if commit_id.is_a?(Rugged::Commit)
...@@ -124,6 +125,7 @@ module Gitlab ...@@ -124,6 +125,7 @@ module Gitlab
# are documented here: # are documented here:
# http://www.rubydoc.info/github/libgit2/rugged/Rugged#SORT_NONE-constant) # http://www.rubydoc.info/github/libgit2/rugged/Rugged#SORT_NONE-constant)
# #
# Gitaly migration: https://gitlab.com/gitlab-org/gitaly/issues/326
def find_all(repo, options = {}) def find_all(repo, options = {})
actual_options = options.dup actual_options = options.dup
...@@ -243,6 +245,8 @@ module Gitlab ...@@ -243,6 +245,8 @@ module Gitlab
# Shows the diff between the commit's parent and the commit. # Shows the diff between the commit's parent and the commit.
# #
# Cuts out the header and stats from #to_patch and returns only the diff. # Cuts out the header and stats from #to_patch and returns only the diff.
#
# Gitaly migration: https://gitlab.com/gitlab-org/gitaly/issues/324
def to_diff def to_diff
diff_from_parent.patch diff_from_parent.patch
end end
......
# Gitaly note: JV: 1 RPC, migration in progress.
# Gitlab::Git::CommitStats counts the additions, deletions, and total changes # Gitlab::Git::CommitStats counts the additions, deletions, and total changes
# in a commit. # in a commit.
module Gitlab module Gitlab
...@@ -6,6 +8,8 @@ module Gitlab ...@@ -6,6 +8,8 @@ module Gitlab
attr_reader :id, :additions, :deletions, :total attr_reader :id, :additions, :deletions, :total
# Instantiate a CommitStats object # Instantiate a CommitStats object
#
# Gitaly migration: https://gitlab.com/gitlab-org/gitaly/issues/323
def initialize(commit) def initialize(commit)
@id = commit.id @id = commit.id
@additions = 0 @additions = 0
......
# Gitaly note: JV: no RPC's here.
module Gitlab module Gitlab
module Git module Git
class Compare class Compare
......
# Gitaly note: JV: needs RPC for Gitlab::Git::Diff.between.
# Gitlab::Git::Diff is a wrapper around native Rugged::Diff object # Gitlab::Git::Diff is a wrapper around native Rugged::Diff object
module Gitlab module Gitlab
module Git module Git
...@@ -81,110 +83,16 @@ module Gitlab ...@@ -81,110 +83,16 @@ module Gitlab
# Return a copy of the +options+ hash containing only keys that can be # Return a copy of the +options+ hash containing only keys that can be
# passed to Rugged. Allowed options are: # passed to Rugged. Allowed options are:
# #
# :max_size ::
# An integer specifying the maximum byte size of a file before a it
# will be treated as binary. The default value is 512MB.
#
# :context_lines ::
# The number of unchanged lines that define the boundary of a hunk
# (and to display before and after the actual changes). The default is
# 3.
#
# :interhunk_lines ::
# The maximum number of unchanged lines between hunk boundaries before
# the hunks will be merged into a one. The default is 0.
#
# :old_prefix ::
# The virtual "directory" to prefix to old filenames in hunk headers.
# The default is "a".
#
# :new_prefix ::
# The virtual "directory" to prefix to new filenames in hunk headers.
# The default is "b".
#
# :reverse ::
# If true, the sides of the diff will be reversed.
#
# :force_text ::
# If true, all files will be treated as text, disabling binary
# attributes & detection.
#
# :ignore_whitespace ::
# If true, all whitespace will be ignored.
#
# :ignore_whitespace_change :: # :ignore_whitespace_change ::
# If true, changes in amount of whitespace will be ignored. # If true, changes in amount of whitespace will be ignored.
# #
# :ignore_whitespace_eol ::
# If true, whitespace at end of line will be ignored.
#
# :ignore_submodules ::
# if true, submodules will be excluded from the diff completely.
#
# :patience ::
# If true, the "patience diff" algorithm will be used (currenlty
# unimplemented).
#
# :include_ignored ::
# If true, ignored files will be included in the diff.
#
# :include_untracked ::
# If true, untracked files will be included in the diff.
#
# :include_unmodified ::
# If true, unmodified files will be included in the diff.
#
# :recurse_untracked_dirs ::
# Even if +:include_untracked+ is true, untracked directories will
# only be marked with a single entry in the diff. If this flag is set
# to true, all files under ignored directories will be included in the
# diff, too.
#
# :disable_pathspec_match :: # :disable_pathspec_match ::
# If true, the given +*paths+ will be applied as exact matches, # If true, the given +*paths+ will be applied as exact matches,
# instead of as fnmatch patterns. # instead of as fnmatch patterns.
# #
# :deltas_are_icase ::
# If true, filename comparisons will be made with case-insensitivity.
#
# :include_untracked_content ::
# if true, untracked content will be contained in the the diff patch
# text.
#
# :skip_binary_check ::
# If true, diff deltas will be generated without spending time on
# binary detection. This is useful to improve performance in cases
# where the actual file content difference is not needed.
#
# :include_typechange ::
# If true, type changes for files will not be interpreted as deletion
# of the "old file" and addition of the "new file", but will generate
# typechange records.
#
# :include_typechange_trees ::
# Even if +:include_typechange+ is true, blob -> tree changes will
# still usually be handled as a deletion of the blob. If this flag is
# set to true, blob -> tree changes will be marked as typechanges.
#
# :ignore_filemode ::
# If true, file mode changes will be ignored.
#
# :recurse_ignored_dirs ::
# Even if +:include_ignored+ is true, ignored directories will only be
# marked with a single entry in the diff. If this flag is set to true,
# all files under ignored directories will be included in the diff,
# too.
def filter_diff_options(options, default_options = {}) def filter_diff_options(options, default_options = {})
allowed_options = [:max_size, :context_lines, :interhunk_lines, allowed_options = [:ignore_whitespace_change,
:old_prefix, :new_prefix, :reverse, :force_text, :disable_pathspec_match, :paths,
:ignore_whitespace, :ignore_whitespace_change,
:ignore_whitespace_eol, :ignore_submodules,
:patience, :include_ignored, :include_untracked,
:include_unmodified, :recurse_untracked_dirs,
:disable_pathspec_match, :deltas_are_icase,
:include_untracked_content, :skip_binary_check,
:include_typechange, :include_typechange_trees,
:ignore_filemode, :recurse_ignored_dirs, :paths,
:max_files, :max_lines, :limits, :expanded] :max_files, :max_lines, :limits, :expanded]
if default_options if default_options
......
# Gitaly note: JV: no RPC's here.
module Gitlab module Gitlab
module Git module Git
class DiffCollection class DiffCollection
......
# Gitaly note: JV: no RPC's here.
module Gitlab module Gitlab
module Git module Git
# Ephemeral (per request) storage for environment variables that some Git # Ephemeral (per request) storage for environment variables that some Git
......
# Gitaly note: JV: no RPC's here.
module Gitlab module Gitlab
module Git module Git
class GitmodulesParser class GitmodulesParser
......
# Gitaly note: JV: looks like this is only used by GitHooksService in
# app/services. We shouldn't bother migrating this until we know how
# GitHooksService will be migrated.
module Gitlab module Gitlab
module Git module Git
class Hook class Hook
......
# Gitaly note: JV: When the time comes I think we will want to copy this
# class into Gitaly. None of its methods look like they should be RPC's.
# The RPC's will be at a higher level.
module Gitlab module Gitlab
module Git module Git
class Index class Index
......
# Gitaly note: JV: no RPC's here.
module Gitlab module Gitlab
module Git module Git
class PathHelper class PathHelper
......
# Gitaly note: JV: no RPC's here.
require 'open3' require 'open3'
module Gitlab module Gitlab
......
# Gitaly note: JV: probably no RPC's here (just one interaction with Rugged).
module Gitlab module Gitlab
module Git module Git
class Ref class Ref
...@@ -24,6 +26,7 @@ module Gitlab ...@@ -24,6 +26,7 @@ module Gitlab
str.gsub(/\Arefs\/heads\//, '') str.gsub(/\Arefs\/heads\//, '')
end end
# Gitaly: this method will probably be migrated indirectly via its call sites.
def self.dereference_object(object) def self.dereference_object(object)
object = object.target while object.is_a?(Rugged::Tag::Annotation) object = object.target while object.is_a?(Rugged::Tag::Annotation)
......
...@@ -553,6 +553,7 @@ module Gitlab ...@@ -553,6 +553,7 @@ module Gitlab
# @repository.submodule_url_for('master', 'rack') # @repository.submodule_url_for('master', 'rack')
# # => git@localhost:rack.git # # => git@localhost:rack.git
# #
# Gitaly migration: https://gitlab.com/gitlab-org/gitaly/issues/329
def submodule_url_for(ref, path) def submodule_url_for(ref, path)
Gitlab::GitalyClient.migrate(:submodule_url_for) do |is_enabled| Gitlab::GitalyClient.migrate(:submodule_url_for) do |is_enabled|
if is_enabled if is_enabled
...@@ -567,6 +568,8 @@ module Gitlab ...@@ -567,6 +568,8 @@ module Gitlab
end end
# Return total commits count accessible from passed ref # Return total commits count accessible from passed ref
#
# Gitaly migration: https://gitlab.com/gitlab-org/gitaly/issues/330
def commit_count(ref) def commit_count(ref)
gitaly_migrate(:commit_count) do |is_enabled| gitaly_migrate(:commit_count) do |is_enabled|
if is_enabled if is_enabled
...@@ -838,6 +841,7 @@ module Gitlab ...@@ -838,6 +841,7 @@ module Gitlab
# Ex. # Ex.
# repo.ls_files('master') # repo.ls_files('master')
# #
# Gitaly migration: https://gitlab.com/gitlab-org/gitaly/issues/327
def ls_files(ref) def ls_files(ref)
actual_ref = ref || root_ref actual_ref = ref || root_ref
...@@ -864,6 +868,7 @@ module Gitlab ...@@ -864,6 +868,7 @@ module Gitlab
raw_output.compact raw_output.compact
end end
# Gitaly migration: https://gitlab.com/gitlab-org/gitaly/issues/328
def copy_gitattributes(ref) def copy_gitattributes(ref)
begin begin
commit = lookup(ref) commit = lookup(ref)
......
# Gitaly note: JV: will probably be migrated indirectly by migrating the call sites.
module Gitlab module Gitlab
module Git module Git
class RevList class RevList
...@@ -15,6 +17,8 @@ module Gitlab ...@@ -15,6 +17,8 @@ module Gitlab
end end
# This methods returns an array of missed references # This methods returns an array of missed references
#
# Should become obsolete after https://gitlab.com/gitlab-org/gitaly/issues/348.
def missed_ref def missed_ref
execute([*base_args, '--max-count=1', oldrev, "^#{newrev}"]) execute([*base_args, '--max-count=1', oldrev, "^#{newrev}"])
end end
......
# Gitaly note: JV: no RPC's here.
#
module Gitlab module Gitlab
module Git module Git
class Tag < Ref class Tag < Ref
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment