overcommit 0.28.0 → 0.29.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 74c5fbc6dd718ba856a0c0ad6255f9e6e0d6f72c
4
- data.tar.gz: 9b40e46e88199c43d8c708202b872ea5ce1b52fc
3
+ metadata.gz: b3062f9af5dd34f661b3a2fe4c57dff0455c58fc
4
+ data.tar.gz: 2a701f3f869be66540221aae63f3276f829b9d0d
5
5
  SHA512:
6
- metadata.gz: 278cfa2c64204a0bfe3b9c5e0dfae81396ec1317fadaa1fb4364bf979795c642e47c39c16b2ba64dc2602f1377aeb3073011c67ab091540cc7027e931f3500bc
7
- data.tar.gz: b9908d3670f23dcc0c4766da676e44642eb5f211147de22801690c7ad679ba589d9f8b5f14210dc2a6ad65a06fc6ecb82807e2517efafbacf5443a550963d91b
6
+ metadata.gz: 863155a463f38f3fb09c915a61d7e91e175ebeda1da177076bcdf8fbadcda30ea5908995e227b15c8162bffab6ee0236224655196e03d214411f257c1acf1a39
7
+ data.tar.gz: 841020568579082d8887466e0b4089759fc36f89f8f498c12fe2eaeb319737a0406bec7c82bdec0646aa49a405b85e025f31c81602d352b54c9af6bfe442cd36
data/config/default.yml CHANGED
@@ -43,7 +43,7 @@ plugin_directory: '.git-hooks'
43
43
  # This is a defense mechanism when working with repositories which can contain
44
44
  # untrusted code (e.g. when you fetch a pull request from a third party).
45
45
  # See https://github.com/brigade/overcommit#security for more information.
46
- verify_plugin_signatures: true
46
+ verify_signatures: true
47
47
 
48
48
  # Hooks that are run against every commit message after a user has written it.
49
49
  # These hooks are useful for enforcing policies on commit messages written for a
@@ -322,6 +322,13 @@ PreCommit:
322
322
  required_executable: 'grep'
323
323
  flags: ['-IHn', "^<<<<<<<[ \t]"]
324
324
 
325
+ NginxTest:
326
+ enabled: false
327
+ description: 'Testing nginx configs'
328
+ required_executable: 'nginx'
329
+ flags: ['-t']
330
+ include: '**/nginx.conf'
331
+
325
332
  Pep257:
326
333
  enabled: false
327
334
  description: 'Analyzing docstrings with pep257'
@@ -22,8 +22,8 @@ module Overcommit
22
22
  install_or_uninstall
23
23
  when :template_dir
24
24
  print_template_directory_path
25
- when :sign_plugins
26
- sign_plugins
25
+ when :sign
26
+ sign
27
27
  when :run_all
28
28
  run_all
29
29
  end
@@ -95,9 +95,9 @@ module Overcommit
95
95
  end
96
96
 
97
97
  def add_other_options(opts)
98
- opts.on('-s', '--sign hook', 'Update plugin signatures for hook', String) do |hook|
99
- @options[:action] = :sign_plugins
100
- @options[:hook_to_sign] = hook
98
+ opts.on('-s', '--sign', 'Update hook signatures') do |hook_to_sign|
99
+ @options[:hook_to_sign] = hook_to_sign if hook_to_sign.is_a?(String)
100
+ @options[:action] = :sign
101
101
  end
102
102
 
103
103
  opts.on('-t', '--template-dir', 'Print location of template directory') do
@@ -175,14 +175,20 @@ module Overcommit
175
175
  end
176
176
  end
177
177
 
178
- def sign_plugins
179
- context = Overcommit::HookContext.create(@options[:hook_to_sign],
180
- config,
181
- @arguments,
182
- @input)
183
- Overcommit::HookLoader::PluginHookLoader.new(config,
184
- context,
185
- log).update_signatures
178
+ def sign
179
+ if @options[:hook_to_sign]
180
+ context = Overcommit::HookContext.create(@options[:hook_to_sign],
181
+ config,
182
+ @arguments,
183
+ @input)
184
+ Overcommit::HookLoader::PluginHookLoader.new(config,
185
+ context,
186
+ log).update_signatures
187
+ else
188
+ log.log 'Updating signature for configuration file...'
189
+ config(verify: false).update_signature!
190
+ end
191
+
186
192
  halt
187
193
  end
188
194
 
@@ -204,8 +210,8 @@ module Overcommit
204
210
  end
205
211
 
206
212
  # Returns the configuration for this repository.
207
- def config
208
- @config ||= Overcommit::ConfigurationLoader.new(log).load_repo_config
213
+ def config(options = {})
214
+ @config ||= Overcommit::ConfigurationLoader.new(log, options).load_repo_config
209
215
  end
210
216
  end
211
217
  end
@@ -1,3 +1,6 @@
1
+ require 'digest'
2
+ require 'json'
3
+
1
4
  module Overcommit
2
5
  # Stores configuration for Overcommit and the hooks it runs.
3
6
  class Configuration # rubocop:disable ClassLength
@@ -32,10 +35,6 @@ module Overcommit
32
35
  File.join(Overcommit::Utils.repo_root, @hash['plugin_directory'] || '.git-hooks')
33
36
  end
34
37
 
35
- def verify_plugin_signatures?
36
- @hash['verify_plugin_signatures'] != false
37
- end
38
-
39
38
  # Returns configuration for all hooks in each hook type.
40
39
  #
41
40
  # @return [Hash]
@@ -167,6 +166,63 @@ module Overcommit
167
166
  File.exist?(File.join(plugin_directory, hook_type_name, "#{hook_name}.rb"))
168
167
  end
169
168
 
169
+ # Return whether the signature for this configuration has changed since it
170
+ # was last calculated.
171
+ #
172
+ # @return [true,false]
173
+ def signature_changed?
174
+ signature != stored_signature
175
+ end
176
+
177
+ # Return whether a previous signature has been recorded for this
178
+ # configuration.
179
+ #
180
+ # @return [true,false]
181
+ def previous_signature?
182
+ !stored_signature.empty?
183
+ end
184
+
185
+ # Returns whether this configuration should verify itself by checking the
186
+ # stored configuration for the repo.
187
+ #
188
+ # @return [true,false]
189
+ def verify_signatures?
190
+ return false if ENV['OVERCOMMIT_NO_VERIFY']
191
+ return true if @hash['verify_signatures'] != false
192
+
193
+ result = Overcommit::Utils.execute(
194
+ %W[git config --local --get #{verify_signature_config_key}]
195
+ )
196
+
197
+ if result.status == 1 # Key doesn't exist
198
+ return true
199
+ elsif result.status != 0
200
+ raise Overcommit::Exceptions::GitConfigError,
201
+ "Unable to read from local repo git config: #{result.stderr}"
202
+ end
203
+
204
+ # We don't cast since we want to allow anything to count as "true" except
205
+ # a literal zero
206
+ result.stdout.strip != '0'
207
+ end
208
+
209
+ # Update the currently stored signature for this hook.
210
+ def update_signature!
211
+ result = Overcommit::Utils.execute(
212
+ %w[git config --local] + [signature_config_key, signature]
213
+ )
214
+
215
+ verify_signature_value = @hash['verify_signatures'] ? 1 : 0
216
+ result &&= Overcommit::Utils.execute(
217
+ %W[git config --local #{verify_signature_config_key} #{verify_signature_value}]
218
+ )
219
+
220
+ unless result.success?
221
+ raise Overcommit::Exceptions::GitConfigError,
222
+ "Unable to write to local repo git config: #{result.stderr}"
223
+ end
224
+ end
225
+
170
226
  protected
171
227
 
172
228
  attr_reader :hash
@@ -230,5 +286,41 @@ module Overcommit
230
286
  end
231
287
  end
232
288
  end
289
+
290
+ # Returns the unique signature of this configuration.
291
+ #
292
+ # @return [String]
293
+ def signature
294
+ Digest::SHA256.hexdigest(@hash.to_json)
295
+ end
296
+
297
+ # Returns the stored signature of this repo's Overcommit configuration.
298
+ #
299
+ # This is intended to be compared against the current signature of this
300
+ # configuration object.
301
+ #
302
+ # @return [String]
303
+ def stored_signature
304
+ result = Overcommit::Utils.execute(
305
+ %w[git config --local --get] + [signature_config_key]
306
+ )
307
+
308
+ if result.status == 1 # Key doesn't exist
309
+ return ''
310
+ elsif result.status != 0
311
+ raise Overcommit::Exceptions::GitConfigError,
312
+ "Unable to read from local repo git config: #{result.stderr}"
313
+ end
314
+
315
+ result.stdout.chomp
316
+ end
317
+
318
+ def signature_config_key
319
+ 'overcommit.configuration.signature'
320
+ end
321
+
322
+ def verify_signature_config_key
323
+ 'overcommit.configuration.verifysignatures'
324
+ end
233
325
  end
234
326
  end
@@ -10,7 +10,7 @@ module Overcommit
10
10
  #
11
11
  # @return [Overcommit::Configuration]
12
12
  def default_configuration
13
- @default_config ||= load_from_file(DEFAULT_CONFIG_PATH, default: true)
13
+ @default_config ||= load_from_file(DEFAULT_CONFIG_PATH, default: true, verify: false)
14
14
  end
15
15
 
16
16
  # Loads configuration from file.
@@ -18,6 +18,7 @@ module Overcommit
18
18
  # @param file [String] path to file
19
19
  # @param options [Hash]
20
20
  # @option default [Boolean] whether this is the default built-in configuration
21
+ # @option verify [Boolean] whether to verify the signature of the configuration
21
22
  # @option logger [Overcommit::Logger]
22
23
  # @return [Overcommit::Configuration]
23
24
  def load_from_file(file, options = {})
@@ -34,8 +35,13 @@ module Overcommit
34
35
 
35
36
  # Create a configuration loader which writes warnings/errors to the given
36
37
  # {Overcommit::Logger} instance.
37
- def initialize(logger)
38
+ #
39
+ # @param logger [Overcommit::Logger]
40
+ # @param options [Hash]
41
+ # @option verify [Boolean] whether to verify signatures
42
+ def initialize(logger, options = {})
38
43
  @log = logger
44
+ @options = options
39
45
  end
40
46
 
41
47
  # Loads and returns the configuration for the repository we're running in.
@@ -55,12 +61,32 @@ module Overcommit
55
61
  # Loads a configuration, ensuring it extends the default configuration.
56
62
  def load_file(file)
57
63
  config = self.class.load_from_file(file, default: false, logger: @log)
64
+ config = self.class.default_configuration.merge(config)
65
+
66
+ if @options.fetch(:verify, config.verify_signatures?)
67
+ verify_signatures(config)
68
+ end
58
69
 
59
- self.class.default_configuration.merge(config)
70
+ config
60
71
  rescue => error
61
72
  raise Overcommit::Exceptions::ConfigurationError,
62
73
  "Unable to load configuration from '#{file}': #{error}",
63
74
  error.backtrace
64
75
  end
76
+
77
+ private
78
+
79
+ def verify_signatures(config)
80
+ if !config.previous_signature?
81
+ raise Overcommit::Exceptions::ConfigurationSignatureChanged,
82
+ "No previously recorded signature for configuration file.\n" \
83
+ 'Run `overcommit --sign` if you trust the hooks in this repository.'
84
+
85
+ elsif config.signature_changed?
86
+ raise Overcommit::Exceptions::ConfigurationSignatureChanged,
87
+ "Signature of configuration file has changed!\n" \
88
+ "Run `overcommit --sign` once you've verified the configuration changes."
89
+ end
90
+ end
65
91
  end
66
92
  end
@@ -15,6 +15,7 @@ module Overcommit
15
15
  hash = convert_nils_to_empty_hashes(hash)
16
16
  ensure_hook_type_sections_exist(hash)
17
17
  check_for_missing_enabled_option(hash) unless @options[:default]
18
+ check_for_verify_plugin_signatures_option(hash)
18
19
 
19
20
  hash
20
21
  end
@@ -68,5 +69,18 @@ module Overcommit
68
69
 
69
70
  @log.newline if any_warnings
70
71
  end
72
+
73
+ # Prints a warning if the `verify_plugin_signatures` option is used instead
74
+ # of the new `verify_signatures` option.
75
+ def check_for_verify_plugin_signatures_option(hash)
76
+ return unless @log
77
+
78
+ if hash.key?('verify_plugin_signatures')
79
+ @log.warning '`verify_plugin_signatures` has been renamed to ' \
80
+ '`verify_signatures`. Defaulting to verifying signatures.'
81
+ @log.warning "See change log at #{REPO_URL}/blob/v0.29.0/CHANGELOG.md for details."
82
+ @log.newline
83
+ end
84
+ end
71
85
  end
72
86
  end
@@ -2,6 +2,9 @@ module Overcommit::Exceptions
2
2
  # Raised when a {Configuration} could not be loaded from a file.
3
3
  class ConfigurationError < StandardError; end
4
4
 
5
+ # Raised when the Overcommit configuration file signature has changed.
6
+ class ConfigurationSignatureChanged < StandardError; end
7
+
5
8
  # Raised when trying to read/write to/from the local repo git config fails.
6
9
  class GitConfigError < StandardError; end
7
10
 
@@ -0,0 +1,12 @@
1
+ module Overcommit
2
+ # Get configuration options from git
3
+ module GitConfig
4
+ module_function
5
+
6
+ def comment_character
7
+ char = `git config --get core.commentchar`.chomp
8
+ char = '#' if char == ''
9
+ char
10
+ end
11
+ end
12
+ end
@@ -92,7 +92,7 @@ module Overcommit
92
92
  refs = options[:refs]
93
93
  subcmd = options[:subcmd] || 'diff'
94
94
 
95
- `git #{subcmd} --name-only -z --diff-filter=ACM --ignore-submodules=all #{flags} #{refs}`.
95
+ `git #{subcmd} --name-only -z --diff-filter=ACMR --ignore-submodules=all #{flags} #{refs}`.
96
96
  split("\0").
97
97
  map(&:strip).
98
98
  reject(&:empty?).
@@ -153,7 +153,7 @@ module Overcommit::Hook
153
153
  private
154
154
 
155
155
  def applicable_file?(file)
156
- includes = Array(@config['include']).map do |glob|
156
+ includes = Array(@config['include']).flatten.map do |glob|
157
157
  Overcommit::Utils.convert_glob_to_absolute(glob)
158
158
  end
159
159
 
@@ -161,7 +161,7 @@ module Overcommit::Hook
161
161
  Overcommit::Utils.matches_path?(glob, file)
162
162
  end
163
163
 
164
- excludes = Array(@config['exclude']).map do |glob|
164
+ excludes = Array(@config['exclude']).flatten.map do |glob|
165
165
  Overcommit::Utils.convert_glob_to_absolute(glob)
166
166
  end
167
167
 
@@ -8,9 +8,10 @@ module Overcommit::Hook::PreCommit
8
8
  result = execute(command, args: applicable_files)
9
9
  return :pass if result.success?
10
10
 
11
- if result.status == 1
12
- # No configuration was found
13
- return :warn, result.stderr.chomp
11
+ # Exit status 2 = Code style errors; everything else we don't know how to
12
+ # parse. https://github.com/jscs-dev/node-jscs/wiki/Exit-codes
13
+ unless result.status == 2
14
+ return :fail, result.stdout + result.stderr.chomp
14
15
  end
15
16
 
16
17
  # example message:
@@ -0,0 +1,24 @@
1
+ module Overcommit::Hook::PreCommit
2
+ # Runs `nginx -t` against any modified Nginx config files.
3
+ #
4
+ # @see https://www.nginx.com/resources/wiki/start/topics/tutorials/commandline/
5
+ class NginxTest < Base
6
+ MESSAGE_REGEX = /^nginx: .+ in (?<file>.+):(?<line>\d+)$/
7
+
8
+ def run
9
+ messages = []
10
+
11
+ applicable_files.each do |file|
12
+ result = execute(command + ['-c', file])
13
+ next if result.success?
14
+
15
+ messages += extract_messages(
16
+ result.stderr.split("\n").grep(MESSAGE_REGEX),
17
+ MESSAGE_REGEX
18
+ )
19
+ end
20
+
21
+ messages
22
+ end
23
+ end
24
+ end
@@ -12,9 +12,10 @@ module Overcommit::Hook::PreCommit
12
12
 
13
13
  def run
14
14
  result = execute(command, args: applicable_files)
15
- output = result.stdout.chomp
15
+ output = result.stdout.chomp + result.stderr.chomp
16
16
  messages = output.split("\n").grep(MESSAGE_REGEX)
17
- return :pass if result.success? && messages.empty?
17
+
18
+ return [:fail, output] unless result.success? || messages.any?
18
19
 
19
20
  # example message:
20
21
  # error file=/path/to/file.scala message=Error message line=1 column=1
@@ -20,7 +20,11 @@ module Overcommit::HookContext
20
20
  def commit_message_lines
21
21
  raw_commit_message_lines.
22
22
  take_while { |line| !line.start_with?('diff --git') }.
23
- reject { |line| line =~ /^#/ }
23
+ reject { |line| line.start_with?(comment_character) }
24
+ end
25
+
26
+ def comment_character
27
+ @comment_character ||= Overcommit::GitConfig.comment_character
24
28
  end
25
29
 
26
30
  def commit_message_file
@@ -5,7 +5,7 @@ module Overcommit::HookLoader
5
5
  # is running in.
6
6
  class PluginHookLoader < Base
7
7
  def load_hooks
8
- check_for_modified_plugins if @config.verify_plugin_signatures?
8
+ check_for_modified_plugins if @config.verify_signatures?
9
9
 
10
10
  hooks = plugin_paths.map do |plugin_path|
11
11
  require plugin_path
@@ -35,8 +35,7 @@ module Overcommit
35
35
  command = Array(hook_config['command'] ||
36
36
  hook_config['required_executable'])
37
37
 
38
- unless !@config.verify_plugin_signatures? ||
39
- signable_file?(command.first)
38
+ unless !@config.verify_signatures? || signable_file?(command.first)
40
39
  raise Overcommit::Exceptions::InvalidHookDefinition,
41
40
  'Hook must specify a `required_executable` or `command` that ' \
42
41
  'is tracked by git (i.e. is a path relative to the root ' \
@@ -100,7 +100,7 @@ module Overcommit
100
100
 
101
101
  # Converts a string containing underscores/hyphens/spaces into CamelCase.
102
102
  def camel_case(str)
103
- str.split(/_|-| /).map { |part| part.sub(/^\w/) { |c| c.upcase } }.join
103
+ str.split(/_|-| /).map { |part| part.sub(/^\w/, &:upcase) }.join
104
104
  end
105
105
 
106
106
  # Returns a list of supported hook types (pre-commit, commit-msg, etc.)
@@ -1,4 +1,4 @@
1
1
  # Defines the gem version.
2
2
  module Overcommit
3
- VERSION = '0.28.0'
3
+ VERSION = '0.29.0'
4
4
  end
data/lib/overcommit.rb CHANGED
@@ -10,6 +10,7 @@ require 'overcommit/configuration_loader'
10
10
  require 'overcommit/hook/base'
11
11
  require 'overcommit/hook_context/base'
12
12
  require 'overcommit/hook_context'
13
+ require 'overcommit/git_config'
13
14
  require 'overcommit/git_repo'
14
15
  require 'overcommit/hook_signer'
15
16
  require 'overcommit/hook_loader/base'
@@ -93,6 +93,10 @@ rescue Overcommit::Exceptions::HookCancelled
93
93
  rescue Overcommit::Exceptions::InvalidGitRepo => error
94
94
  puts error
95
95
  exit 64 # EX_USAGE
96
+ rescue Overcommit::Exceptions::ConfigurationSignatureChanged => error
97
+ puts error
98
+ puts "For more information, see #{Overcommit::REPO_URL}#security"
99
+ exit 1
96
100
  rescue Overcommit::Exceptions::InvalidHookSignature
97
101
  exit 1
98
102
  rescue => error
@@ -93,6 +93,10 @@ rescue Overcommit::Exceptions::HookCancelled
93
93
  rescue Overcommit::Exceptions::InvalidGitRepo => error
94
94
  puts error
95
95
  exit 64 # EX_USAGE
96
+ rescue Overcommit::Exceptions::ConfigurationSignatureChanged => error
97
+ puts error
98
+ puts "For more information, see #{Overcommit::REPO_URL}#security"
99
+ exit 1
96
100
  rescue Overcommit::Exceptions::InvalidHookSignature
97
101
  exit 1
98
102
  rescue => error
@@ -93,6 +93,10 @@ rescue Overcommit::Exceptions::HookCancelled
93
93
  rescue Overcommit::Exceptions::InvalidGitRepo => error
94
94
  puts error
95
95
  exit 64 # EX_USAGE
96
+ rescue Overcommit::Exceptions::ConfigurationSignatureChanged => error
97
+ puts error
98
+ puts "For more information, see #{Overcommit::REPO_URL}#security"
99
+ exit 1
96
100
  rescue Overcommit::Exceptions::InvalidHookSignature
97
101
  exit 1
98
102
  rescue => error
@@ -93,6 +93,10 @@ rescue Overcommit::Exceptions::HookCancelled
93
93
  rescue Overcommit::Exceptions::InvalidGitRepo => error
94
94
  puts error
95
95
  exit 64 # EX_USAGE
96
+ rescue Overcommit::Exceptions::ConfigurationSignatureChanged => error
97
+ puts error
98
+ puts "For more information, see #{Overcommit::REPO_URL}#security"
99
+ exit 1
96
100
  rescue Overcommit::Exceptions::InvalidHookSignature
97
101
  exit 1
98
102
  rescue => error
@@ -93,6 +93,10 @@ rescue Overcommit::Exceptions::HookCancelled
93
93
  rescue Overcommit::Exceptions::InvalidGitRepo => error
94
94
  puts error
95
95
  exit 64 # EX_USAGE
96
+ rescue Overcommit::Exceptions::ConfigurationSignatureChanged => error
97
+ puts error
98
+ puts "For more information, see #{Overcommit::REPO_URL}#security"
99
+ exit 1
96
100
  rescue Overcommit::Exceptions::InvalidHookSignature
97
101
  exit 1
98
102
  rescue => error
@@ -93,6 +93,10 @@ rescue Overcommit::Exceptions::HookCancelled
93
93
  rescue Overcommit::Exceptions::InvalidGitRepo => error
94
94
  puts error
95
95
  exit 64 # EX_USAGE
96
+ rescue Overcommit::Exceptions::ConfigurationSignatureChanged => error
97
+ puts error
98
+ puts "For more information, see #{Overcommit::REPO_URL}#security"
99
+ exit 1
96
100
  rescue Overcommit::Exceptions::InvalidHookSignature
97
101
  exit 1
98
102
  rescue => error
@@ -93,6 +93,10 @@ rescue Overcommit::Exceptions::HookCancelled
93
93
  rescue Overcommit::Exceptions::InvalidGitRepo => error
94
94
  puts error
95
95
  exit 64 # EX_USAGE
96
+ rescue Overcommit::Exceptions::ConfigurationSignatureChanged => error
97
+ puts error
98
+ puts "For more information, see #{Overcommit::REPO_URL}#security"
99
+ exit 1
96
100
  rescue Overcommit::Exceptions::InvalidHookSignature
97
101
  exit 1
98
102
  rescue => error
@@ -93,6 +93,10 @@ rescue Overcommit::Exceptions::HookCancelled
93
93
  rescue Overcommit::Exceptions::InvalidGitRepo => error
94
94
  puts error
95
95
  exit 64 # EX_USAGE
96
+ rescue Overcommit::Exceptions::ConfigurationSignatureChanged => error
97
+ puts error
98
+ puts "For more information, see #{Overcommit::REPO_URL}#security"
99
+ exit 1
96
100
  rescue Overcommit::Exceptions::InvalidHookSignature
97
101
  exit 1
98
102
  rescue => error
@@ -93,6 +93,10 @@ rescue Overcommit::Exceptions::HookCancelled
93
93
  rescue Overcommit::Exceptions::InvalidGitRepo => error
94
94
  puts error
95
95
  exit 64 # EX_USAGE
96
+ rescue Overcommit::Exceptions::ConfigurationSignatureChanged => error
97
+ puts error
98
+ puts "For more information, see #{Overcommit::REPO_URL}#security"
99
+ exit 1
96
100
  rescue Overcommit::Exceptions::InvalidHookSignature
97
101
  exit 1
98
102
  rescue => error
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: overcommit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.28.0
4
+ version: 0.29.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brigade Engineering
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-08-24 00:00:00.000000000 Z
12
+ date: 2015-11-18 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: childprocess
@@ -87,6 +87,7 @@ files:
87
87
  - lib/overcommit/configuration_validator.rb
88
88
  - lib/overcommit/constants.rb
89
89
  - lib/overcommit/exceptions.rb
90
+ - lib/overcommit/git_config.rb
90
91
  - lib/overcommit/git_repo.rb
91
92
  - lib/overcommit/git_version.rb
92
93
  - lib/overcommit/hook/base.rb
@@ -154,6 +155,7 @@ files:
154
155
  - lib/overcommit/hook/pre_commit/json_syntax.rb
155
156
  - lib/overcommit/hook/pre_commit/local_paths_in_gemfile.rb
156
157
  - lib/overcommit/hook/pre_commit/merge_conflicts.rb
158
+ - lib/overcommit/hook/pre_commit/nginx_test.rb
157
159
  - lib/overcommit/hook/pre_commit/pep257.rb
158
160
  - lib/overcommit/hook/pre_commit/pep8.rb
159
161
  - lib/overcommit/hook/pre_commit/puppet_lint.rb
@@ -248,7 +250,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
248
250
  version: '0'
249
251
  requirements: []
250
252
  rubyforge_project:
251
- rubygems_version: 2.4.8
253
+ rubygems_version: 2.4.5.1
252
254
  signing_key:
253
255
  specification_version: 4
254
256
  summary: Git hook manager