Merge pull request #237 from cmurphy/rspec-puppet-2
[puppet_vcsrepo.git] / lib / puppet / provider / vcsrepo / git.rb
index 9d3f7f3..8101253 100644 (file)
@@ -5,7 +5,7 @@ Puppet::Type.type(:vcsrepo).provide(:git, :parent => Puppet::Provider::Vcsrepo)
 
   commands :git => 'git'
 
-  has_features :bare_repositories, :reference_tracking, :ssh_identity, :multiple_remotes, :user, :depth, :submodules
+  has_features :bare_repositories, :reference_tracking, :ssh_identity, :multiple_remotes, :user, :depth, :branch, :submodules
 
   def create
     if @resource.value(:revision) and @resource.value(:ensure) == :bare
@@ -142,7 +142,8 @@ Puppet::Type.type(:vcsrepo).provide(:git, :parent => Puppet::Provider::Vcsrepo)
     # we loop around the hash. Otherwise, we assume single url specified
     # in source property
     if @resource.value(:source).is_a?(Hash)
-      @resource.value(:source).each do |remote_name, remote_url|
+      @resource.value(:source).keys.sort.each do |remote_name|
+        remote_url = @resource.value(:source)[remote_name]
         at_path { do_update |= update_remote_url(remote_name, remote_url) }
       end
     else
@@ -180,6 +181,9 @@ Puppet::Type.type(:vcsrepo).provide(:git, :parent => Puppet::Provider::Vcsrepo)
     if @resource.value(:depth) and @resource.value(:depth).to_i > 0
       args.push('--depth', @resource.value(:depth).to_s)
     end
+    if @resource.value(:branch)
+      args.push('--branch', @resource.value(:branch).to_s)
+    end
     if @resource.value(:ensure) == :bare
       args << '--bare'
     end