Skip to content

Commit dfe5f9c

Browse files
committed
Add submodules feature to git provider
1 parent 4a9c69c commit dfe5f9c

File tree

3 files changed

+23
-4
lines changed

3 files changed

+23
-4
lines changed

README.markdown

+12-2
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,15 @@ To keep the repository at the latest revision (**WARNING:** this will always ove
141141
revision => 'master',
142142
}
143143

144+
To clone the repository but skip initialiazing submodules,
145+
146+
vcsrepo { "/path/to/repo":
147+
ensure => latest,
148+
provider => git,
149+
source => 'git://example.com/repo.git',
150+
submodules => false,
151+
}
152+
144153
#####Sources that use SSH
145154

146155
When your source uses SSH, such as 'username@server:…', you can manage your SSH keys with Puppet using the [require](http://docs.puppetlabs.com/references/stable/metaparameter.html#require) metaparameter in `vcsrepo` to ensure they are present.
@@ -479,6 +488,7 @@ The vcsrepo module is slightly unusual in that it is simply a type and providers
479488
* `ssh_identity` - The provider supports a configurable SSH identity file. (Available with `git` and `hg`.)
480489
* `user` - The provider can run as a different user. (Available with `git`, `hg` and `cvs`.)
481490
* `p4config` - The provider support setting the P4CONFIG environment. (Available with `p4`.)
491+
* `submodules` - The provider supports repository submodules which can be optionally initialized. (Available with `git`.)
482492

483493
####Parameters
484494

@@ -507,9 +517,9 @@ The vcsrepo module is slightly unusual in that it is simply a type and providers
507517
####Features and Parameters by Provider
508518

509519
#####`git`
510-
**Features**: `bare_repositories`, `depth`, `multiple_remotes`, `reference_tracking`, `ssh_identity`, `user`
520+
**Features**: `bare_repositories`, `depth`, `multiple_remotes`, `reference_tracking`, `ssh_identity`, `user`, `submodules`
511521

512-
**Parameters**: `depth`, `ensure`, `excludes`, `force`, `group`, `identity`, `owner`, `path`, `provider`, `remote`, `revision`, `source`, `user`
522+
**Parameters**: `depth`, `ensure`, `excludes`, `force`, `group`, `identity`, `owner`, `path`, `provider`, `remote`, `revision`, `source`, `user`, `submodules`
513523

514524
#####`bzr`
515525
**Features**: `reference_tracking`

lib/puppet/provider/vcsrepo/git.rb

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
commands :git => 'git'
77

8-
has_features :bare_repositories, :reference_tracking, :ssh_identity, :multiple_remotes, :user, :depth
8+
has_features :bare_repositories, :reference_tracking, :ssh_identity, :multiple_remotes, :user, :depth, :submodules
99

1010
def create
1111
if @resource.value(:revision) and @resource.value(:ensure) == :bare
@@ -18,7 +18,7 @@ def create
1818
if @resource.value(:revision)
1919
checkout
2020
end
21-
if @resource.value(:ensure) != :bare
21+
if @resource.value(:ensure) != :bare && @resource.value(:submodules) == :true
2222
update_submodules
2323
end
2424
end

lib/puppet/type/vcsrepo.rb

+9
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,9 @@
4343
feature :p4config,
4444
"The provider understands Perforce Configuration"
4545

46+
feature :submodules,
47+
"The repository contains submodules which can be optionally initialized"
48+
4649
ensurable do
4750
attr_accessor :latest
4851

@@ -215,6 +218,12 @@ def retrieve
215218
desc "The Perforce P4CONFIG environment."
216219
end
217220

221+
newparam :submodules, :required_features => [:submodules] do
222+
desc "Initialize and update each submodule in the repository."
223+
newvalues(:true, :false)
224+
defaultto true
225+
end
226+
218227
autorequire(:package) do
219228
['git', 'git-core']
220229
end

0 commit comments

Comments
 (0)