overcommit 0.38.0 → 0.39.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 +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:
|