Commit 7354c574 authored by Robert Speicher's avatar Robert Speicher

Merge remote-tracking branch 'ce/master'

parents b1ed8d8d d4677353
...@@ -2,6 +2,8 @@ require: ...@@ -2,6 +2,8 @@ require:
- rubocop-rspec - rubocop-rspec
- ./rubocop/rubocop - ./rubocop/rubocop
inherit_from: .rubocop_todo.yml
AllCops: AllCops:
TargetRubyVersion: 2.1 TargetRubyVersion: 2.1
# Cop names are not displayed in offense messages by default. Change behavior # Cop names are not displayed in offense messages by default. Change behavior
...@@ -52,14 +54,6 @@ Style/AlignArray: ...@@ -52,14 +54,6 @@ Style/AlignArray:
Style/AlignHash: Style/AlignHash:
Enabled: true Enabled: true
# Align the parameters of a method call if they span more than one line.
Style/AlignParameters:
Enabled: false
# Use &&/|| instead of and/or.
Style/AndOr:
Enabled: false
# Use `Array#join` instead of `Array#*`. # Use `Array#join` instead of `Array#*`.
Style/ArrayJoin: Style/ArrayJoin:
Enabled: true Enabled: true
...@@ -80,10 +74,6 @@ Style/Attr: ...@@ -80,10 +74,6 @@ Style/Attr:
Style/BeginBlock: Style/BeginBlock:
Enabled: true Enabled: true
# Checks if usage of %() or %Q() matches configuration.
Style/BarePercentLiterals:
Enabled: false
# Do not use block comments. # Do not use block comments.
Style/BlockComments: Style/BlockComments:
Enabled: true Enabled: true
...@@ -97,14 +87,6 @@ Style/BlockEndNewline: ...@@ -97,14 +87,6 @@ Style/BlockEndNewline:
Style/BlockDelimiters: Style/BlockDelimiters:
Enabled: true Enabled: true
# Enforce braces style around hash parameters.
Style/BracesAroundHashParameters:
Enabled: false
# Avoid explicit use of the case equality operator(===).
Style/CaseEquality:
Enabled: false
# Indentation of when in a case/when/[else/]end. # Indentation of when in a case/when/[else/]end.
Style/CaseIndentation: Style/CaseIndentation:
Enabled: true Enabled: true
...@@ -133,24 +115,10 @@ Style/ClassMethods: ...@@ -133,24 +115,10 @@ Style/ClassMethods:
Style/ClassVars: Style/ClassVars:
Enabled: true Enabled: true
# Do not use :: for method call.
Style/ColonMethodCall:
Enabled: false
# Checks formatting of special comments (TODO, FIXME, OPTIMIZE, HACK, REVIEW).
Style/CommentAnnotation:
Enabled: false
# Indentation of comments. # Indentation of comments.
Style/CommentIndentation: Style/CommentIndentation:
Enabled: true Enabled: true
# Use the return value of `if` and `case` statements for assignment to a
# variable and variable comparison instead of assigning that variable
# inside of each branch.
Style/ConditionalAssignment:
Enabled: false
# Constants should use SCREAMING_SNAKE_CASE. # Constants should use SCREAMING_SNAKE_CASE.
Style/ConstantName: Style/ConstantName:
Enabled: true Enabled: true
...@@ -159,34 +127,14 @@ Style/ConstantName: ...@@ -159,34 +127,14 @@ Style/ConstantName:
Style/DefWithParentheses: Style/DefWithParentheses:
Enabled: true Enabled: true
# Checks for use of deprecated Hash methods.
Style/DeprecatedHashMethods:
Enabled: false
# Document classes and non-namespace modules. # Document classes and non-namespace modules.
Style/Documentation: Style/Documentation:
Enabled: false Enabled: false
# Checks the position of the dot in multi-line method calls.
Style/DotPosition:
Enabled: false
# Checks for uses of double negation (!!).
Style/DoubleNegation:
Enabled: false
# Prefer `each_with_object` over `inject` or `reduce`.
Style/EachWithObject:
Enabled: false
# Align elses and elsifs correctly. # Align elses and elsifs correctly.
Style/ElseAlignment: Style/ElseAlignment:
Enabled: true Enabled: true
# Avoid empty else-clauses.
Style/EmptyElse:
Enabled: false
# Use empty lines between defs. # Use empty lines between defs.
Style/EmptyLineBetweenDefs: Style/EmptyLineBetweenDefs:
Enabled: false Enabled: false
...@@ -215,10 +163,6 @@ Style/EmptyLinesAroundModuleBody: ...@@ -215,10 +163,6 @@ Style/EmptyLinesAroundModuleBody:
Style/EmptyLinesAroundMethodBody: Style/EmptyLinesAroundMethodBody:
Enabled: false Enabled: false
# Prefer literals to Array.new/Hash.new/String.new.
Style/EmptyLiteral:
Enabled: false
# Avoid the use of END blocks. # Avoid the use of END blocks.
Style/EndBlock: Style/EndBlock:
Enabled: true Enabled: true
...@@ -231,10 +175,6 @@ Style/EndOfLine: ...@@ -231,10 +175,6 @@ Style/EndOfLine:
Style/EvenOdd: Style/EvenOdd:
Enabled: true Enabled: true
# Do not use unnecessary spacing.
Style/ExtraSpacing:
Enabled: false
# Use snake_case for source file names. # Use snake_case for source file names.
Style/FileName: Style/FileName:
Enabled: true Enabled: true
...@@ -252,31 +192,15 @@ Style/FlipFlop: ...@@ -252,31 +192,15 @@ Style/FlipFlop:
Style/For: Style/For:
Enabled: true Enabled: true
# Enforce the use of Kernel#sprintf, Kernel#format or String#%.
Style/FormatString:
Enabled: false
# Do not introduce global variables. # Do not introduce global variables.
Style/GlobalVars: Style/GlobalVars:
Enabled: true Enabled: true
# Check for conditionals that can be replaced with guard clauses.
Style/GuardClause:
Enabled: false
# Prefer Ruby 1.9 hash syntax `{ a: 1, b: 2 }` # Prefer Ruby 1.9 hash syntax `{ a: 1, b: 2 }`
# over 1.8 syntax `{ :a => 1, :b => 2 }`. # over 1.8 syntax `{ :a => 1, :b => 2 }`.
Style/HashSyntax: Style/HashSyntax:
Enabled: true Enabled: true
# Finds if nodes inside else, which can be converted to elsif.
Style/IfInsideElse:
Enabled: false
# Favor modifier if/unless usage when you have a single-line body.
Style/IfUnlessModifier:
Enabled: false
# Do not use if x; .... Use the ternary operator instead. # Do not use if x; .... Use the ternary operator instead.
Style/IfWithSemicolon: Style/IfWithSemicolon:
Enabled: true Enabled: true
...@@ -299,22 +223,10 @@ Style/IndentationConsistency: ...@@ -299,22 +223,10 @@ Style/IndentationConsistency:
Style/IndentationWidth: Style/IndentationWidth:
Enabled: true Enabled: true
# Checks the indentation of the first element in an array literal.
Style/IndentArray:
Enabled: false
# Checks the indentation of the first key in a hash literal.
Style/IndentHash:
Enabled: false
# Use Kernel#loop for infinite loops. # Use Kernel#loop for infinite loops.
Style/InfiniteLoop: Style/InfiniteLoop:
Enabled: true Enabled: true
# Use the new lambda literal syntax for single-line blocks.
Style/Lambda:
Enabled: false
# Use lambda.call(...) instead of lambda.(...). # Use lambda.call(...) instead of lambda.(...).
Style/LambdaCall: Style/LambdaCall:
Enabled: true Enabled: true
...@@ -323,14 +235,6 @@ Style/LambdaCall: ...@@ -323,14 +235,6 @@ Style/LambdaCall:
Style/LeadingCommentSpace: Style/LeadingCommentSpace:
Enabled: true Enabled: true
# Use \ instead of + or << to concatenate two string literals at line end.
Style/LineEndConcatenation:
Enabled: false
# Do not use parentheses for method calls with no arguments.
Style/MethodCallParentheses:
Enabled: false
# Checks if the method definitions have or don't have parentheses. # Checks if the method definitions have or don't have parentheses.
Style/MethodDefParentheses: Style/MethodDefParentheses:
Enabled: true Enabled: true
...@@ -387,39 +291,18 @@ Style/MultilineMethodDefinitionBraceLayout: ...@@ -387,39 +291,18 @@ Style/MultilineMethodDefinitionBraceLayout:
Style/MultilineOperationIndentation: Style/MultilineOperationIndentation:
Enabled: false Enabled: false
# Avoid multi-line `? :` (the ternary operator), use if/unless instead.
Style/MultilineTernaryOperator:
Enabled: false
# Do not assign mutable objects to constants.
Style/MutableConstant:
Enabled: false
# Favor unless over if for negative conditions (or control flow or). # Favor unless over if for negative conditions (or control flow or).
Style/NegatedIf: Style/NegatedIf:
Enabled: true Enabled: true
# Favor until over while for negative conditions.
Style/NegatedWhile:
Enabled: false
# Avoid using nested modifiers. # Avoid using nested modifiers.
Style/NestedModifier: Style/NestedModifier:
Enabled: true Enabled: true
# Parenthesize method calls which are nested inside the argument list of
# another parenthesized method call.
Style/NestedParenthesizedCalls:
Enabled: false
# Use one expression per branch in a ternary operator. # Use one expression per branch in a ternary operator.
Style/NestedTernaryOperator: Style/NestedTernaryOperator:
Enabled: true Enabled: true
# Use `next` to skip iteration instead of a condition at the end.
Style/Next:
Enabled: false
# Prefer x.nil? to x == nil. # Prefer x.nil? to x == nil.
Style/NilComparison: Style/NilComparison:
Enabled: true Enabled: true
...@@ -444,51 +327,10 @@ Style/OneLineConditional: ...@@ -444,51 +327,10 @@ Style/OneLineConditional:
Style/OpMethod: Style/OpMethod:
Enabled: true Enabled: true
# Check for simple usages of parallel assignment. It will only warn when
# the number of variables matches on both sides of the assignment.
Style/ParallelAssignment:
Enabled: false
# Don't use parentheses around the condition of an if/unless/while. # Don't use parentheses around the condition of an if/unless/while.
Style/ParenthesesAroundCondition: Style/ParenthesesAroundCondition:
Enabled: true Enabled: true
# Use `%`-literal delimiters consistently.
Style/PercentLiteralDelimiters:
Enabled: false
# Checks if uses of %Q/%q match the configured preference.
Style/PercentQLiterals:
Enabled: false
# Avoid Perl-style regex back references.
Style/PerlBackrefs:
Enabled: false
# Check the names of predicate methods.
Style/PredicateName:
Enabled: false
# Use proc instead of Proc.new.
Style/Proc:
Enabled: false
# Checks the arguments passed to raise/fail.
Style/RaiseArgs:
Enabled: false
# Don't use begin blocks when they are not needed.
Style/RedundantBegin:
Enabled: false
# Checks for an obsolete RuntimeException argument in raise/fail.
Style/RedundantException:
Enabled: false
# Checks usages of Object#freeze on immutable objects.
Style/RedundantFreeze:
Enabled: false
# Checks for parentheses that seem not to serve any purpose. # Checks for parentheses that seem not to serve any purpose.
Style/RedundantParentheses: Style/RedundantParentheses:
Enabled: true Enabled: true
...@@ -497,24 +339,6 @@ Style/RedundantParentheses: ...@@ -497,24 +339,6 @@ Style/RedundantParentheses:
Style/RedundantReturn: Style/RedundantReturn:
Enabled: true Enabled: true
# Don't use self where it's not needed.
Style/RedundantSelf:
Enabled: false
# Use %r for regular expressions matching more than `MaxSlashes` '/'
# characters. Use %r only for regular expressions matching more
# than `MaxSlashes` '/' character.
Style/RegexpLiteral:
Enabled: false
# Avoid using rescue in its modifier form.
Style/RescueModifier:
Enabled: false
# Checks for places where self-assignment shorthand should have been used.
Style/SelfAssignment:
Enabled: false
# Don't use semicolons to terminate expressions. # Don't use semicolons to terminate expressions.
Style/Semicolon: Style/Semicolon:
Enabled: true Enabled: true
...@@ -524,14 +348,6 @@ Style/SignalException: ...@@ -524,14 +348,6 @@ Style/SignalException:
EnforcedStyle: only_raise EnforcedStyle: only_raise
Enabled: true Enabled: true
# Enforces the names of some block params.
Style/SingleLineBlockParams:
Enabled: false
# Avoid single-line methods.
Style/SingleLineMethods:
Enabled: false
# Use spaces after colons. # Use spaces after colons.
Style/SpaceAfterColon: Style/SpaceAfterColon:
Enabled: true Enabled: true
...@@ -553,11 +369,6 @@ Style/SpaceAfterNot: ...@@ -553,11 +369,6 @@ Style/SpaceAfterNot:
Style/SpaceAfterSemicolon: Style/SpaceAfterSemicolon:
Enabled: true Enabled: true
# Checks that the equals signs in parameter default assignments have or don't
# have surrounding space depending on configuration.
Style/SpaceAroundEqualsInParameterDefault:
Enabled: false
# Use a space around keywords if appropriate. # Use a space around keywords if appropriate.
Style/SpaceAroundKeyword: Style/SpaceAroundKeyword:
Enabled: true Enabled: true
...@@ -566,10 +377,6 @@ Style/SpaceAroundKeyword: ...@@ -566,10 +377,6 @@ Style/SpaceAroundKeyword:
Style/SpaceAroundOperators: Style/SpaceAroundOperators:
Enabled: true Enabled: true
# Checks that the left block brace has or doesn't have space before it.
Style/SpaceBeforeBlockBraces:
Enabled: false
# No spaces before commas. # No spaces before commas.
Style/SpaceBeforeComma: Style/SpaceBeforeComma:
Enabled: true Enabled: true
...@@ -578,33 +385,14 @@ Style/SpaceBeforeComma: ...@@ -578,33 +385,14 @@ Style/SpaceBeforeComma:
Style/SpaceBeforeComment: Style/SpaceBeforeComment:
Enabled: true Enabled: true
# Checks that exactly one space is used between a method name and the first
# argument for method calls without parentheses.
Style/SpaceBeforeFirstArg:
Enabled: false
# No spaces before semicolons. # No spaces before semicolons.
Style/SpaceBeforeSemicolon: Style/SpaceBeforeSemicolon:
Enabled: true Enabled: true
# Checks that block braces have or don't have surrounding space.
# For blocks taking parameters, checks that the left brace has or doesn't
# have trailing space.
Style/SpaceInsideBlockBraces:
Enabled: false
# No spaces after [ or before ].
Style/SpaceInsideBrackets:
Enabled: false
# Use spaces inside hash literal braces - or don't. # Use spaces inside hash literal braces - or don't.
Style/SpaceInsideHashLiteralBraces: Style/SpaceInsideHashLiteralBraces:
Enabled: true Enabled: true
# No spaces after ( or before ).
Style/SpaceInsideParens:
Enabled: false
# No spaces inside range literals. # No spaces inside range literals.
Style/SpaceInsideRangeLiteral: Style/SpaceInsideRangeLiteral:
Enabled: true Enabled: true
...@@ -614,10 +402,6 @@ Style/SpaceInsideStringInterpolation: ...@@ -614,10 +402,6 @@ Style/SpaceInsideStringInterpolation:
EnforcedStyle: no_space EnforcedStyle: no_space
Enabled: true Enabled: true
# Avoid Perl-style global variables.
Style/SpecialGlobalVars:
Enabled: false
# Check for the usage of parentheses around stabby lambda arguments. # Check for the usage of parentheses around stabby lambda arguments.
Style/StabbyLambdaParentheses: Style/StabbyLambdaParentheses:
EnforcedStyle: require_parentheses EnforcedStyle: require_parentheses
...@@ -627,25 +411,12 @@ Style/StabbyLambdaParentheses: ...@@ -627,25 +411,12 @@ Style/StabbyLambdaParentheses:
Style/StringLiterals: Style/StringLiterals:
Enabled: false Enabled: false
# Checks if uses of quotes inside expressions in interpolated strings match the
# configured preference.
Style/StringLiteralsInInterpolation:
Enabled: false
# Checks if configured preferred methods are used over non-preferred. # Checks if configured preferred methods are used over non-preferred.
Style/StringMethods: Style/StringMethods:
PreferredMethods: PreferredMethods:
intern: to_sym intern: to_sym
Enabled: true Enabled: true
# Use %i or %I for arrays of symbols.
Style/SymbolArray:
Enabled: false
# Use symbols as procs instead of blocks when possible.
Style/SymbolProc:
Enabled: false
# No hard tabs. # No hard tabs.
Style/Tab: Style/Tab:
Enabled: true Enabled: true
...@@ -654,40 +425,10 @@ Style/Tab: ...@@ -654,40 +425,10 @@ Style/Tab:
Style/TrailingBlankLines: Style/TrailingBlankLines:
Enabled: true Enabled: true
# Checks for trailing comma in array and hash literals.
Style/TrailingCommaInLiteral:
Enabled: false
# Checks for trailing comma in argument lists.
Style/TrailingCommaInArguments:
Enabled: false
# Avoid trailing whitespace.
Style/TrailingWhitespace:
Enabled: false
# Checks for the usage of unneeded trailing underscores at the end of
# parallel variable assignment.
Style/TrailingUnderscoreVariable:
Enabled: false
# Prefer attr_* methods to trivial readers/writers.
Style/TrivialAccessors:
Enabled: false
# Do not use unless with else. Rewrite these with the positive case first.
Style/UnlessElse:
Enabled: false
# Checks for %W when interpolation is not needed. # Checks for %W when interpolation is not needed.
Style/UnneededCapitalW: Style/UnneededCapitalW:
Enabled: true Enabled: true
# TODO: Enable UnneededInterpolation Cop.
# Checks for strings that are just an interpolated expression.
Style/UnneededInterpolation:
Enabled: false
# Checks for %q/%Q when single quotes or double quotes would do. # Checks for %q/%Q when single quotes or double quotes would do.
Style/UnneededPercentQ: Style/UnneededPercentQ:
Enabled: false Enabled: false
...@@ -717,12 +458,6 @@ Style/WhileUntilModifier: ...@@ -717,12 +458,6 @@ Style/WhileUntilModifier:
Style/WordArray: Style/WordArray:
Enabled: false Enabled: false
# TODO: Enable ZeroLengthPredicate Cop.
# Use #empty? when testing for objects of length 0.
Style/ZeroLengthPredicate:
Enabled: false
#################### Metrics ################################ #################### Metrics ################################
# A calculated magnitude based on number of assignments, # A calculated magnitude based on number of assignments,
...@@ -776,15 +511,6 @@ Metrics/PerceivedComplexity: ...@@ -776,15 +511,6 @@ Metrics/PerceivedComplexity:
Lint/AmbiguousOperator: Lint/AmbiguousOperator:
Enabled: true Enabled: true
# Checks for ambiguous regexp literals in the first argument of a method
# invocation without parentheses.
Lint/AmbiguousRegexpLiteral:
Enabled: false
# Don't use assignment in conditions.
Lint/AssignmentInCondition:
Enabled: false
# Align block ends correctly. # Align block ends correctly.
Lint/BlockAlignment: Lint/BlockAlignment:
Enabled: true Enabled: true
...@@ -810,14 +536,6 @@ Lint/DefEndAlignment: ...@@ -810,14 +536,6 @@ Lint/DefEndAlignment:
Lint/DeprecatedClassMethods: Lint/DeprecatedClassMethods:
Enabled: true Enabled: true
# Check for duplicate method definitions.
Lint/DuplicateMethods:
Enabled: false
# Check for duplicate keys in hash literals.
Lint/DuplicatedKey:
Enabled: false
# Check for immutable argument given to each_with_object. # Check for immutable argument given to each_with_object.
Lint/EachWithObjectArgument: Lint/EachWithObjectArgument:
Enabled: true Enabled: true
...@@ -830,10 +548,6 @@ Lint/ElseLayout: ...@@ -830,10 +548,6 @@ Lint/ElseLayout:
Lint/EmptyEnsure: Lint/EmptyEnsure:
Enabled: true Enabled: true
# Checks for empty string interpolation.
Lint/EmptyInterpolation:
Enabled: false
# Align ends correctly. # Align ends correctly.
Lint/EndAlignment: Lint/EndAlignment:
Enabled: true Enabled: true
...@@ -858,21 +572,11 @@ Lint/FloatOutOfRange: ...@@ -858,21 +572,11 @@ Lint/FloatOutOfRange:
Lint/FormatParameterMismatch: Lint/FormatParameterMismatch:
Enabled: true Enabled: true
# Don't suppress exception.
Lint/HandleExceptions:
Enabled: false
# Checks for adjacent string literals on the same line, which could better be # Checks for adjacent string literals on the same line, which could better be
# represented as a single string literal. # represented as a single string literal.
Lint/ImplicitStringConcatenation: Lint/ImplicitStringConcatenation:
Enabled: true Enabled: true
# TODO: Enable IneffectiveAccessModifier Cop.
# Checks for attempts to use `private` or `protected` to set the visibility
# of a class method, which does not work.
Lint/IneffectiveAccessModifier:
Enabled: false
# Checks for invalid character literals with a non-escaped whitespace # Checks for invalid character literals with a non-escaped whitespace
# character. # character.
Lint/InvalidCharacterLiteral: Lint/InvalidCharacterLiteral:
...@@ -886,11 +590,6 @@ Lint/LiteralInCondition: ...@@ -886,11 +590,6 @@ Lint/LiteralInCondition:
Lint/LiteralInInterpolation: Lint/LiteralInInterpolation:
Enabled: true Enabled: true
# Use Kernel#loop with break rather than begin/end/until or begin/end/while
# for post-loop tests.
Lint/Loop:
Enabled: false
# Do not use nested method definitions. # Do not use nested method definitions.
Lint/NestedMethodDefinition: Lint/NestedMethodDefinition:
Enabled: true Enabled: true
...@@ -916,13 +615,8 @@ Lint/RequireParentheses: ...@@ -916,13 +615,8 @@ Lint/RequireParentheses:
Lint/RescueException: Lint/RescueException:
Enabled: true Enabled: true
# Do not use the same name as outer local variable for block arguments # Checks for the order which exceptions are rescued to avoid rescueing a less specific exception before a more specific exception.
# or block local variables. Lint/ShadowedException:
Lint/ShadowingOuterLocalVariable:
Enabled: false
# 'Checks for Object#to_s usage in string interpolation.
Lint/StringConversionInInterpolation:
Enabled: false Enabled: false
# Do not use prefix `_` for a variable that is used. # Do not use prefix `_` for a variable that is used.
...@@ -935,22 +629,10 @@ Lint/UnderscorePrefixedVariableName: ...@@ -935,22 +629,10 @@ Lint/UnderscorePrefixedVariableName:
Lint/UnneededDisable: Lint/UnneededDisable:
Enabled: false Enabled: false
# Checks for unused block arguments.
Lint/UnusedBlockArgument:
Enabled: false
# Checks for unused method arguments.
Lint/UnusedMethodArgument:
Enabled: false
# Unreachable code. # Unreachable code.
Lint/UnreachableCode: Lint/UnreachableCode:
Enabled: true Enabled: true
# Checks for useless access modifiers.
Lint/UselessAccessModifier:
Enabled: false
# Checks for useless assignment to a local variable. # Checks for useless assignment to a local variable.
Lint/UselessAssignment: Lint/UselessAssignment:
Enabled: true Enabled: true
...@@ -983,11 +665,6 @@ Performance/Casecmp: ...@@ -983,11 +665,6 @@ Performance/Casecmp:
Performance/DoubleStartEndWith: Performance/DoubleStartEndWith:
Enabled: true Enabled: true
# TODO: Enable EndWith Cop.
# Use `end_with?` instead of a regex match anchored to the end of a string.
Performance/EndWith:
Enabled: false
# Use `strip` instead of `lstrip.rstrip`. # Use `strip` instead of `lstrip.rstrip`.
Performance/LstripRstrip: Performance/LstripRstrip:
Enabled: true Enabled: true
...@@ -996,24 +673,6 @@ Performance/LstripRstrip: ...@@ -996,24 +673,6 @@ Performance/LstripRstrip:
Performance/RangeInclude: Performance/RangeInclude:
Enabled: true Enabled: true
# TODO: Enable RedundantBlockCall Cop.
# Use `yield` instead of `block.call`.
Performance/RedundantBlockCall:
Enabled: false
# TODO: Enable RedundantMatch Cop.
# Use `=~` instead of `String#match` or `Regexp#match` in a context where the
# returned `MatchData` is not needed.
Performance/RedundantMatch:
Enabled: false
# TODO: Enable RedundantMerge Cop.
# Use `Hash#[]=`, rather than `Hash#merge!` with a single key-value pair.
Performance/RedundantMerge:
# Max number of key-value pairs to consider an offense
MaxKeyValuePairs: 2
Enabled: false
# Use `sort` instead of `sort_by { |x| x }`. # Use `sort` instead of `sort_by { |x| x }`.
Performance/RedundantSortBy: Performance/RedundantSortBy:
Enabled: true Enabled: true
...@@ -1085,18 +744,6 @@ Rails/ReadWriteAttribute: ...@@ -1085,18 +744,6 @@ Rails/ReadWriteAttribute:
Rails/ScopeArgs: Rails/ScopeArgs:
Enabled: true Enabled: true
# Checks the correct usage of time zone aware methods.
# http://danilenko.org/2012/7/6/rails_timezones
Rails/TimeZone:
Enabled: false
# Use validates :attribute, hash of validations.
Rails/Validation:
Enabled: false
Rails/UniqBeforePluck:
Enabled: false
##################### RSpec ################################## ##################### RSpec ##################################
# Check that instances are not being stubbed globally. # Check that instances are not being stubbed globally.
......
# This configuration was generated by
# `rubocop --auto-gen-config --exclude-limit 0`
# on 2016-07-13 12:36:08 -0600 using RuboCop version 0.41.2.
# The point is for the user to remove these configuration records
# one by one as the offenses are removed from the code base.
# Note that changes in the inspected code, or installation of new
# versions of RuboCop, may require this file to be generated again.
# Offense count: 154
Lint/AmbiguousRegexpLiteral:
Enabled: false
# Offense count: 43
# Configuration parameters: AllowSafeAssignment.
Lint/AssignmentInCondition:
Enabled: false
# Offense count: 14
Lint/HandleExceptions:
Enabled: false
# Offense count: 21
Lint/IneffectiveAccessModifier:
Enabled: false
# Offense count: 2
Lint/Loop:
Enabled: false
# Offense count: 15
Lint/ShadowingOuterLocalVariable:
Enabled: false
# Offense count: 3
# Cop supports --auto-correct.
Lint/StringConversionInInterpolation:
Enabled: false
# Offense count: 44
# Cop supports --auto-correct.
# Configuration parameters: IgnoreEmptyBlocks, AllowUnusedKeywordArguments.
Lint/UnusedBlockArgument:
Enabled: false
# Offense count: 129
# Cop supports --auto-correct.
# Configuration parameters: AllowUnusedKeywordArguments, IgnoreEmptyMethods.
Lint/UnusedMethodArgument:
Enabled: false
# Offense count: 11
Lint/UselessAccessModifier:
Enabled: false
# Offense count: 12
# Cop supports --auto-correct.
Performance/PushSplat:
Enabled: false
# Offense count: 2
# Cop supports --auto-correct.
Performance/RedundantBlockCall:
Enabled: false
# Offense count: 4
# Cop supports --auto-correct.
Performance/RedundantMatch:
Enabled: false
# Offense count: 24
# Cop supports --auto-correct.
# Configuration parameters: MaxKeyValuePairs.
Performance/RedundantMerge:
Enabled: false
# Offense count: 60
Rails/OutputSafety:
Enabled: false
# Offense count: 128
# Configuration parameters: EnforcedStyle, SupportedStyles.
# SupportedStyles: strict, flexible
Rails/TimeZone:
Enabled: false
# Offense count: 12
# Cop supports --auto-correct.
# Configuration parameters: Include.
# Include: app/models/**/*.rb
Rails/Validation:
Enabled: false
# Offense count: 217
# Cop supports --auto-correct.
# Configuration parameters: EnforcedStyle, SupportedStyles, IndentationWidth.
# SupportedStyles: with_first_parameter, with_fixed_indentation
Style/AlignParameters:
Enabled: false
# Offense count: 32
# Cop supports --auto-correct.
# Configuration parameters: EnforcedStyle, SupportedStyles.
# SupportedStyles: always, conditionals
Style/AndOr:
Enabled: false
# Offense count: 47
# Cop supports --auto-correct.
# Configuration parameters: EnforcedStyle, SupportedStyles.
# SupportedStyles: percent_q, bare_percent
Style/BarePercentLiterals:
Enabled: false
# Offense count: 258
# Cop supports --auto-correct.
# Configuration parameters: EnforcedStyle, SupportedStyles.
# SupportedStyles: braces, no_braces, context_dependent
Style/BracesAroundHashParameters:
Enabled: false
# Offense count: 5
Style/CaseEquality:
Enabled: false
# Offense count: 19
# Cop supports --auto-correct.
Style/ColonMethodCall:
Enabled: false
# Offense count: 3
# Cop supports --auto-correct.
# Configuration parameters: Keywords.
# Keywords: TODO, FIXME, OPTIMIZE, HACK, REVIEW
Style/CommentAnnotation:
Enabled: false
# Offense count: 34
# Cop supports --auto-correct.
# Configuration parameters: EnforcedStyle, SupportedStyles, SingleLineConditionsOnly.
# SupportedStyles: assign_to_condition, assign_inside_condition
Style/ConditionalAssignment:
Enabled: false
# Offense count: 789
# Cop supports --auto-correct.
# Configuration parameters: EnforcedStyle, SupportedStyles.
# SupportedStyles: leading, trailing
Style/DotPosition:
Enabled: false
# Offense count: 13
Style/DoubleNegation:
Enabled: false
# Offense count: 3
Style/EachWithObject:
Enabled: false
# Offense count: 30
# Cop supports --auto-correct.
# Configuration parameters: EnforcedStyle, SupportedStyles.
# SupportedStyles: empty, nil, both
Style/EmptyElse:
Enabled: false
# Offense count: 3
# Cop supports --auto-correct.
Style/EmptyLiteral:
Enabled: false
# Offense count: 123
# Cop supports --auto-correct.
# Configuration parameters: AllowForAlignment, ForceEqualSignAlignment.
Style/ExtraSpacing:
Enabled: false
# Offense count: 7
# Configuration parameters: EnforcedStyle, SupportedStyles.
# SupportedStyles: format, sprintf, percent
Style/FormatString:
Enabled: false
# Offense count: 48
# Configuration parameters: MinBodyLength.
Style/GuardClause:
Enabled: false
# Offense count: 11
Style/IfInsideElse:
Enabled: false
# Offense count: 177
# Cop supports --auto-correct.
# Configuration parameters: MaxLineLength.
Style/IfUnlessModifier:
Enabled: false
# Offense count: 52
# Cop supports --auto-correct.
# Configuration parameters: EnforcedStyle, SupportedStyles, IndentationWidth.
# SupportedStyles: special_inside_parentheses, consistent, align_brackets
Style/IndentArray:
Enabled: false
# Offense count: 89
# Cop supports --auto-correct.
# Configuration parameters: EnforcedStyle, SupportedStyles, IndentationWidth.
# SupportedStyles: special_inside_parentheses, consistent, align_braces
Style/IndentHash:
Enabled: false
# Offense count: 12
# Cop supports --auto-correct.
# Configuration parameters: EnforcedStyle, SupportedStyles.
# SupportedStyles: line_count_dependent, lambda, literal
Style/Lambda:
Enabled: false
# Offense count: 6
# Cop supports --auto-correct.
Style/LineEndConcatenation:
Enabled: false
# Offense count: 13
# Cop supports --auto-correct.
Style/MethodCallParentheses:
Enabled: false
# Offense count: 3
Style/MultilineTernaryOperator:
Enabled: false
# Offense count: 62
# Cop supports --auto-correct.
Style/MutableConstant:
Enabled: false
# Offense count: 10
# Cop supports --auto-correct.
Style/NestedParenthesizedCalls:
Enabled: false
# Offense count: 12
# Cop supports --auto-correct.
# Configuration parameters: EnforcedStyle, MinBodyLength, SupportedStyles.
# SupportedStyles: skip_modifier_ifs, always
Style/Next:
Enabled: false
# Offense count: 8
# Cop supports --auto-correct.
# Configuration parameters: EnforcedOctalStyle, SupportedOctalStyles.
# SupportedOctalStyles: zero_with_o, zero_only
Style/NumericLiteralPrefix:
Enabled: false
# Offense count: 29
# Cop supports --auto-correct.
Style/ParallelAssignment:
Enabled: false
# Offense count: 208
# Cop supports --auto-correct.
# Configuration parameters: PreferredDelimiters.
Style/PercentLiteralDelimiters:
Enabled: false
# Offense count: 11
# Cop supports --auto-correct.
# Configuration parameters: EnforcedStyle, SupportedStyles.
# SupportedStyles: lower_case_q, upper_case_q
Style/PercentQLiterals:
Enabled: false
# Offense count: 13
# Cop supports --auto-correct.
Style/PerlBackrefs:
Enabled: false
# Offense count: 32
# Configuration parameters: NamePrefix, NamePrefixBlacklist, NameWhitelist.
# NamePrefix: is_, has_, have_
# NamePrefixBlacklist: is_, has_, have_
# NameWhitelist: is_a?
Style/PredicateName:
Enabled: false
# Offense count: 28
# Cop supports --auto-correct.
Style/PreferredHashMethods:
Enabled: false
# Offense count: 6
# Cop supports --auto-correct.
Style/Proc:
Enabled: false
# Offense count: 20
# Cop supports --auto-correct.
# Configuration parameters: EnforcedStyle, SupportedStyles.
# SupportedStyles: compact, exploded
Style/RaiseArgs:
Enabled: false
# Offense count: 3
# Cop supports --auto-correct.
Style/RedundantBegin:
Enabled: false
# Offense count: 1
# Cop supports --auto-correct.
Style/RedundantException:
Enabled: false
# Offense count: 23
# Cop supports --auto-correct.
Style/RedundantFreeze:
Enabled: false
# Offense count: 377
# Cop supports --auto-correct.
Style/RedundantSelf:
Enabled: false
# Offense count: 94
# Cop supports --auto-correct.
# Configuration parameters: EnforcedStyle, SupportedStyles, AllowInnerSlashes.
# SupportedStyles: slashes, percent_r, mixed
Style/RegexpLiteral:
Enabled: false
# Offense count: 17
# Cop supports --auto-correct.
Style/RescueModifier:
Enabled: false
# Offense count: 2
# Cop supports --auto-correct.
Style/SelfAssignment:
Enabled: false
# Offense count: 2
# Configuration parameters: Methods.
# Methods: {"reduce"=>["a", "e"]}, {"inject"=>["a", "e"]}
Style/SingleLineBlockParams:
Enabled: false
# Offense count: 50
# Cop supports --auto-correct.
# Configuration parameters: AllowIfMethodIsEmpty.
Style/SingleLineMethods:
Enabled: false
# Offense count: 14
# Cop supports --auto-correct.
# Configuration parameters: EnforcedStyle, SupportedStyles.
# SupportedStyles: space, no_space
Style/SpaceAroundEqualsInParameterDefault:
Enabled: false
# Offense count: 119
# Cop supports --auto-correct.
# Configuration parameters: EnforcedStyle, SupportedStyles.
# SupportedStyles: space, no_space
Style/SpaceBeforeBlockBraces:
Enabled: false
# Offense count: 11
# Cop supports --auto-correct.
# Configuration parameters: AllowForAlignment.
Style/SpaceBeforeFirstArg:
Enabled: false
# Offense count: 130
# Cop supports --auto-correct.
# Configuration parameters: EnforcedStyle, SupportedStyles, EnforcedStyleForEmptyBraces, SpaceBeforeBlockParameters.
# SupportedStyles: space, no_space
Style/SpaceInsideBlockBraces:
Enabled: false
# Offense count: 98
# Cop supports --auto-correct.
Style/SpaceInsideBrackets:
Enabled: false
# Offense count: 60
# Cop supports --auto-correct.
Style/SpaceInsideParens:
Enabled: false
# Offense count: 5
# Cop supports --auto-correct.
Style/SpaceInsidePercentLiteralDelimiters:
Enabled: false
# Offense count: 36
# Cop supports --auto-correct.
# Configuration parameters: SupportedStyles.
# SupportedStyles: use_perl_names, use_english_names
Style/SpecialGlobalVars:
EnforcedStyle: use_perl_names
# Offense count: 30
# Cop supports --auto-correct.
# Configuration parameters: EnforcedStyle, SupportedStyles.
# SupportedStyles: single_quotes, double_quotes
Style/StringLiteralsInInterpolation:
Enabled: false
# Offense count: 24
# Cop supports --auto-correct.
# Configuration parameters: IgnoredMethods.
# IgnoredMethods: respond_to, define_method
Style/SymbolProc:
Enabled: false
# Offense count: 23
# Cop supports --auto-correct.
# Configuration parameters: EnforcedStyleForMultiline, SupportedStyles.
# SupportedStyles: comma, consistent_comma, no_comma
Style/TrailingCommaInArguments:
Enabled: false
# Offense count: 113
# Cop supports --auto-correct.
# Configuration parameters: EnforcedStyleForMultiline, SupportedStyles.
# SupportedStyles: comma, consistent_comma, no_comma
Style/TrailingCommaInLiteral:
Enabled: false
# Offense count: 7
# Cop supports --auto-correct.
# Configuration parameters: AllowNamedUnderscoreVariables.
Style/TrailingUnderscoreVariable:
Enabled: false
# Offense count: 90
# Cop supports --auto-correct.
Style/TrailingWhitespace:
Enabled: false
# Offense count: 2
# Cop supports --auto-correct.
# Configuration parameters: ExactNameMatch, AllowPredicates, AllowDSLWriters, IgnoreClassMethods, Whitelist.
# Whitelist: to_ary, to_a, to_c, to_enum, to_h, to_hash, to_i, to_int, to_io, to_open, to_path, to_proc, to_r, to_regexp, to_str, to_s, to_sym
Style/TrivialAccessors:
Enabled: false
# Offense count: 3
# Cop supports --auto-correct.
Style/UnlessElse:
Enabled: false
# Offense count: 13
# Cop supports --auto-correct.
Style/UnneededInterpolation:
Enabled: false
# Offense count: 8
# Cop supports --auto-correct.
Style/ZeroLengthPredicate:
Enabled: false
...@@ -2,6 +2,7 @@ Please view this file on the master branch, on stable branches it's out of date. ...@@ -2,6 +2,7 @@ Please view this file on the master branch, on stable branches it's out of date.
v 8.10.0 (unreleased) v 8.10.0 (unreleased)
- Expose {should,force}_remove_source_branch (Ben Boeckel) - Expose {should,force}_remove_source_branch (Ben Boeckel)
- Disable PostgreSQL statement timeout during migrations
- Fix projects dropdown loading performance with a simplified api cal. !5113 (tiagonbotelho) - Fix projects dropdown loading performance with a simplified api cal. !5113 (tiagonbotelho)
- Fix commit builds API, return all builds for all pipelines for given commit. !4849 - Fix commit builds API, return all builds for all pipelines for given commit. !4849
- Replace Haml with Hamlit to make view rendering faster. !3666 - Replace Haml with Hamlit to make view rendering faster. !3666
...@@ -95,6 +96,7 @@ v 8.10.0 (unreleased) ...@@ -95,6 +96,7 @@ v 8.10.0 (unreleased)
- Redesign Builds and Pipelines pages - Redesign Builds and Pipelines pages
- Change status color and icon for running builds - Change status color and icon for running builds
- Fix markdown rendering for: consecutive labels references, label references that begin with a digit or contains `.` - Fix markdown rendering for: consecutive labels references, label references that begin with a digit or contains `.`
- Fix last update timestamp on issues not preserved on gitlab.com and project imports
v 8.9.6 v 8.9.6
- Fix importing of events under notes for GitLab projects. !5154 - Fix importing of events under notes for GitLab projects. !5154
......
...@@ -310,7 +310,7 @@ group :development, :test do ...@@ -310,7 +310,7 @@ group :development, :test do
gem 'spring-commands-spinach', '~> 1.1.0' gem 'spring-commands-spinach', '~> 1.1.0'
gem 'spring-commands-teaspoon', '~> 0.0.2' gem 'spring-commands-teaspoon', '~> 0.0.2'
gem 'rubocop', '~> 0.40.0', require: false gem 'rubocop', '~> 0.41.2', require: false
gem 'rubocop-rspec', '~> 1.5.0', require: false gem 'rubocop-rspec', '~> 1.5.0', require: false
gem 'scss_lint', '~> 0.47.0', require: false gem 'scss_lint', '~> 0.47.0', require: false
gem 'simplecov', '~> 0.11.0', require: false gem 'simplecov', '~> 0.11.0', require: false
......
...@@ -58,7 +58,7 @@ GEM ...@@ -58,7 +58,7 @@ GEM
faraday_middleware-multi_json (~> 0.0) faraday_middleware-multi_json (~> 0.0)
oauth2 (~> 1.0) oauth2 (~> 1.0)
asciidoctor (1.5.3) asciidoctor (1.5.3)
ast (2.2.0) ast (2.3.0)
attr_encrypted (3.0.1) attr_encrypted (3.0.1)
encryptor (~> 3.0.0) encryptor (~> 3.0.0)
attr_required (1.0.0) attr_required (1.0.0)
...@@ -497,7 +497,7 @@ GEM ...@@ -497,7 +497,7 @@ GEM
orm_adapter (0.5.0) orm_adapter (0.5.0)
paranoia (2.1.4) paranoia (2.1.4)
activerecord (~> 4.0) activerecord (~> 4.0)
parser (2.3.1.0) parser (2.3.1.2)
ast (~> 2.2) ast (~> 2.2)
pg (0.18.4) pg (0.18.4)
pkg-config (1.1.7) pkg-config (1.1.7)
...@@ -630,8 +630,8 @@ GEM ...@@ -630,8 +630,8 @@ GEM
rspec-retry (0.4.5) rspec-retry (0.4.5)
rspec-core rspec-core
rspec-support (3.5.0) rspec-support (3.5.0)
rubocop (0.40.0) rubocop (0.41.2)
parser (>= 2.3.1.0, < 3.0) parser (>= 2.3.1.1, < 3.0)
powerpack (~> 0.1) powerpack (~> 0.1)
rainbow (>= 1.99.1, < 3.0) rainbow (>= 1.99.1, < 3.0)
ruby-progressbar (~> 1.7) ruby-progressbar (~> 1.7)
...@@ -782,7 +782,7 @@ GEM ...@@ -782,7 +782,7 @@ GEM
unf (0.1.4) unf (0.1.4)
unf_ext unf_ext
unf_ext (0.0.7.2) unf_ext (0.0.7.2)
unicode-display_width (1.0.5) unicode-display_width (1.1.0)
unicorn (4.9.0) unicorn (4.9.0)
kgio (~> 2.6) kgio (~> 2.6)
rack rack
...@@ -970,7 +970,7 @@ DEPENDENCIES ...@@ -970,7 +970,7 @@ DEPENDENCIES
rqrcode-rails3 (~> 0.1.7) rqrcode-rails3 (~> 0.1.7)
rspec-rails (~> 3.5.0) rspec-rails (~> 3.5.0)
rspec-retry (~> 0.4.5) rspec-retry (~> 0.4.5)
rubocop (~> 0.40.0) rubocop (~> 0.41.2)
rubocop-rspec (~> 1.5.0) rubocop-rspec (~> 1.5.0)
ruby-fogbugz (~> 0.2.1) ruby-fogbugz (~> 0.2.1)
sanitize (~> 2.0) sanitize (~> 2.0)
......
...@@ -125,10 +125,6 @@ class Projects::IssuesController < Projects::ApplicationController ...@@ -125,10 +125,6 @@ class Projects::IssuesController < Projects::ApplicationController
render json: @issue.to_json(include: { milestone: {}, assignee: { methods: :avatar_url }, labels: { methods: :text_color } }) render json: @issue.to_json(include: { milestone: {}, assignee: { methods: :avatar_url }, labels: { methods: :text_color } })
end end
end end
rescue ActiveRecord::StaleObjectError
@conflict = true
render :edit
end end
def referenced_merge_requests def referenced_merge_requests
...@@ -230,7 +226,7 @@ class Projects::IssuesController < Projects::ApplicationController ...@@ -230,7 +226,7 @@ class Projects::IssuesController < Projects::ApplicationController
def issue_params def issue_params
params.require(:issue).permit( params.require(:issue).permit(
:title, :assignee_id, :position, :description, :confidential, :weight, :title, :assignee_id, :position, :description, :confidential, :weight,
:milestone_id, :due_date, :state_event, :task_num, :lock_version, label_ids: [] :milestone_id, :due_date, :state_event, :task_num, label_ids: []
) )
end end
......
...@@ -209,9 +209,6 @@ class Projects::MergeRequestsController < Projects::ApplicationController ...@@ -209,9 +209,6 @@ class Projects::MergeRequestsController < Projects::ApplicationController
render "edit" render "edit"
end end
rescue ActiveRecord::StaleObjectError
@conflict = true
render :edit
end end
def remove_wip def remove_wip
...@@ -476,7 +473,7 @@ class Projects::MergeRequestsController < Projects::ApplicationController ...@@ -476,7 +473,7 @@ class Projects::MergeRequestsController < Projects::ApplicationController
:title, :assignee_id, :source_project_id, :source_branch, :title, :assignee_id, :source_project_id, :source_branch,
:target_project_id, :target_branch, :milestone_id, :approver_ids, :target_project_id, :target_branch, :milestone_id, :approver_ids,
:state_event, :description, :task_num, :force_remove_source_branch, :state_event, :description, :task_num, :force_remove_source_branch,
:lock_version, :approvals_before_merge, label_ids: [] :approvals_before_merge, label_ids: []
) )
end end
......
...@@ -90,12 +90,6 @@ module Issuable ...@@ -90,12 +90,6 @@ module Issuable
User.find(assignee_id_was).update_cache_counts if assignee_id_was User.find(assignee_id_was).update_cache_counts if assignee_id_was
assignee.update_cache_counts if assignee assignee.update_cache_counts if assignee
end end
# We want to use optimistic lock for cases when only title or description are involved
# http://api.rubyonrails.org/classes/ActiveRecord/Locking/Optimistic.html
def locking_enabled?
title_changed? || description_changed?
end
end end
module ClassMethods module ClassMethods
......
= form_errors(issuable) = form_errors(issuable)
- if @conflict
.alert.alert-danger
Someone edited the #{issuable.class.model_name.human.downcase} the same time you did.
Please check out
= link_to "the #{issuable.class.model_name.human.downcase}", polymorphic_path([@project.namespace.becomes(Namespace), @project, issuable]), target: "_blank"
and make sure your changes will not unintentionally remove theirs
.form-group .form-group
= f.label :title, class: 'control-label' = f.label :title, class: 'control-label'
.col-sm-10 .col-sm-10
...@@ -199,12 +192,3 @@ ...@@ -199,12 +192,3 @@
= link_to 'Delete', polymorphic_path([@project.namespace.becomes(Namespace), @project, issuable]), data: { confirm: "#{issuable.class.name.titleize} will be removed! Are you sure?" }, = link_to 'Delete', polymorphic_path([@project.namespace.becomes(Namespace), @project, issuable]), data: { confirm: "#{issuable.class.name.titleize} will be removed! Are you sure?" },
method: :delete, class: 'btn btn-danger btn-grouped' method: :delete, class: 'btn btn-danger btn-grouped'
= link_to 'Cancel', polymorphic_path([@project.namespace.becomes(Namespace), @project, issuable]), class: 'btn btn-grouped btn-cancel' = link_to 'Cancel', polymorphic_path([@project.namespace.becomes(Namespace), @project, issuable]), class: 'btn btn-grouped btn-cancel'
= f.hidden_field :lock_version
%li.project-approvers.hide.approver-template{id: "user_{user_id}"}
= link_to "{approver_name}", "#"
.pull-right
= link_to "#", data: { confirm: "Are you sure you want to remove approver {approver_name}"}, class: "btn-xs btn btn-remove", title: 'Remove approver' do
= icon("sign-out")
Remove
# See http://doc.gitlab.com/ce/development/migration_style_guide.html
# for more information on how to write migrations for GitLab.
class AddLockToIssuables < ActiveRecord::Migration
include Gitlab::Database::MigrationHelpers
disable_ddl_transaction!
def up
add_column_with_default :issues, :lock_version, :integer, default: 0
add_column_with_default :merge_requests, :lock_version, :integer, default: 0
end
def down
remove_column :issues, :lock_version
remove_column :merge_requests, :lock_version
end
end
...@@ -73,11 +73,11 @@ ActiveRecord::Schema.define(version: 20160712171823) do ...@@ -73,11 +73,11 @@ ActiveRecord::Schema.define(version: 20160712171823) do
t.string "recaptcha_site_key" t.string "recaptcha_site_key"
t.string "recaptcha_private_key" t.string "recaptcha_private_key"
t.integer "metrics_port", default: 8089 t.integer "metrics_port", default: 8089
t.boolean "akismet_enabled", default: false
t.string "akismet_api_key"
t.integer "metrics_sample_interval", default: 15 t.integer "metrics_sample_interval", default: 15
t.boolean "sentry_enabled", default: false t.boolean "sentry_enabled", default: false
t.string "sentry_dsn" t.string "sentry_dsn"
t.boolean "akismet_enabled", default: false
t.string "akismet_api_key"
t.boolean "email_author_in_body", default: false t.boolean "email_author_in_body", default: false
t.integer "default_group_visibility" t.integer "default_group_visibility"
t.boolean "repository_checks_enabled", default: false t.boolean "repository_checks_enabled", default: false
...@@ -87,6 +87,7 @@ ActiveRecord::Schema.define(version: 20160712171823) do ...@@ -87,6 +87,7 @@ ActiveRecord::Schema.define(version: 20160712171823) do
t.string "health_check_access_token" t.string "health_check_access_token"
t.boolean "send_user_confirmation_email", default: false t.boolean "send_user_confirmation_email", default: false
t.integer "container_registry_token_expire_delay", default: 5 t.integer "container_registry_token_expire_delay", default: 5
t.boolean "user_default_external", default: false, null: false
t.text "after_sign_up_text" t.text "after_sign_up_text"
t.boolean "elasticsearch_indexing", default: false, null: false t.boolean "elasticsearch_indexing", default: false, null: false
t.boolean "elasticsearch_search", default: false, null: false t.boolean "elasticsearch_search", default: false, null: false
...@@ -94,7 +95,6 @@ ActiveRecord::Schema.define(version: 20160712171823) do ...@@ -94,7 +95,6 @@ ActiveRecord::Schema.define(version: 20160712171823) do
t.string "elasticsearch_port", default: "9200" t.string "elasticsearch_port", default: "9200"
t.string "repository_storage", default: "default" t.string "repository_storage", default: "default"
t.string "enabled_git_access_protocol" t.string "enabled_git_access_protocol"
t.boolean "user_default_external", default: false, null: false
end end
create_table "approvals", force: :cascade do |t| create_table "approvals", force: :cascade do |t|
...@@ -190,8 +190,8 @@ ActiveRecord::Schema.define(version: 20160712171823) do ...@@ -190,8 +190,8 @@ ActiveRecord::Schema.define(version: 20160712171823) do
t.text "artifacts_metadata" t.text "artifacts_metadata"
t.integer "erased_by_id" t.integer "erased_by_id"
t.datetime "erased_at" t.datetime "erased_at"
t.datetime "artifacts_expire_at"
t.string "environment" t.string "environment"
t.datetime "artifacts_expire_at"
t.integer "artifacts_size" t.integer "artifacts_size"
end end
...@@ -545,7 +545,6 @@ ActiveRecord::Schema.define(version: 20160712171823) do ...@@ -545,7 +545,6 @@ ActiveRecord::Schema.define(version: 20160712171823) do
t.boolean "confidential", default: false t.boolean "confidential", default: false
t.datetime "deleted_at" t.datetime "deleted_at"
t.date "due_date" t.date "due_date"
t.integer "lock_version", default: 0, null: false
end end
add_index "issues", ["assignee_id"], name: "index_issues_on_assignee_id", using: :btree add_index "issues", ["assignee_id"], name: "index_issues_on_assignee_id", using: :btree
...@@ -702,7 +701,6 @@ ActiveRecord::Schema.define(version: 20160712171823) do ...@@ -702,7 +701,6 @@ ActiveRecord::Schema.define(version: 20160712171823) do
t.datetime "deleted_at" t.datetime "deleted_at"
t.integer "approvals_before_merge" t.integer "approvals_before_merge"
t.string "rebase_commit_sha" t.string "rebase_commit_sha"
t.integer "lock_version", default: 0, null: false
end end
add_index "merge_requests", ["assignee_id"], name: "index_merge_requests_on_assignee_id", using: :btree add_index "merge_requests", ["assignee_id"], name: "index_merge_requests_on_assignee_id", using: :btree
...@@ -878,10 +876,10 @@ ActiveRecord::Schema.define(version: 20160712171823) do ...@@ -878,10 +876,10 @@ ActiveRecord::Schema.define(version: 20160712171823) do
t.integer "user_id", null: false t.integer "user_id", null: false
t.string "token", null: false t.string "token", null: false
t.string "name", null: false t.string "name", null: false
t.boolean "revoked", default: false
t.datetime "expires_at"
t.datetime "created_at", null: false t.datetime "created_at", null: false
t.datetime "updated_at", null: false t.datetime "updated_at", null: false
t.boolean "revoked", default: false
t.datetime "expires_at"
end end
add_index "personal_access_tokens", ["token"], name: "index_personal_access_tokens_on_token", unique: true, using: :btree add_index "personal_access_tokens", ["token"], name: "index_personal_access_tokens_on_token", unique: true, using: :btree
...@@ -1048,9 +1046,9 @@ ActiveRecord::Schema.define(version: 20160712171823) do ...@@ -1048,9 +1046,9 @@ ActiveRecord::Schema.define(version: 20160712171823) do
t.string "type" t.string "type"
t.string "title" t.string "title"
t.integer "project_id" t.integer "project_id"
t.datetime "created_at", null: false t.datetime "created_at"
t.datetime "updated_at", null: false t.datetime "updated_at"
t.boolean "active", null: false t.boolean "active", default: false, null: false
t.text "properties" t.text "properties"
t.boolean "template", default: false t.boolean "template", default: false
t.boolean "push_events", default: true t.boolean "push_events", default: true
......
...@@ -89,7 +89,7 @@ Feature: Project Merge Requests ...@@ -89,7 +89,7 @@ Feature: Project Merge Requests
Then The list should be sorted by "Oldest updated" Then The list should be sorted by "Oldest updated"
@javascript @javascript
Scenario: Visiting Merge Requests from a different Project after sorting Scenario: Visiting Merge Requests from a differente Project after sorting
Given I visit project "Shop" merge requests page Given I visit project "Shop" merge requests page
And I sort the list by "Oldest updated" And I sort the list by "Oldest updated"
And I visit dashboard merge requests page And I visit dashboard merge requests page
......
...@@ -20,11 +20,19 @@ module Gitlab ...@@ -20,11 +20,19 @@ module Gitlab
if Database.postgresql? if Database.postgresql?
options = options.merge({ algorithm: :concurrently }) options = options.merge({ algorithm: :concurrently })
disable_statement_timeout
end end
add_index(table_name, column_name, options) add_index(table_name, column_name, options)
end end
# Long-running migrations may take more than the timeout allowed by
# the database. Disable the session's statement timeout to ensure
# migrations don't get killed prematurely. (PostgreSQL only)
def disable_statement_timeout
ActiveRecord::Base.connection.execute('SET statement_timeout TO 0') if Database.postgresql?
end
# Updates the value of a column in batches. # Updates the value of a column in batches.
# #
# This method updates the table in batches of 5% of the total row count. # This method updates the table in batches of 5% of the total row count.
...@@ -133,6 +141,8 @@ module Gitlab ...@@ -133,6 +141,8 @@ module Gitlab
'in the body of your migration class' 'in the body of your migration class'
end end
disable_statement_timeout
transaction do transaction do
add_column(table, column, type, default: nil) add_column(table, column, type, default: nil)
......
...@@ -15,32 +15,35 @@ module Gitlab ...@@ -15,32 +15,35 @@ module Gitlab
end end
def execute def execute
project_identifier = CGI.escape(project.import_source) ActiveRecord::Base.no_touching do
project_identifier = CGI.escape(project.import_source)
# Issues && Comments
issues = client.issues(project_identifier) # Issues && Comments
issues = client.issues(project_identifier)
issues.each do |issue|
body = @formatter.author_line(issue["author"]["name"]) issues.each do |issue|
body += issue["description"] body = @formatter.author_line(issue["author"]["name"])
body += issue["description"]
comments = client.issue_comments(project_identifier, issue["id"])
comments = client.issue_comments(project_identifier, issue["id"])
if comments.any?
body += @formatter.comments_header if comments.any?
body += @formatter.comments_header
end
comments.each do |comment|
body += @formatter.comment(comment["author"]["name"], comment["created_at"], comment["body"])
end
project.issues.create!(
iid: issue["iid"],
description: body,
title: issue["title"],
state: issue["state"],
updated_at: issue["updated_at"],
author_id: gl_user_id(project, issue["author"]["id"])
)
end end
comments.each do |comment|
body += @formatter.comment(comment["author"]["name"], comment["created_at"], comment["body"])
end
project.issues.create!(
iid: issue["iid"],
description: body,
title: issue["title"],
state: issue["state"],
author_id: gl_user_id(project, issue["author"]["id"])
)
end end
true true
......
...@@ -12,7 +12,10 @@ module Gitlab ...@@ -12,7 +12,10 @@ module Gitlab
json = IO.read(@path) json = IO.read(@path)
@tree_hash = ActiveSupport::JSON.decode(json) @tree_hash = ActiveSupport::JSON.decode(json)
@project_members = @tree_hash.delete('project_members') @project_members = @tree_hash.delete('project_members')
create_relations
ActiveRecord::Base.no_touching do
create_relations
end
rescue => e rescue => e
@shared.error(e) @shared.error(e)
false false
......
...@@ -120,17 +120,6 @@ describe 'Issues', feature: true do ...@@ -120,17 +120,6 @@ describe 'Issues', feature: true do
expect(page).to have_content date.to_s(:medium) expect(page).to have_content date.to_s(:medium)
end end
end end
it 'warns about version conflict' do
issue.update(title: "New title")
fill_in 'issue_title', with: 'bug 345'
fill_in 'issue_description', with: 'bug description'
click_button 'Save changes'
expect(page).to have_content 'Someone edited the issue the same time you did'
end
end end
end end
......
...@@ -17,17 +17,6 @@ feature 'Edit Merge Request', feature: true do ...@@ -17,17 +17,6 @@ feature 'Edit Merge Request', feature: true do
it 'form should have class js-quick-submit' do it 'form should have class js-quick-submit' do
expect(page).to have_selector('.js-quick-submit') expect(page).to have_selector('.js-quick-submit')
end end
it 'warns about version conflict' do
merge_request.update(title: "New title")
fill_in 'merge_request_title', with: 'bug 345'
fill_in 'merge_request_description', with: 'bug description'
click_button 'Save changes'
expect(page).to have_content 'Someone edited the merge request the same time you did'
end
end end
context 'saving the MR that needs approvals' do context 'saving the MR that needs approvals' do
......
...@@ -13,6 +13,10 @@ describe Gitlab::Database::MigrationHelpers, lib: true do ...@@ -13,6 +13,10 @@ describe Gitlab::Database::MigrationHelpers, lib: true do
context 'outside a transaction' do context 'outside a transaction' do
before do before do
expect(model).to receive(:transaction_open?).and_return(false) expect(model).to receive(:transaction_open?).and_return(false)
unless Gitlab::Database.postgresql?
allow_any_instance_of(Gitlab::Database::MigrationHelpers).to receive(:disable_statement_timeout)
end
end end
context 'using PostgreSQL' do context 'using PostgreSQL' do
......
...@@ -30,6 +30,14 @@ describe Gitlab::ImportExport::ProjectTreeRestorer, services: true do ...@@ -30,6 +30,14 @@ describe Gitlab::ImportExport::ProjectTreeRestorer, services: true do
expect(Event.where.not(data: nil).first.data[:ref]).not_to be_empty expect(Event.where.not(data: nil).first.data[:ref]).not_to be_empty
end end
it 'preserves updated_at on issues' do
restored_project_json
issue = Issue.where(description: 'Aliquam enim illo et possimus.').first
expect(issue.reload.updated_at.to_s).to eq('2016-06-14 15:02:47 UTC')
end
context 'event at forth level of the tree' do context 'event at forth level of the tree' do
let(:event) { Event.where(title: 'test levels').first } let(:event) { Event.where(title: 'test levels').first }
......
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