diff options
author | kzwin <kz@example.org> | 2017-08-28 20:55:08 -0400 |
---|---|---|
committer | kzwin <kz@example.org> | 2017-08-28 20:58:14 -0400 |
commit | ec06f57d26e1cfd363324a32767370d4cf03cf47 (patch) | |
tree | e2adf696c03a1d9846ea00772a27044e670a5086 /lib/chef | |
parent | 8c30db84a92f995cb6cf6d83f4964dffdd28ad1c (diff) | |
download | chef-ec06f57d26e1cfd363324a32767370d4cf03cf47.tar.gz |
handle apple git
Signed-off-by: kzwin <k.z.win@happyw.info>
Diffstat (limited to 'lib/chef')
-rw-r--r-- | lib/chef/provider/git.rb | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/lib/chef/provider/git.rb b/lib/chef/provider/git.rb index db83e0aea6..7999a16b31 100644 --- a/lib/chef/provider/git.rb +++ b/lib/chef/provider/git.rb @@ -28,6 +28,8 @@ class Chef extend Forwardable provides :git + GIT_VERSION_PATTERN = Regexp.compile('git version (\d+\.\d+.\d+)') + def_delegator :new_resource, :destination, :cwd def load_current_resource @@ -103,8 +105,11 @@ class Chef end end - def git_minor_version - @git_minor_version ||= Gem::Version.new( git("--version").stdout.split.last ) + def git_gem_version + output = git('--version').stdout + match = GIT_VERSION_PATTERN.match(output) + match or raise ArgumentError, "unparsable git version number #{output}" + @git_gem_version ||= Gem::Version.new(match[1]) end def existing_git_clone? @@ -142,7 +147,7 @@ class Chef clone_cmd = ["clone"] clone_cmd << "-o #{remote}" unless remote == "origin" clone_cmd << "--depth #{new_resource.depth}" if new_resource.depth - clone_cmd << "--no-single-branch" if new_resource.depth && git_minor_version >= Gem::Version.new("1.7.10") + clone_cmd << "--no-single-branch" if new_resource.depth && git_gem_version >= Gem::Version.new("1.7.10") clone_cmd << "\"#{new_resource.repository}\"" clone_cmd << "\"#{cwd}\"" @@ -285,6 +290,8 @@ class Chef refs.find_all { |m| m[1] == pattern } end + alias git_minor_version git_gem_version + private def run_options(run_opts = {}) |