diff options
author | Andrew Newdigate <andrew@gitlab.com> | 2017-09-28 20:43:07 +0300 |
---|---|---|
committer | Andrew Newdigate <andrew@gitlab.com> | 2017-09-28 20:43:07 +0300 |
commit | 0a014bd71c8a6786cae95159e642d056df64cd4b (patch) | |
tree | 9349018ec8b0853f2f10511daa4524d179a81a22 | |
parent | eae90642171aeedf5c10a51c9e7c6977ce01a731 (diff) | |
parent | 91a3e2fcde7eede443035654d3a2e9d84eb23bc3 (diff) |
Merge branch 'rc/use-gitlab-styles' into 'master'
Use gitlab-styles
See merge request gitlab-org/gitaly!359
-rw-r--r-- | .codeclimate.yml | 2 | ||||
-rw-r--r-- | .gitlab-ci.yml | 2 | ||||
-rw-r--r-- | .rubocop.yml | 1080 | ||||
-rw-r--r-- | .rubocop_todo.yml | 70 | ||||
-rwxr-xr-x | _support/package/package | 16 | ||||
-rw-r--r-- | _support/run.rb | 2 | ||||
-rwxr-xr-x | _support/test-boot-time | 30 | ||||
-rw-r--r-- | _support/test-cluster/app1/etc-gitlab/gitlab.rb | 4 | ||||
-rwxr-xr-x | _support/update-downstream-server-version.rb | 2 | ||||
-rwxr-xr-x | _support/vendor-gitlab-git | 10 | ||||
-rw-r--r-- | internal/service/repository/apply_gitattributes.go | 1 | ||||
-rw-r--r-- | ruby/Gemfile | 4 | ||||
-rw-r--r-- | ruby/Gemfile.lock | 26 | ||||
-rw-r--r-- | ruby/lib/gitaly_server/commit_service.rb | 10 | ||||
-rw-r--r-- | ruby/lib/gitaly_server/diff_service.rb | 4 | ||||
-rw-r--r-- | ruby/lib/gitaly_server/ref_service.rb | 24 | ||||
-rw-r--r-- | ruby/lib/gitaly_server/utils.rb | 6 |
17 files changed, 90 insertions, 1203 deletions
diff --git a/.codeclimate.yml b/.codeclimate.yml index 44e2edcee..bb06b8b33 100644 --- a/.codeclimate.yml +++ b/.codeclimate.yml @@ -6,7 +6,7 @@ engines: enabled: true gofmt: enabled: true - rubocop: + rubocop-gitlab: enabled: true ratings: paths: diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 963ff2206..3845fff82 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -82,7 +82,7 @@ codeclimate: services: - docker:dind script: - - docker run --env CODECLIMATE_CODE="$PWD" --volume "$PWD":/code --volume /var/run/docker.sock:/var/run/docker.sock --volume /tmp/cc:/tmp/cc codeclimate/codeclimate analyze -f json > codeclimate.json + - docker run --env CODECLIMATE_CODE="$PWD" --volume "$PWD":/code --volume /var/run/docker.sock:/var/run/docker.sock --volume /tmp/cc:/tmp/cc dev.gitlab.org:5005/gitlab/gitlab-build-images:gitlab-codeclimate analyze -f json > codeclimate.json artifacts: paths: [codeclimate.json] allow_failure: true diff --git a/.rubocop.yml b/.rubocop.yml index ea237e011..021918591 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -1,1086 +1,12 @@ -require: - - rubocop-rspec +inherit_gem: + gitlab-styles: + - rubocop-default.yml inherit_from: .rubocop_todo.yml AllCops: - TargetRubyVersion: 2.3 - # Cop names are not d§splayed in offense messages by default. Change behavior - # by overriding DisplayCopNames, or by giving the -D/--display-cop-names - # option. - DisplayCopNames: true - # Style guide URLs are not displayed in offense messages by default. Change - # behavior by overriding DisplayStyleGuide, or by giving the - # -S/--display-style-guide option. DisplayStyleGuide: false Exclude: - 'vendor/**/*' - 'ruby/vendor/**/*' - '_build/**/*' - -# Gems in consecutive lines should be alphabetically sorted -Bundler/OrderedGems: - Enabled: false - -# Layout ###################################################################### - -# Check indentation of private/protected visibility modifiers. -Layout/AccessModifierIndentation: - Enabled: true - -# Align the elements of an array literal if they span more than one line. -Layout/AlignArray: - Enabled: true - -# Align the elements of a hash literal if they span more than one line. -Layout/AlignHash: - Enabled: true - -# Here we check if the parameters on a multi-line method call or -# definition are aligned. -Layout/AlignParameters: - Enabled: false - -# Put end statement of multiline block on its own line. -Layout/BlockEndNewline: - Enabled: true - -# Indentation of when in a case/when/[else/]end. -Layout/CaseIndentation: - Enabled: true - -# Indentation of comments. -Layout/CommentIndentation: - Enabled: true - -# Multi-line method chaining should be done with leading dots. -Layout/DotPosition: - Enabled: true - EnforcedStyle: leading - -# Align elses and elsifs correctly. -Layout/ElseAlignment: - Enabled: true - -# Use empty lines between defs. -Layout/EmptyLineBetweenDefs: - Enabled: true - -# Don't use several empty lines in a row. -Layout/EmptyLines: - Enabled: true - -# Keep blank lines around access modifiers. -Layout/EmptyLinesAroundAccessModifier: - Enabled: true - -# Keeps track of empty lines around block bodies. -Layout/EmptyLinesAroundBlockBody: - Enabled: true - -# Keeps track of empty lines around class bodies. -Layout/EmptyLinesAroundClassBody: - Enabled: true - -# Keeps track of empty lines around method bodies. -Layout/EmptyLinesAroundMethodBody: - Enabled: true - -# Keeps track of empty lines around module bodies. -Layout/EmptyLinesAroundModuleBody: - Enabled: true - -# Use Unix-style line endings. -Layout/EndOfLine: - Enabled: true - -# Checks for a line break before the first parameter in a multi-line method -# parameter definition. -Layout/FirstMethodParameterLineBreak: - Enabled: true - -# Keep indentation straight. -Layout/IndentationConsistency: - Enabled: true - -# Use 2 spaces for indentation. -Layout/IndentationWidth: - Enabled: true - -# Checks the indentation of the first line of the right-hand-side of a -# multi-line assignment. -Layout/IndentAssignment: - Enabled: true - -# Comments should start with a space. -Layout/LeadingCommentSpace: - Enabled: true - -# Checks that the closing brace in an array literal is either on the same line -# as the last array element, or a new line. -Layout/MultilineArrayBraceLayout: - Enabled: true - EnforcedStyle: symmetrical - -# Ensures newlines after multiline block do statements. -Layout/MultilineBlockLayout: - Enabled: true - -# Checks that the closing brace in a hash literal is either on the same line as -# the last hash element, or a new line. -Layout/MultilineHashBraceLayout: - Enabled: true - EnforcedStyle: symmetrical - -# Checks that the closing brace in a method call is either on the same line as -# the last method argument, or a new line. -Layout/MultilineMethodCallBraceLayout: - Enabled: false - EnforcedStyle: symmetrical - -# Checks indentation of method calls with the dot operator that span more than -# one line. -Layout/MultilineMethodCallIndentation: - Enabled: false - -# Checks that the closing brace in a method definition is symmetrical with -# respect to the opening brace and the method parameters. -Layout/MultilineMethodDefinitionBraceLayout: - Enabled: false - -# Checks indentation of binary operations that span more than one line. -Layout/MultilineOperationIndentation: - Enabled: true - EnforcedStyle: indented - -# Use spaces after colons. -Layout/SpaceAfterColon: - Enabled: true - -# Use spaces after commas. -Layout/SpaceAfterComma: - Enabled: true - -# Do not put a space between a method name and the opening parenthesis in a -# method definition. -Layout/SpaceAfterMethodName: - Enabled: true - -# Tracks redundant space after the ! operator. -Layout/SpaceAfterNot: - Enabled: true - -# Use spaces after semicolons. -Layout/SpaceAfterSemicolon: - Enabled: true - -# Use space around equals in parameter default -Layout/SpaceAroundEqualsInParameterDefault: - Enabled: true - -# Use a space around keywords if appropriate. -Layout/SpaceAroundKeyword: - Enabled: true - -# Use a single space around operators. -Layout/SpaceAroundOperators: - Enabled: true - -# Checks that block braces have or don't have a space before the opening -# brace depending on configuration. -# Configuration parameters: EnforcedStyle, SupportedStyles. -# SupportedStyles: space, no_space -Layout/SpaceBeforeBlockBraces: - Enabled: true - -# No spaces before commas. -Layout/SpaceBeforeComma: - Enabled: true - -# Checks for missing space between code and a comment on the same line. -Layout/SpaceBeforeComment: - Enabled: true - -# No spaces before semicolons. -Layout/SpaceBeforeSemicolon: - Enabled: true - -# Checks for spaces inside square brackets. -Layout/SpaceInsideBrackets: - Enabled: true - -# Use spaces inside hash literal braces - or don't. -Layout/SpaceInsideHashLiteralBraces: - Enabled: true - -# No spaces inside range literals. -Layout/SpaceInsideRangeLiteral: - Enabled: true - -# Checks for padding/surrounding spaces inside string interpolation. -Layout/SpaceInsideStringInterpolation: - EnforcedStyle: no_space - Enabled: true - -# No hard tabs. -Layout/Tab: - Enabled: true - -# Checks trailing blank lines and final newline. -Layout/TrailingBlankLines: - Enabled: true - -# Avoid trailing whitespace. -Layout/TrailingWhitespace: - Enabled: true - -# Style ####################################################################### - -# Check the naming of accessor methods for get_/set_. -Style/AccessorMethodName: - Enabled: false - -# Use alias_method instead of alias. -Style/Alias: - EnforcedStyle: prefer_alias_method - Enabled: true - -# Whether `and` and `or` are banned only in conditionals (conditionals) -# or completely (always). -Style/AndOr: - Enabled: true - -# Use `Array#join` instead of `Array#*`. -Style/ArrayJoin: - Enabled: true - -# Use only ascii symbols in comments. -Style/AsciiComments: - Enabled: true - -# Use only ascii symbols in identifiers. -Style/AsciiIdentifiers: - Enabled: true - -# Checks for uses of Module#attr. -Style/Attr: - Enabled: true - -# Avoid the use of BEGIN blocks. -Style/BeginBlock: - Enabled: true - -# Do not use block comments. -Style/BlockComments: - Enabled: true - -# Avoid using {...} for multi-line blocks (multiline chaining is # always -# ugly). Prefer {...} over do...end for single-line blocks. -Style/BlockDelimiters: - Enabled: true - - # This cop checks for braces around the last parameter in a method call -# if the last parameter is a hash. -Style/BracesAroundHashParameters: - Enabled: false - -# This cop checks for uses of the case equality operator(===). -Style/CaseEquality: - Enabled: false - -# Checks for uses of character literals. -Style/CharacterLiteral: - Enabled: true - -# Use CamelCase for classes and modules.' -Style/ClassAndModuleCamelCase: - Enabled: true - -# Checks style of children classes and modules. -Style/ClassAndModuleChildren: - Enabled: false - -# Enforces consistent use of `Object#is_a?` or `Object#kind_of?`. -Style/ClassCheck: - Enabled: true - -# Use self when defining module/class methods. -Style/ClassMethods: - Enabled: true - -# Avoid the use of class variables. -Style/ClassVars: - Enabled: true - -# This cop checks for methods invoked via the :: operator instead -# of the . operator (like FileUtils::rmdir instead of FileUtils.rmdir). -Style/ColonMethodCall: - Enabled: true - -# This cop checks that comment annotation keywords are written according -# to guidelines. -Style/CommentAnnotation: - Enabled: false - -# Check for `if` and `case` statements where each branch is used for -# assignment to the same variable when using the return of the -# condition can be used instead. -Style/ConditionalAssignment: - Enabled: true - -# Constants should use SCREAMING_SNAKE_CASE. -Style/ConstantName: - Enabled: true - -# Use def with parentheses when there are arguments. -Style/DefWithParentheses: - Enabled: true - -# Document classes and non-namespace modules. -Style/Documentation: - Enabled: false - -# This cop checks for uses of double negation (!!) to convert something -# to a boolean value. As this is both cryptic and usually redundant, it -# should be avoided. -Style/DoubleNegation: - Enabled: false - -# Avoid the use of END blocks. -Style/EndBlock: - Enabled: true - -# Favor the use of Fixnum#even? && Fixnum#odd? -Style/EvenOdd: - Enabled: true - -# Use snake_case for source file names. -Style/FileName: - Enabled: true - -# Checks for flip flops. -Style/FlipFlop: - Enabled: true - -# Checks use of for or each in multiline loops. -Style/For: - Enabled: true - -# Checks if there is a magic comment to enforce string literals -Style/FrozenStringLiteralComment: - Enabled: false - -# Do not introduce global variables. -Style/GlobalVars: - Enabled: true - -# Prefer Ruby 1.9 hash syntax `{ a: 1, b: 2 }` -# over 1.8 syntax `{ :a => 1, :b => 2 }`. -Style/HashSyntax: - Enabled: true - -# Checks that conditional statements do not have an identical line at the -# end of each branch, which can validly be moved out of the conditional. -Style/IdenticalConditionalBranches: - Enabled: true - -# Do not use if x; .... Use the ternary operator instead. -Style/IfWithSemicolon: - Enabled: true - -# Use Kernel#loop for infinite loops. -Style/InfiniteLoop: - Enabled: true - -# Use lambda.call(...) instead of lambda.(...). -Style/LambdaCall: - Enabled: true - -# Checks if the method definitions have or don't have parentheses. -Style/MethodDefParentheses: - Enabled: true - -# Use the configured style when naming methods. -Style/MethodName: - Enabled: true - -# Checks for usage of `extend self` in modules. -Style/ModuleFunction: - Enabled: false - -# Avoid multi-line chains of blocks. -Style/MultilineBlockChain: - Enabled: true - -# Do not use then for multi-line if/unless. -Style/MultilineIfThen: - Enabled: true - -# Avoid multi-line `? :` (the ternary operator), use if/unless instead. -Style/MultilineTernaryOperator: - Enabled: true - -# This cop checks whether some constant value isn't a -# mutable literal (e.g. array or hash). -Style/MutableConstant: - Enabled: true - -# Favor unless over if for negative conditions (or control flow or). -Style/NegatedIf: - Enabled: true - -# Avoid using nested modifiers. -Style/NestedModifier: - Enabled: true - -# Use one expression per branch in a ternary operator. -Style/NestedTernaryOperator: - Enabled: true - -# Prefer x.nil? to x == nil. -Style/NilComparison: - Enabled: true - -# Checks for redundant nil checks. -Style/NonNilCheck: - Enabled: true - -# Use ! instead of not. -Style/Not: - Enabled: true - -# Add underscores to large numeric literals to improve their readability. -Style/NumericLiterals: - Enabled: false - -# Favor the ternary operator(?:) over if/then/else/end constructs. -Style/OneLineConditional: - Enabled: true - -# When defining binary operators, name the argument other. -Style/OpMethod: - Enabled: true - -# Don't use parentheses around the condition of an if/unless/while. -Style/ParenthesesAroundCondition: - Enabled: true - -# This cop (by default) checks for uses of methods Hash#has_key? and -# Hash#has_value? where it enforces Hash#key? and Hash#value? -# It is configurable to enforce the inverse, using `verbose` method -# names also. -# Configuration parameters: EnforcedStyle, SupportedStyles. -# SupportedStyles: short, verbose -Style/PreferredHashMethods: - Enabled: false - -# Checks for an obsolete RuntimeException argument in raise/fail. -Style/RedundantException: - Enabled: true - -# Checks for parentheses that seem not to serve any purpose. -Style/RedundantParentheses: - Enabled: true - -# Don't use semicolons to terminate expressions. -Style/Semicolon: - Enabled: true - -# Checks for proper usage of fail and raise. -Style/SignalException: - EnforcedStyle: only_raise - Enabled: true - -# Check for the usage of parentheses around stabby lambda arguments. -Style/StabbyLambdaParentheses: - EnforcedStyle: require_parentheses - Enabled: true - -# Checks if uses of quotes match the configured preference. -Style/StringLiterals: - Enabled: false - -# Checks if configured preferred methods are used over non-preferred. -Style/StringMethods: - PreferredMethods: - intern: to_sym - Enabled: true - -# Use %i or %I for arrays of symbols. -Style/SymbolArray: - Enabled: false - -# This cop checks for trailing comma in array and hash literals. -Style/TrailingCommaInLiteral: - Enabled: true - EnforcedStyleForMultiline: no_comma - -# This cop checks for trailing comma in argument lists. -Style/TrailingCommaInArguments: - Enabled: true - EnforcedStyleForMultiline: no_comma - -# Checks for %W when interpolation is not needed. -Style/UnneededCapitalW: - Enabled: true - -# Checks for %q/%Q when single quotes or double quotes would do. -Style/UnneededPercentQ: - Enabled: false - -# Don't interpolate global, instance and class variables directly in strings. -Style/VariableInterpolation: - Enabled: true - -# Use the configured style when naming variables. -Style/VariableName: - EnforcedStyle: snake_case - Enabled: true - -# Use the configured style when numbering variables. -Style/VariableNumber: - Enabled: false - -# Use when x then ... for one-line cases. -Style/WhenThen: - Enabled: true - -# Checks for redundant do after while or until. -Style/WhileUntilDo: - Enabled: true - -# Favor modifier while/until usage when you have a single-line body. -Style/WhileUntilModifier: - Enabled: true - -# Use %w or %W for arrays of words. -Style/WordArray: - Enabled: true - -Style/PercentLiteralDelimiters: - Enabled: true - -# Use `proc` instead of `Proc.new`. -Style/Proc: - Enabled: true - -# Use `spam?` instead of `is_spam?` -# Configuration parameters: NamePrefix, NamePrefixBlacklist, NameWhitelist. -# NamePrefix: is_, has_, have_ -# NamePrefixBlacklist: is_, has_, have_ -# NameWhitelist: is_a? -Style/PredicateName: - Enabled: true - NamePrefixBlacklist: is_ - -# Metrics ##################################################################### - -# A calculated magnitude based on number of assignments, -# branches, and conditions. -Metrics/AbcSize: - Enabled: true - Max: 55.25 - -# This cop checks if the length of a block exceeds some maximum value. -Metrics/BlockLength: - Enabled: false - -# Avoid excessive block nesting. -Metrics/BlockNesting: - Enabled: true - Max: 4 - -# Avoid classes longer than 100 lines of code. -Metrics/ClassLength: - Enabled: false - -# A complexity metric that is strongly correlated to the number -# of test cases needed to validate a method. -Metrics/CyclomaticComplexity: - Enabled: true - Max: 14 - -# Limit lines to 80 characters. -Metrics/LineLength: - Enabled: false - -# Avoid methods longer than 10 lines of code. -Metrics/MethodLength: - Enabled: false - -# Avoid modules longer than 100 lines of code. -Metrics/ModuleLength: - Enabled: false - -# Avoid parameter lists longer than three or four parameters. -Metrics/ParameterLists: - Enabled: true - Max: 8 - -# A complexity metric geared towards measuring complexity for a human reader. -Metrics/PerceivedComplexity: - Enabled: true - Max: 17 - -# Lint ######################################################################## - -# Checks for ambiguous operators in the first argument of a method invocation -# without parentheses. -Lint/AmbiguousOperator: - Enabled: true - -# This cop checks for ambiguous regexp literals in the first argument of -# a method invocation without parentheses. -Lint/AmbiguousRegexpLiteral: - Enabled: false - -# This cop checks for assignments in the conditions of -# if/while/until. -Lint/AssignmentInCondition: - Enabled: false - -# Align block ends correctly. -Lint/BlockAlignment: - Enabled: true - -# Default values in optional keyword arguments and optional ordinal arguments -# should not refer back to the name of the argument. -Lint/CircularArgumentReference: - Enabled: true - -# Checks for condition placed in a confusing position relative to the keyword. -Lint/ConditionPosition: - Enabled: true - -# Check for debugger calls. -Lint/Debugger: - Enabled: true - -# Align ends corresponding to defs correctly. -Lint/DefEndAlignment: - Enabled: true - -# Check for deprecated class method calls. -Lint/DeprecatedClassMethods: - Enabled: true - -# Check for immutable argument given to each_with_object. -Lint/EachWithObjectArgument: - Enabled: true - -# Check for odd code arrangement in an else block. -Lint/ElseLayout: - Enabled: true - -# Checks for empty ensure block. -Lint/EmptyEnsure: - Enabled: true - -# Checks for the presence of `when` branches without a body. -Lint/EmptyWhen: - Enabled: true - -# Align ends correctly. -Lint/EndAlignment: - Enabled: true - -# END blocks should not be placed inside method definitions. -Lint/EndInMethod: - Enabled: true - -# Do not use return in an ensure block. -Lint/EnsureReturn: - Enabled: true - -# Catches floating-point literals too large or small for Ruby to represent. -Lint/FloatOutOfRange: - Enabled: true - -# The number of parameters to format/sprint must match the fields. -Lint/FormatParameterMismatch: - Enabled: true - -# This cop checks for *rescue* blocks with no body. -Lint/HandleExceptions: - Enabled: false - -# Checks for adjacent string literals on the same line, which could better be -# represented as a single string literal. -Lint/ImplicitStringConcatenation: - Enabled: true - -# 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 -# character. -Lint/InvalidCharacterLiteral: - Enabled: true - -# Checks of literals used in conditions. -Lint/LiteralInCondition: - Enabled: true - -# Checks for literals used in interpolation. -Lint/LiteralInInterpolation: - Enabled: true - -# This cop checks for uses of *begin...end while/until something*. -Lint/Loop: - Enabled: false - -# Do not use nested method definitions. -Lint/NestedMethodDefinition: - Enabled: true - -# Do not omit the accumulator when calling `next` in a `reduce`/`inject` block. -Lint/NextWithoutAccumulator: - Enabled: true - -# Checks for method calls with a space before the opening parenthesis. -Lint/ParenthesesAsGroupedExpression: - Enabled: true - -# Checks for `rand(1)` calls. Such calls always return `0` and most likely -# a mistake. -Lint/RandOne: - Enabled: true - -# Use parentheses in the method call to avoid confusion about precedence. -Lint/RequireParentheses: - Enabled: true - -# Avoid rescuing the Exception class. -Lint/RescueException: - Enabled: true - -# Checks for the order which exceptions are rescued to avoid rescueing a less specific exception before a more specific exception. -Lint/ShadowedException: - Enabled: false - -# This cop looks for use of the same name as outer local variables -# for block arguments or block local variables. -Lint/ShadowingOuterLocalVariable: - Enabled: false - -# Checks for Object#to_s usage in string interpolation. -Lint/StringConversionInInterpolation: - Enabled: true - -# Do not use prefix `_` for a variable that is used. -Lint/UnderscorePrefixedVariableName: - Enabled: true - -# This cop checks for using Fixnum or Bignum constant -Lint/UnifiedInteger: - Enabled: true - -# Checks for rubocop:disable comments that can be removed. -# Note: this cop is not disabled when disabling all cops. -# It must be explicitly disabled. -Lint/UnneededDisable: - Enabled: false - -# This cop checks for unneeded usages of splat expansion -Lint/UnneededSplatExpansion: - Enabled: false - -# Unreachable code. -Lint/UnreachableCode: - Enabled: true - -# This cop checks for unused block arguments. -Lint/UnusedBlockArgument: - Enabled: false - -# This cop checks for unused method arguments. -Lint/UnusedMethodArgument: - Enabled: false - -# Checks for useless access modifiers. -Lint/UselessAccessModifier: - Enabled: true - -# Checks for useless assignment to a local variable. -Lint/UselessAssignment: - Enabled: true - -# Checks for comparison of something with itself. -Lint/UselessComparison: - Enabled: true - -# Checks for useless `else` in `begin..end` without `rescue`. -Lint/UselessElseWithoutRescue: - Enabled: true - -# Checks for useless setter call to a local variable. -Lint/UselessSetterCall: - Enabled: true - -# Possible use of operator/literal/variable in void context. -Lint/Void: - Enabled: true - -# Performance ################################################################# - -# Use `casecmp` rather than `downcase ==`. -Performance/Casecmp: - Enabled: true - -# Use `str.{start,end}_with?(x, ..., y, ...)` instead of -# `str.{start,end}_with?(x, ...) || str.{start,end}_with?(y, ...)`. -Performance/DoubleStartEndWith: - Enabled: true - -# Use `strip` instead of `lstrip.rstrip`. -Performance/LstripRstrip: - Enabled: true - -# Use `Range#cover?` instead of `Range#include?`. -Performance/RangeInclude: - Enabled: true - -# This cop identifies the use of a `&block` parameter and `block.call` -# where `yield` would do just as well. -Performance/RedundantBlockCall: - Enabled: true - -# This cop identifies use of `Regexp#match` or `String#match in a context -# where the integral return value of `=~` would do just as well. -Performance/RedundantMatch: - Enabled: true - -# This cop identifies places where `Hash#merge!` can be replaced by -# `Hash#[]=`. -Performance/RedundantMerge: - Enabled: true - MaxKeyValuePairs: 1 - -# Use `sort` instead of `sort_by { |x| x }`. -Performance/RedundantSortBy: - Enabled: true - -# Use `start_with?` instead of a regex match anchored to the beginning of a -# string. -Performance/StartWith: - Enabled: true - -# Use `tr` instead of `gsub` when you are replacing the same number of -# characters. Use `delete` instead of `gsub` when you are deleting -# characters. -Performance/StringReplacement: - Enabled: true - -# Checks for `.times.map` calls. -Performance/TimesMap: - Enabled: true - -# Security #################################################################### - -# This cop checks for the use of JSON class methods which have potential -# security issues. -Security/JSONLoad: - Enabled: true - -# This cop checks for the use of *Kernel#eval*. -Security/Eval: - Enabled: true - -# Rails ####################################################################### - -# Enables Rails cops. -Rails: - Enabled: true - -# Enforces consistent use of action filter methods. -Rails/ActionFilter: - Enabled: true - EnforcedStyle: action - -# Checks the correct usage of date aware methods, such as `Date.today`, -# `Date.current`, etc. -Rails/Date: - Enabled: false - -# Prefer delegate method for delegations. -# Disabled per https://gitlab.com/gitlab-org/gitlab-ce/issues/35869 -Rails/Delegate: - Enabled: false - -# This cop checks dynamic `find_by_*` methods. -Rails/DynamicFindBy: - Enabled: false - -# This cop enforces that 'exit' calls are not used within a rails app. -Rails/Exit: - Enabled: true - -# Prefer `find_by` over `where.first`. -Rails/FindBy: - Enabled: true - -# Prefer `all.find_each` over `all.find`. -Rails/FindEach: - Enabled: true - -# Prefer has_many :through to has_and_belongs_to_many. -Rails/HasAndBelongsToMany: - Enabled: true - -# This cop is used to identify usages of http methods like `get`, `post`, -# `put`, `patch` without the usage of keyword arguments in your tests and -# change them to use keyword args. -Rails/HttpPositionalArguments: - Enabled: false - -# Checks for calls to puts, print, etc. -Rails/Output: - Enabled: true - -# This cop checks for the use of output safety calls like html_safe and -# raw. -Rails/OutputSafety: - Enabled: false - -# Checks for incorrect grammar when using methods like `3.day.ago`. -Rails/PluralizationGrammar: - Enabled: true - -# Checks for `read_attribute(:attr)` and `write_attribute(:attr, val)`. -Rails/ReadWriteAttribute: - Enabled: false - - -# Checks the arguments of ActiveRecord scopes. -Rails/ScopeArgs: - Enabled: true - -# This cop checks for the use of Time methods without zone. -Rails/TimeZone: - Enabled: false - -# This cop checks for the use of old-style attribute validation macros. -Rails/Validation: - Enabled: true - -# RSpec ####################################################################### - -# Check that instances are not being stubbed globally. -RSpec/AnyInstance: - Enabled: false - -# Check for expectations where `be(...)` can replace `eql(...)`. -RSpec/BeEql: - Enabled: true - -# Check that the first argument to the top level describe is the tested class or -# module. -RSpec/DescribeClass: - Enabled: false - -# Checks that the second argument to `describe` specifies a method. -RSpec/DescribeMethod: - Enabled: false - -# Checks that tests use `described_class`. -RSpec/DescribedClass: - Enabled: true - -# Checks if an example group does not include any tests. -RSpec/EmptyExampleGroup: - Enabled: true - CustomIncludeMethods: - - run_permission_checks - -# Checks for long example. -RSpec/ExampleLength: - Enabled: false - Max: 5 - -# Do not use should when describing your tests. -RSpec/ExampleWording: - Enabled: false - CustomTransform: - be: is - have: has - not: does not - IgnoredWords: [] - -# Checks for `expect(...)` calls containing literal values. -RSpec/ExpectActual: - Enabled: true - -# Checks for opportunities to use `expect { … }.to output`. -RSpec/ExpectOutput: - Enabled: true - -# Checks the file and folder naming of the spec file. -RSpec/FilePath: - Enabled: true - IgnoreMethods: true - -# Checks if there are focused specs. -RSpec/Focus: - Enabled: true - -# Checks the arguments passed to `before`, `around`, and `after`. -RSpec/HookArgument: - Enabled: true - EnforcedStyle: implicit - -# Configuration parameters: EnforcedStyle, SupportedStyles. -# SupportedStyles: is_expected, should -RSpec/ImplicitExpect: - Enabled: true - EnforcedStyle: is_expected - -# Checks for the usage of instance variables. -RSpec/InstanceVariable: - Enabled: false - -# Checks for `subject` definitions that come after `let` definitions. -RSpec/LeadingSubject: - Enabled: false - -# Checks unreferenced `let!` calls being used for test setup. -RSpec/LetSetup: - Enabled: false - -# Check that chains of messages are not being stubbed. -RSpec/MessageChain: - Enabled: false - -# Checks for multiple top-level describes. -RSpec/MultipleDescribes: - Enabled: false - -# Checks if examples contain too many `expect` calls. -RSpec/MultipleExpectations: - Enabled: false - -# Checks for explicitly referenced test subjects. -RSpec/NamedSubject: - Enabled: false - -# Checks for nested example groups. -RSpec/NestedGroups: - Enabled: false - -# Enforces the usage of the same method on all negative message expectations. -RSpec/NotToNot: - EnforcedStyle: not_to - Enabled: true - -# Check for repeated description strings in example groups. -RSpec/RepeatedDescription: - Enabled: false - -# Checks for stubbed test subjects. -RSpec/SubjectStub: - Enabled: false - -# Prefer using verifying doubles over normal doubles. -RSpec/VerifiedDoubles: - Enabled: false diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index 3185a1fb8..3cd719e95 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -63,35 +63,6 @@ Layout/SpaceAroundOperators: - '_support/test-cluster/gitaly1/etc-gitlab/gitlab.rb' - '_support/test-cluster/gitaly2/etc-gitlab/gitlab.rb' -# Offense count: 4 -# Cop supports --auto-correct. -# Configuration parameters: SupportedStyles, EnforcedStyleForEmptyBraces, SupportedStylesForEmptyBraces. -# SupportedStyles: space, no_space, compact -# SupportedStylesForEmptyBraces: space, no_space -Layout/SpaceInsideHashLiteralBraces: - EnforcedStyle: no_space - -# Offense count: 2 -# Cop supports --auto-correct. -Layout/Tab: - Exclude: - - 'ruby/lib/gitaly_server/utils.rb' - -# Offense count: 2 -# Cop supports --auto-correct. -Layout/TrailingWhitespace: - Exclude: - - '_support/test-boot-time' - -# Offense count: 9 -Lint/UnderscorePrefixedVariableName: - Exclude: - - 'ruby/lib/gitaly_server.rb' - - 'ruby/lib/gitaly_server/commit_service.rb' - - 'ruby/lib/gitaly_server/diff_service.rb' - - 'ruby/lib/gitaly_server/ref_service.rb' - - 'ruby/lib/gitlab/git.rb' - # Offense count: 2 # Configuration parameters: MinBodyLength. Style/GuardClause: @@ -116,23 +87,6 @@ Style/MultilineIfModifier: Exclude: - 'ruby/lib/gitaly_server/ref_service.rb' -# Offense count: 11 -# Cop supports --auto-correct. -Style/MutableConstant: - Exclude: - - '_support/package/package' - - '_support/test-boot-time' - - '_support/vendor-gitlab-git' - -# Offense count: 2 -# Cop supports --auto-correct. -# Configuration parameters: EnforcedStyle, SupportedStyles. -# SupportedStyles: both, prefix, postfix -Style/NegatedIf: - Exclude: - - '_support/package/package' - - '_support/run.rb' - # Offense count: 3 # Cop supports --auto-correct. # Configuration parameters: EnforcedOctalStyle, SupportedOctalStyles. @@ -193,24 +147,6 @@ Style/SymbolProc: - '_support/package/package' - '_support/run.rb' -# Offense count: 5 -# Cop supports --auto-correct. -# Configuration parameters: EnforcedStyleForMultiline, SupportedStylesForMultiline. -# SupportedStylesForMultiline: comma, consistent_comma, no_comma -Style/TrailingCommaInArguments: - Exclude: - - 'ruby/lib/gitaly_server/ref_service.rb' - - 'ruby/lib/gitaly_server/utils.rb' - -# Offense count: 2 -# Cop supports --auto-correct. -# Configuration parameters: EnforcedStyleForMultiline, SupportedStylesForMultiline. -# SupportedStylesForMultiline: comma, consistent_comma, no_comma -Style/TrailingCommaInLiteral: - Exclude: - - '_support/test-cluster/app1/etc-gitlab/gitlab.rb' - - 'ruby/lib/gitaly_server/commit_service.rb' - # Offense count: 1 # Cop supports --auto-correct. # Configuration parameters: ExactNameMatch, AllowPredicates, AllowDSLWriters, IgnoreClassMethods, Whitelist. @@ -218,9 +154,3 @@ Style/TrailingCommaInLiteral: Style/TrivialAccessors: Exclude: - 'ruby/lib/gitlab/git.rb' - -# Offense count: 2 -# Cop supports --auto-correct. -Style/UnneededCapitalW: - Exclude: - - '_support/vendor-gitlab-git' diff --git a/_support/package/package b/_support/package/package index cc9ef8cab..0509920ff 100755 --- a/_support/package/package +++ b/_support/package/package @@ -1,14 +1,14 @@ #!/usr/bin/env ruby -NAME = 'gitaly' -DESCRIPTION = 'Gitaly (part of GitLab). Experimental build for testing only.' +NAME = 'gitaly'.freeze +DESCRIPTION = 'Gitaly (part of GitLab). Experimental build for testing only.'.freeze VERSION = IO.popen(%w[git describe]) { |io| io.read }.chomp.split('v', 2)[1] -ARCHITECTURE = 'amd64' -PREFIX = '/usr/local' -VENDOR = 'GitLab Inc.' +ARCHITECTURE = 'amd64'.freeze +PREFIX = '/usr/local'.freeze +VENDOR = 'GitLab Inc.'.freeze MAINTAINER = VENDOR -LICENSE = 'MIT' -URL = 'https://gitlab.com/gitlab-org/gitaly' +LICENSE = 'MIT'.freeze +URL = 'https://gitlab.com/gitlab-org/gitaly'.freeze PACKAGE_DIR = File.dirname(__FILE__) @@ -26,7 +26,7 @@ def main(args) end def run!(cmd, dir) - if ! system(*cmd, chdir: dir) + unless system(*cmd, chdir: dir) abort "command failed: #{cmd.join(' ')}" end end diff --git a/_support/run.rb b/_support/run.rb index 121729b32..f6d84829a 100644 --- a/_support/run.rb +++ b/_support/run.rb @@ -1,6 +1,6 @@ def run!(cmd, chdir='.') GitalySupport.print_cmd(cmd) - if !system(*cmd, chdir: chdir) + unless system(*cmd, chdir: chdir) GitalySupport.fail_cmd!(cmd) end end diff --git a/_support/test-boot-time b/_support/test-boot-time index d264d8577..8b4099194 100755 --- a/_support/test-boot-time +++ b/_support/test-boot-time @@ -3,28 +3,28 @@ require 'tempfile' require 'socket' -ADDR = 'socket' +ADDR = 'socket'.freeze def main(gitaly_dir) gitaly_dir = File.realpath(gitaly_dir) - + Dir.mktmpdir do |dir| Dir.chdir(dir) - - File.write('config.toml', <<EOS -socket_path = "#{ADDR}" -[[storage]] -name = "default" -path = "#{dir}" + File.write('config.toml', <<~CONFIG + socket_path = "#{ADDR}" + + [[storage]] + name = "default" + path = "#{dir}" -[gitaly-ruby] -dir = "#{gitaly_dir}/ruby" + [gitaly-ruby] + dir = "#{gitaly_dir}/ruby" -[gitlab-shell] -dir = "#{gitaly_dir}" -EOS -) + [gitlab-shell] + dir = "#{gitaly_dir}" + CONFIG + ) pid = nil @@ -48,7 +48,7 @@ def wait_connect begin Socket.unix(ADDR) return - rescue + rescue # rubocop:disable Lint/RescueWithoutErrorClass print '.' sleep(0.1) end diff --git a/_support/test-cluster/app1/etc-gitlab/gitlab.rb b/_support/test-cluster/app1/etc-gitlab/gitlab.rb index 30f03892e..0bce8c475 100644 --- a/_support/test-cluster/app1/etc-gitlab/gitlab.rb +++ b/_support/test-cluster/app1/etc-gitlab/gitlab.rb @@ -11,8 +11,8 @@ redis['port'] = 6379 redis['bind'] = '0.0.0.0' git_data_dirs({ - 'default' => {'path' => '/mnt/data1', 'gitaly_address' => 'tcp://gitaly1:6666'}, - 'gitaly2' => {'path' => '/mnt/data2', 'gitaly_address' => 'tcp://gitaly2:6666'}, + 'default' => { 'path' => '/mnt/data1', 'gitaly_address' => 'tcp://gitaly1:6666' }, + 'gitaly2' => { 'path' => '/mnt/data2', 'gitaly_address' => 'tcp://gitaly2:6666' } }) # We have to use the same token in all hosts for internal API authentication diff --git a/_support/update-downstream-server-version.rb b/_support/update-downstream-server-version.rb index 7733e5f36..7ad9eaec2 100755 --- a/_support/update-downstream-server-version.rb +++ b/_support/update-downstream-server-version.rb @@ -31,7 +31,7 @@ def update_tag(project_id, tag_version) "actions": [{ "action": "update", "file_path": "GITALY_SERVER_VERSION", - "content": "#{tag_version}" + "content": tag_version.to_s }] } diff --git a/_support/vendor-gitlab-git b/_support/vendor-gitlab-git index de424fa55..f8f18f7cc 100755 --- a/_support/vendor-gitlab-git +++ b/_support/vendor-gitlab-git @@ -1,12 +1,12 @@ #!/usr/bin/env ruby # These files and directories of gitlab-ce will be vendored -FILE_LIST = %w[lib/gitlab/git.rb lib/gitlab/git lib/gitlab/encoding_helper.rb] +FILE_LIST = %w[lib/gitlab/git.rb lib/gitlab/git lib/gitlab/encoding_helper.rb].freeze -REMOTE = 'https://gitlab.com/gitlab-org/gitlab-ce' +REMOTE = 'https://gitlab.com/gitlab-org/gitlab-ce'.freeze # This directory in Gitaly will be the 'root' of gitlab-ce -VENDOR_DIR = 'ruby/vendor/gitlab_git' +VENDOR_DIR = 'ruby/vendor/gitlab_git'.freeze require_relative 'run.rb' require 'tempfile' @@ -22,11 +22,11 @@ def main Dir.mktmpdir do |dir| gitlab_dir = File.join(dir, 'gitlab') run!(%W[git clone --depth=1 -b #{revision} #{REMOTE}.git #{gitlab_dir}]) - revision_sha = capture!(%W[git rev-parse HEAD], gitlab_dir).chomp + revision_sha = capture!(%w[git rev-parse HEAD], gitlab_dir).chomp FileUtils.rm_rf(VENDOR_DIR) FileUtils.mkdir_p(VENDOR_DIR) - run!(%W[rsync -avR] + FILE_LIST + %W[#{File.join(Dir.pwd, VENDOR_DIR)}/], gitlab_dir) + run!(%w[rsync -avR] + FILE_LIST + %W[#{File.join(Dir.pwd, VENDOR_DIR)}/], gitlab_dir) end File.write(File.join(VENDOR_DIR, 'REVISION'), "#{revision_sha}\n") diff --git a/internal/service/repository/apply_gitattributes.go b/internal/service/repository/apply_gitattributes.go index 86bf241f3..6370a502d 100644 --- a/internal/service/repository/apply_gitattributes.go +++ b/internal/service/repository/apply_gitattributes.go @@ -82,6 +82,7 @@ func applyGitattributesHandler(ctx context.Context, repoPath string, revision [] return err } + // Rename temp file and return the result return os.Rename(tempFile.Name(), attributesPath) } } diff --git a/ruby/Gemfile b/ruby/Gemfile index 88b7120d6..7e8f9f2b2 100644 --- a/ruby/Gemfile +++ b/ruby/Gemfile @@ -3,3 +3,7 @@ source 'https://rubygems.org' gem 'github-linguist', '~> 4.7.0', require: 'linguist' gem 'gitaly-proto', '~> 0.37.0', require: 'gitaly' gem 'activesupport' + +group :development, :test do + gem 'gitlab-styles', '~> 2.0.0', require: false +end diff --git a/ruby/Gemfile.lock b/ruby/Gemfile.lock index 68433fc68..5ea14855b 100644 --- a/ruby/Gemfile.lock +++ b/ruby/Gemfile.lock @@ -8,6 +8,7 @@ GEM tzinfo (~> 1.1) addressable (2.5.1) public_suffix (~> 2.0, >= 2.0.2) + ast (2.3.0) charlock_holmes (0.7.5) concurrent-ruby (1.0.5) escape_utils (1.1.1) @@ -21,6 +22,10 @@ GEM escape_utils (~> 1.1.0) mime-types (>= 1.19) rugged (>= 0.23.0b) + gitlab-styles (2.0.0) + rubocop (~> 0.49) + rubocop-gitlab-security (~> 0.1.0) + rubocop-rspec (~> 1.15) google-protobuf (3.4.0.2) googleauth (0.5.3) faraday (~> 0.12) @@ -47,7 +52,26 @@ GEM multi_json (1.12.1) multipart-post (2.0.0) os (0.9.6) + parallel (1.12.0) + parser (2.4.0.0) + ast (~> 2.2) + powerpack (0.1.1) public_suffix (2.0.5) + rainbow (2.2.2) + rake + rake (12.1.0) + rubocop (0.50.0) + parallel (~> 1.10) + parser (>= 2.3.3.1, < 3.0) + powerpack (~> 0.1) + rainbow (>= 2.2.2, < 3.0) + ruby-progressbar (~> 1.7) + unicode-display_width (~> 1.0, >= 1.0.1) + rubocop-gitlab-security (0.1.0) + rubocop (>= 0.47.1) + rubocop-rspec (1.17.0) + rubocop (>= 0.50.0) + ruby-progressbar (1.8.3) rugged (0.26.0) signet (0.7.3) addressable (~> 2.3) @@ -57,6 +81,7 @@ GEM thread_safe (0.3.6) tzinfo (1.2.2) thread_safe (~> 0.1) + unicode-display_width (1.3.0) PLATFORMS ruby @@ -65,6 +90,7 @@ DEPENDENCIES activesupport gitaly-proto (~> 0.37.0) github-linguist (~> 4.7.0) + gitlab-styles (~> 2.0.0) BUNDLED WITH 1.15.4 diff --git a/ruby/lib/gitaly_server/commit_service.rb b/ruby/lib/gitaly_server/commit_service.rb index 5bbe0e45a..2f9857e66 100644 --- a/ruby/lib/gitaly_server/commit_service.rb +++ b/ruby/lib/gitaly_server/commit_service.rb @@ -2,8 +2,8 @@ module GitalyServer class CommitService < Gitaly::CommitService::Service include Utils - def commit_stats(request, _call) - repo = Gitlab::Git::Repository.from_call(_call) + def commit_stats(request, call) + repo = Gitlab::Git::Repository.from_call(call) revision = request.revision unless request.revision.empty? commit = Gitlab::Git::Commit.find(repo, revision) @@ -18,15 +18,15 @@ module GitalyServer Gitaly::CommitStatsResponse.new(oid: stats.id, additions: stats.additions, deletions: stats.deletions) end - def find_commits(request, _call) - repository = Gitlab::Git::Repository.from_call(_call) + def find_commits(request, call) + repository = Gitlab::Git::Repository.from_call(call) options = { ref: request.revision, limit: request.limit, follow: request.follow, skip_merges: request.skip_merges, disable_walk: request.disable_walk, - offset: request.offset, + offset: request.offset } options[:path] = request.paths unless request.paths.empty? diff --git a/ruby/lib/gitaly_server/diff_service.rb b/ruby/lib/gitaly_server/diff_service.rb index bd457742a..0632043e2 100644 --- a/ruby/lib/gitaly_server/diff_service.rb +++ b/ruby/lib/gitaly_server/diff_service.rb @@ -1,7 +1,7 @@ module GitalyServer class DiffService < Gitaly::DiffService::Service - def commit_patch(request, _call) - repo = Gitlab::Git::Repository.from_call(_call) + def commit_patch(request, call) + repo = Gitlab::Git::Repository.from_call(call) commit = Gitlab::Git::Commit.find(repo, request.revision) Enumerator.new do |y| diff --git a/ruby/lib/gitaly_server/ref_service.rb b/ruby/lib/gitaly_server/ref_service.rb index 41bd6f0d5..cb9bc963a 100644 --- a/ruby/lib/gitaly_server/ref_service.rb +++ b/ruby/lib/gitaly_server/ref_service.rb @@ -4,20 +4,20 @@ module GitalyServer TAGS_PER_MESSAGE = 100 - def create_branch(request, _call) + def create_branch(request, call) start_point = request.start_point start_point = 'HEAD' if start_point.empty? branch_name = request.name - repo = Gitlab::Git::Repository.from_call(_call) + repo = Gitlab::Git::Repository.from_call(call) rugged_ref = repo.rugged.branches.create(branch_name, start_point) Gitaly::CreateBranchResponse.new( status: :OK, branch: Gitaly::Branch.new( name: rugged_ref.name.b, - target_commit: gitaly_commit_from_rugged(rugged_ref.target), - ), + target_commit: gitaly_commit_from_rugged(rugged_ref.target) + ) ) rescue Rugged::ReferenceError => e status = case e.to_s @@ -32,11 +32,11 @@ module GitalyServer Gitaly::CreateBranchResponse.new(status: status) end - def delete_branch(request, _call) + def delete_branch(request, call) branch_name = request.name raise GRPC::InvalidArgument.new("empty Name") if branch_name.empty? - repo = Gitlab::Git::Repository.from_call(_call) + repo = Gitlab::Git::Repository.from_call(call) repo.delete_branch(branch_name) Gitaly::DeleteBranchResponse.new @@ -44,22 +44,22 @@ module GitalyServer raise GRPC::Internal.new(e.to_s) end - def find_branch(request, _call) + def find_branch(request, call) branch_name = request.name raise GRPC::InvalidArgument.new("empty Name") if branch_name.empty? - repo = Gitlab::Git::Repository.from_call(_call) + repo = Gitlab::Git::Repository.from_call(call) rugged_branch = repo.find_branch(branch_name) gitaly_branch = Gitaly::Branch.new( name: rugged_branch.name.b, - target_commit: gitaly_commit_from_rugged(rugged_branch.dereferenced_target.raw_commit), + target_commit: gitaly_commit_from_rugged(rugged_branch.dereferenced_target.raw_commit) ) unless rugged_branch.nil? Gitaly::FindBranchResponse.new(branch: gitaly_branch) end - def find_all_tags(request, _call) - repo = Gitlab::Git::Repository.from_call(_call) + def find_all_tags(request, call) + repo = Gitlab::Git::Repository.from_call(call) Enumerator.new do |y| repo.tags.each_slice(TAGS_PER_MESSAGE) do |gitlab_tags| @@ -71,7 +71,7 @@ module GitalyServer name: gitlab_tag.name.b, id: gitlab_tag.target, message: gitlab_tag.message.to_s.b, - target_commit: gitaly_commit, + target_commit: gitaly_commit ) end diff --git a/ruby/lib/gitaly_server/utils.rb b/ruby/lib/gitaly_server/utils.rb index 5c8db21da..2356794c4 100644 --- a/ruby/lib/gitaly_server/utils.rb +++ b/ruby/lib/gitaly_server/utils.rb @@ -3,11 +3,11 @@ module GitalyServer def gitaly_commit_from_rugged(rugged_commit) Gitaly::GitCommit.new( id: rugged_commit.oid, - subject: rugged_commit.message.split("\n", 2)[0].chomp.b, - body: rugged_commit.message.b, + subject: rugged_commit.message.split("\n", 2)[0].chomp.b, + body: rugged_commit.message.b, parent_ids: rugged_commit.parent_ids, author: gitaly_commit_author_from_rugged(rugged_commit.author), - committer: gitaly_commit_author_from_rugged(rugged_commit.committer), + committer: gitaly_commit_author_from_rugged(rugged_commit.committer) ) end |