Support Mercurial tags, restructure examples
This commit is contained in:
parent
6adc8745c6
commit
c714947908
@ -7,7 +7,7 @@ To create a blank repository
|
|||||||
Define a `vcsrepo` without a `source` or `revision`:
|
Define a `vcsrepo` without a `source` or `revision`:
|
||||||
|
|
||||||
vcsrepo { "/path/to/repo":
|
vcsrepo { "/path/to/repo":
|
||||||
ensure => present,
|
ensure => present,
|
||||||
provider => hg
|
provider => hg
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -17,16 +17,25 @@ To clone/pull & update a repository
|
|||||||
To get the default branch tip:
|
To get the default branch tip:
|
||||||
|
|
||||||
vcsrepo { "/path/to/repo":
|
vcsrepo { "/path/to/repo":
|
||||||
ensure => present,
|
ensure => present,
|
||||||
provider => hg,
|
provider => hg,
|
||||||
source => "http://hg.example.com/myrepo"
|
source => "http://hg.example.com/myrepo"
|
||||||
}
|
}
|
||||||
|
|
||||||
For a specific changeset, use `revision`:
|
For a specific changeset, use `revision`:
|
||||||
|
|
||||||
vcsrepo { "/path/to/repo":
|
vcsrepo { "/path/to/repo":
|
||||||
ensure => present,
|
ensure => present,
|
||||||
provider => hg,
|
provider => hg,
|
||||||
source => "http://hg.example.com/myrepo"
|
source => "http://hg.example.com/myrepo"
|
||||||
revision => '21ea4598c962'
|
revision => '21ea4598c962'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
You can also set `revision` to a tag:
|
||||||
|
|
||||||
|
vcsrepo { "/path/to/repo":
|
||||||
|
ensure => present,
|
||||||
|
provider => hg,
|
||||||
|
source => "http://hg.example.com/myrepo"
|
||||||
|
revision => '1.1.2'
|
||||||
|
}
|
||||||
|
@ -9,9 +9,3 @@ vcsrepo { "/tmp/vcstest-cvs-workspace-local":
|
|||||||
source => "/tmp/vcstest-cvs-repo",
|
source => "/tmp/vcstest-cvs-repo",
|
||||||
require => Vcsrepo["/tmp/vcstest-cvs-repo"]
|
require => Vcsrepo["/tmp/vcstest-cvs-repo"]
|
||||||
}
|
}
|
||||||
|
|
||||||
vcsrepo { "/tmp/vcstest-cvs-workspace-remote":
|
|
||||||
ensure => present,
|
|
||||||
provider => cvs,
|
|
||||||
source => ":pserver:anonymous@cvs.sv.gnu.org:/sources/leetcvrt"
|
|
||||||
}
|
|
5
examples/cvs/remote.pp
Normal file
5
examples/cvs/remote.pp
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
vcsrepo { "/tmp/vcstest-cvs-workspace-remote":
|
||||||
|
ensure => present,
|
||||||
|
provider => cvs,
|
||||||
|
source => ":pserver:anonymous@cvs.sv.gnu.org:/sources/leetcvrt"
|
||||||
|
}
|
4
examples/git/bare_init.pp
Normal file
4
examples/git/bare_init.pp
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
vcsrepo { "/tmp/vcstest-git-bare":
|
||||||
|
ensure => bare,
|
||||||
|
provider => git
|
||||||
|
}
|
5
examples/git/clone.pp
Normal file
5
examples/git/clone.pp
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
vcsrepo { "/tmp/vcstest-git-clone":
|
||||||
|
ensure => present,
|
||||||
|
provider => git,
|
||||||
|
source => "git://github.com/bruce/rtex.git"
|
||||||
|
}
|
@ -1,15 +0,0 @@
|
|||||||
vcsrepo { "/tmp/vcstest-git-bare":
|
|
||||||
ensure => bare,
|
|
||||||
provider => git
|
|
||||||
}
|
|
||||||
|
|
||||||
vcsrepo { "/tmp/vcstest-git-wc":
|
|
||||||
ensure => present,
|
|
||||||
provider => git
|
|
||||||
}
|
|
||||||
|
|
||||||
vcsrepo { "/tmp/vcstest-git-clone":
|
|
||||||
ensure => present,
|
|
||||||
provider => git,
|
|
||||||
source => "git://github.com/bruce/rtex.git"
|
|
||||||
}
|
|
4
examples/git/working_copy_init.pp
Normal file
4
examples/git/working_copy_init.pp
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
vcsrepo { "/tmp/vcstest-git-wc":
|
||||||
|
ensure => present,
|
||||||
|
provider => git
|
||||||
|
}
|
6
examples/hg/clone.pp
Normal file
6
examples/hg/clone.pp
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
vcsrepo { "/tmp/vcstest-hg-clone":
|
||||||
|
ensure => present,
|
||||||
|
provider => hg,
|
||||||
|
source => "http://hg.basho.com/riak",
|
||||||
|
revision => 'riak-0.5.3'
|
||||||
|
}
|
@ -1,11 +0,0 @@
|
|||||||
vcsrepo { "/tmp/vcstest-hg-init":
|
|
||||||
ensure => present,
|
|
||||||
provider => hg
|
|
||||||
}
|
|
||||||
|
|
||||||
vcsrepo { "/tmp/vcstest-hg-clone":
|
|
||||||
ensure => present,
|
|
||||||
provider => hg,
|
|
||||||
source => "http://hg.basho.com/riak/",
|
|
||||||
revision => '34e6012c783a'
|
|
||||||
}
|
|
4
examples/hg/init_repo.pp
Normal file
4
examples/hg/init_repo.pp
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
vcsrepo { "/tmp/vcstest-hg-init":
|
||||||
|
ensure => present,
|
||||||
|
provider => hg
|
||||||
|
}
|
6
examples/svn/checkout.pp
Normal file
6
examples/svn/checkout.pp
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
vcsrepo { "/tmp/vcstest-svn-checkout":
|
||||||
|
ensure => present,
|
||||||
|
provider => svn,
|
||||||
|
source => 'http://svn.edgewall.org/repos/babel/trunk'
|
||||||
|
}
|
||||||
|
|
@ -24,7 +24,24 @@ Puppet::Type.type(:vcsrepo).provide(:hg, :parent => Puppet::Provider::Vcsrepo) d
|
|||||||
|
|
||||||
def revision
|
def revision
|
||||||
at_path do
|
at_path do
|
||||||
hg('parents')[/^changeset:\s+(?:-?\d+):(\S+)/m, 1]
|
current = hg('parents')[/^changeset:\s+(?:-?\d+):(\S+)/m, 1]
|
||||||
|
desired = @resource.value(:revision)
|
||||||
|
if current == desired
|
||||||
|
current
|
||||||
|
else
|
||||||
|
mapped = hg('tags')[/^#{Regexp.quote(desired)}\s+\d+:(\S+)/m, 1]
|
||||||
|
if mapped
|
||||||
|
# A tag, return that tag if it maps to the current nodeid
|
||||||
|
if current == mapped
|
||||||
|
desired
|
||||||
|
else
|
||||||
|
current
|
||||||
|
end
|
||||||
|
else
|
||||||
|
# Use the current nodeid
|
||||||
|
current
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
18
spec/fixtures/hg_tags.txt
vendored
Normal file
18
spec/fixtures/hg_tags.txt
vendored
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
tip 1019:bca3f20b249b
|
||||||
|
0.9.1 1017:76ce7cca95d8
|
||||||
|
0.9 1001:dbaa6f4ec585
|
||||||
|
0.8 839:65b66ac0fc83
|
||||||
|
0.7.1 702:e1357f00129f
|
||||||
|
0.7 561:7b2af3b4c968
|
||||||
|
0.6.3 486:e38077f4e4aa
|
||||||
|
0.6.2 405:07bb099b7b10
|
||||||
|
0.6.1 389:93750f3fbbe2
|
||||||
|
0.6 369:34e6012c783a
|
||||||
|
0.5.3 321:5ffa6ae7e699
|
||||||
|
0.5.2 318:fdc2c2e4cebe
|
||||||
|
0.5.1 315:33a5ea0cbe7a
|
||||||
|
0.5 313:47490716f4c9
|
||||||
|
0.4 240:47fa3a14cc63
|
||||||
|
0.3.1 132:bc231db18e1c
|
||||||
|
0.3 130:661615e510dd
|
||||||
|
0.2 81:f98d13b442f6
|
@ -70,12 +70,54 @@ describe provider_class do
|
|||||||
|
|
||||||
describe "when checking the revision property" do
|
describe "when checking the revision property" do
|
||||||
before do
|
before do
|
||||||
@resource.expects(:value).with(:path).returns(@path)
|
@resource.expects(:value).with(:path).returns(@path).at_least_once
|
||||||
end
|
|
||||||
it "should use 'hg tip'" do
|
|
||||||
@provider.expects('hg').with('parents').returns(fixture(:hg_parents))
|
|
||||||
Dir.expects(:chdir).with(@path).yields
|
Dir.expects(:chdir).with(@path).yields
|
||||||
@provider.revision.should == '34e6012c783a'
|
end
|
||||||
|
context "when given a non-SHA as the resource revision" do
|
||||||
|
before do
|
||||||
|
@provider.expects(:hg).with('parents').returns(fixture(:hg_parents))
|
||||||
|
end
|
||||||
|
context "when its SHA is not different than the current SHA" do
|
||||||
|
before do
|
||||||
|
@resource.expects(:value).with(:revision).returns('0.6').at_least_once
|
||||||
|
end
|
||||||
|
it "should return the ref" do
|
||||||
|
@provider.expects(:hg).with('tags').returns(fixture(:hg_tags))
|
||||||
|
@provider.revision.should == '0.6'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
context "when its SHA is different than the current SHA" do
|
||||||
|
before do
|
||||||
|
@resource.expects(:value).with(:revision).returns('0.5.3').at_least_once
|
||||||
|
end
|
||||||
|
it "should return the current SHA" do
|
||||||
|
@provider.expects(:hg).with('tags').returns(fixture(:hg_tags))
|
||||||
|
@provider.revision.should == '34e6012c783a'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
context "when given a SHA as the resource revision" do
|
||||||
|
before do
|
||||||
|
@provider.expects(:hg).with('parents').returns(fixture(:hg_parents))
|
||||||
|
end
|
||||||
|
context "when it is the same as the current SHA" do
|
||||||
|
before do
|
||||||
|
@resource.expects(:value).with(:revision).returns('34e6012c783a').at_least_once
|
||||||
|
end
|
||||||
|
it "should return it" do
|
||||||
|
@provider.expects(:hg).with('tags').never
|
||||||
|
@provider.revision.should == '34e6012c783a'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
context "when it is not the same as the current SHA" do
|
||||||
|
before do
|
||||||
|
@resource.expects(:value).with(:revision).returns('34e6012c7').at_least_once
|
||||||
|
end
|
||||||
|
it "should return the current SHA" do
|
||||||
|
@provider.expects(:hg).with('tags').returns(fixture(:hg_tags))
|
||||||
|
@provider.revision.should == '34e6012c783a'
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user