diff options
Diffstat (limited to 'lib/puppet/provider/vcsrepo/git.rb')
-rw-r--r-- | lib/puppet/provider/vcsrepo/git.rb | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/lib/puppet/provider/vcsrepo/git.rb b/lib/puppet/provider/vcsrepo/git.rb index 7290387..670d8de 100644 --- a/lib/puppet/provider/vcsrepo/git.rb +++ b/lib/puppet/provider/vcsrepo/git.rb @@ -21,12 +21,8 @@ Puppet::Type.type(:vcsrepo).provide(:git) do end def revision - current = Dir.chdir(@resource.value(:path)) do - git('rev-parse', 'HEAD') - end - canonical = Dir.chdir(@resource.value(:path)) do - git('rev-parse', @resource.value(:revision)) - end + current = at_path { git('rev-parse', 'HEAD') } + canonical = at_path { git('rev-parse', @resource.value(:revision)) } if current == canonical @resource.value(:revision) else @@ -64,8 +60,14 @@ Puppet::Type.type(:vcsrepo).provide(:git) do end end - def at_path(&block) - Dir.chdir(@resource.value(:path), &block) + # Note: We don't rely on Dir.chdir's behavior of automatically returning the + # value of the last statement -- for easier stubbing. + def at_path(&block) #:nodoc: + value = nil + Dir.chdir(@resource.value(:path)) do + value = yield + end + value end end |