overcommit 0.38.0 → 0.39.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/config/default.yml +10 -0
- data/lib/overcommit/git_repo.rb +2 -1
- data/lib/overcommit/hook/commit_msg/message_format.rb +7 -5
- data/lib/overcommit/hook/pre_commit/es_lint.rb +4 -1
- data/lib/overcommit/hook/pre_push/git_lfs.rb +20 -0
- data/lib/overcommit/hook/pre_push/protected_branches.rb +1 -0
- data/lib/overcommit/hook/pre_push/python_nose.rb +14 -0
- data/lib/overcommit/hook_context/pre_commit.rb +6 -6
- data/lib/overcommit/hook_context/pre_push.rb +1 -1
- data/lib/overcommit/hook_runner.rb +3 -0
- data/lib/overcommit/installer.rb +8 -0
- data/lib/overcommit/version.rb +1 -1
- metadata +7 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6e248dab5322fa00f20964aba130b5d37c4b9572
|
4
|
+
data.tar.gz: e67e895aad71be1c47474edf5a37f30100a5378a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d01920e348b991fe2675a92d5f6b54ce3fc2691f9ffca7f22344be10c5ee3116a03e9137838c3944c01a5cc73b8a5f256a979e8b56214c202aa24d751e853796
|
7
|
+
data.tar.gz: e2fae65ea2dd8f37ffa1dfcf9ade533f74069413ca05aeb9382c1233400441fa95738cb302547a0f7fd7ce60e371ae9b1e2003ef4d671a241ad6221f6f724171
|
data/config/default.yml
CHANGED
@@ -906,6 +906,12 @@ PrePush:
|
|
906
906
|
required_executable: 'pytest'
|
907
907
|
install_command: 'pip install -U pytest'
|
908
908
|
|
909
|
+
PythonNose:
|
910
|
+
enabled: false
|
911
|
+
description: 'Run nose test suite'
|
912
|
+
required_executable: 'nosetests'
|
913
|
+
install_command: 'pip install -U nose'
|
914
|
+
|
909
915
|
RSpec:
|
910
916
|
enabled: false
|
911
917
|
description: 'Run RSpec test suite'
|
@@ -939,6 +945,10 @@ PrePush:
|
|
939
945
|
flags: ['--exit-on-warn', '--quiet', '--summary']
|
940
946
|
install_command: 'gem install brakeman'
|
941
947
|
|
948
|
+
GitLfs:
|
949
|
+
enabled: false
|
950
|
+
description: 'Upload files tracked by Git LFS'
|
951
|
+
|
942
952
|
# Hooks that run during `git rebase`, before any commits are rebased.
|
943
953
|
# If a hook fails, the rebase is aborted.
|
944
954
|
PreRebase:
|
data/lib/overcommit/git_repo.rb
CHANGED
@@ -106,7 +106,8 @@ module Overcommit
|
|
106
106
|
# @return [Array<String>] list of absolute file paths
|
107
107
|
def list_files(paths = [], options = {})
|
108
108
|
ref = options[:ref] || 'HEAD'
|
109
|
-
|
109
|
+
path_list = paths.empty? ? '' : "\"#{paths.join('" "')}\""
|
110
|
+
`git ls-tree --name-only #{ref} #{path_list}`.
|
110
111
|
split(/\n/).
|
111
112
|
map { |relative_file| File.expand_path(relative_file) }.
|
112
113
|
reject { |file| File.directory?(file) } # Exclude submodule directories
|
@@ -17,11 +17,13 @@ module Overcommit::Hook::CommitMsg
|
|
17
17
|
expected_pattern_message = config['expected_pattern_message']
|
18
18
|
sample_message = config['sample_message']
|
19
19
|
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
20
|
+
unless message =~ /#{pattern}/
|
21
|
+
[
|
22
|
+
'Commit message pattern mismatch.',
|
23
|
+
"Expected : #{expected_pattern_message}",
|
24
|
+
"Sample : #{sample_message}"
|
25
|
+
].join("\n")
|
26
|
+
end
|
25
27
|
end
|
26
28
|
end
|
27
29
|
end
|
@@ -19,12 +19,15 @@ module Overcommit::Hook::PreCommit
|
|
19
19
|
def run
|
20
20
|
result = execute(command, args: applicable_files)
|
21
21
|
output = result.stdout.chomp
|
22
|
+
messages = output.split("\n").grep(/Warning|Error/)
|
23
|
+
|
24
|
+
return [:fail, result.stderr] if messages.empty? && !result.success?
|
22
25
|
return :pass if result.success? && output.empty?
|
23
26
|
|
24
27
|
# example message:
|
25
28
|
# path/to/file.js: line 1, col 0, Error - Error message (ruleName)
|
26
29
|
extract_messages(
|
27
|
-
|
30
|
+
messages,
|
28
31
|
/^(?<file>(?:\w:)?[^:]+):[^\d]+(?<line>\d+).*?(?<type>Error|Warning)/,
|
29
32
|
lambda { |type| type.downcase.to_sym }
|
30
33
|
)
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module Overcommit::Hook::PrePush
|
2
|
+
# Invokes Git LFS command that uploads files tracked by Git LFS to the LFS storage
|
3
|
+
#
|
4
|
+
# @see https://git-lfs.github.com/
|
5
|
+
class GitLfs < Base
|
6
|
+
def run
|
7
|
+
unless in_path?('git-lfs')
|
8
|
+
return :warn, 'This repository is configured for Git LFS but \'git-lfs\' ' \
|
9
|
+
"was not found on your path.\nIf you no longer wish to use Git LFS, " \
|
10
|
+
'disable this hook by removing or setting \'enabled: false\' for GitLFS ' \
|
11
|
+
'hook in your .overcommit.yml file'
|
12
|
+
end
|
13
|
+
|
14
|
+
result = execute(['git', 'lfs', 'pre-push', remote_name, remote_url])
|
15
|
+
return :fail, result.stderr unless result.success?
|
16
|
+
|
17
|
+
:pass
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module Overcommit::Hook::PrePush
|
2
|
+
# Runs `nose` test suite before push
|
3
|
+
#
|
4
|
+
# @see https://nose.readthedocs.io/en/latest/
|
5
|
+
class PythonNose < Base
|
6
|
+
def run
|
7
|
+
result = execute(command)
|
8
|
+
return :pass if result.success?
|
9
|
+
|
10
|
+
output = result.stdout + result.stderr
|
11
|
+
[:fail, output]
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -126,6 +126,12 @@ module Overcommit::HookContext
|
|
126
126
|
@modified_lines[file]
|
127
127
|
end
|
128
128
|
|
129
|
+
# Returns whether the current git branch is empty (has no commits).
|
130
|
+
def initial_commit?
|
131
|
+
return @initial_commit unless @initial_commit.nil?
|
132
|
+
@initial_commit = Overcommit::GitRepo.initial_commit?
|
133
|
+
end
|
134
|
+
|
129
135
|
private
|
130
136
|
|
131
137
|
# Clears the working tree so that the stash can be applied.
|
@@ -170,12 +176,6 @@ module Overcommit::HookContext
|
|
170
176
|
modified_files.any?
|
171
177
|
end
|
172
178
|
|
173
|
-
# Returns whether the current git branch is empty (has no commits).
|
174
|
-
def initial_commit?
|
175
|
-
return @initial_commit unless @initial_commit.nil?
|
176
|
-
@initial_commit = Overcommit::GitRepo.initial_commit?
|
177
|
-
end
|
178
|
-
|
179
179
|
# Stores the modification times for all modified files to make it appear like
|
180
180
|
# they never changed.
|
181
181
|
#
|
@@ -17,7 +17,7 @@ module Overcommit::HookContext
|
|
17
17
|
end
|
18
18
|
end
|
19
19
|
|
20
|
-
PushedRef = Struct.new(:local_ref, :local_sha1, :remote_ref, :remote_sha1) do
|
20
|
+
PushedRef = Struct.new(:local_ref, :local_sha1, :remote_ref, :remote_sha1) do
|
21
21
|
def forced?
|
22
22
|
!(created? || deleted? || overwritten_commits.empty?)
|
23
23
|
end
|
data/lib/overcommit/installer.rb
CHANGED
@@ -36,6 +36,9 @@ module Overcommit
|
|
36
36
|
install_hook_files
|
37
37
|
install_starter_config
|
38
38
|
|
39
|
+
# Auto-sign configuration file on install
|
40
|
+
config(verify: false).update_signature!
|
41
|
+
|
39
42
|
log.success "Successfully installed hooks into #{@target}"
|
40
43
|
end
|
41
44
|
|
@@ -180,5 +183,10 @@ module Overcommit
|
|
180
183
|
# doesn't exist. Standardize the behavior to return false.
|
181
184
|
false
|
182
185
|
end
|
186
|
+
|
187
|
+
# Returns the configuration for this repository.
|
188
|
+
def config(options = {})
|
189
|
+
Overcommit::ConfigurationLoader.new(log, options).load_repo_config
|
190
|
+
end
|
183
191
|
end
|
184
192
|
end
|
data/lib/overcommit/version.rb
CHANGED
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.
|
4
|
+
version: 0.39.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: 2017-
|
12
|
+
date: 2017-04-02 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: childprocess
|
@@ -17,14 +17,14 @@ dependencies:
|
|
17
17
|
requirements:
|
18
18
|
- - "~>"
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version: 0.
|
20
|
+
version: 0.6.1
|
21
21
|
type: :runtime
|
22
22
|
prerelease: false
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
25
|
- - "~>"
|
26
26
|
- !ruby/object:Gem::Version
|
27
|
-
version: 0.
|
27
|
+
version: 0.6.1
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
29
|
name: iniparse
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
@@ -172,9 +172,11 @@ files:
|
|
172
172
|
- lib/overcommit/hook/pre_commit/yaml_syntax.rb
|
173
173
|
- lib/overcommit/hook/pre_push/base.rb
|
174
174
|
- lib/overcommit/hook/pre_push/brakeman.rb
|
175
|
+
- lib/overcommit/hook/pre_push/git_lfs.rb
|
175
176
|
- lib/overcommit/hook/pre_push/minitest.rb
|
176
177
|
- lib/overcommit/hook/pre_push/protected_branches.rb
|
177
178
|
- lib/overcommit/hook/pre_push/pytest.rb
|
179
|
+
- lib/overcommit/hook/pre_push/python_nose.rb
|
178
180
|
- lib/overcommit/hook/pre_push/r_spec.rb
|
179
181
|
- lib/overcommit/hook/pre_push/rake_target.rb
|
180
182
|
- lib/overcommit/hook/pre_push/test_unit.rb
|
@@ -244,9 +246,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
244
246
|
version: '0'
|
245
247
|
requirements: []
|
246
248
|
rubyforge_project:
|
247
|
-
rubygems_version: 2.
|
249
|
+
rubygems_version: 2.6.11
|
248
250
|
signing_key:
|
249
251
|
specification_version: 4
|
250
252
|
summary: Git hook manager
|
251
253
|
test_files: []
|
252
|
-
has_rdoc:
|