我正在研究一个puppet清单,以便从cvs存储库中部署我们的代码。到目前为止,我有以下内容:
define codedeploy::cvs ($module, $tag, $copydir) {
file { "$copydir":
owner => www-data,
group => www-data,
mode => 755,
ensure => directory
}
#bypass cvs login, we'll just inject a ~/.cvspass file
# to do
#initial cvs checkout
exec { "cvscheckout-$name":
command => "cvs co -r $tag -d $name $module",
creates => "$copydir/$name/CVS",
require => [Package[cvs], File["$copydir"]],
environment => "CVSROOT=:pserver:robots@codeserver:/cvs/repository",
cwd => "$copydir"
}
#cvs update to tag
exec { "cvsupdate-$name":
command => "cvs up -r $tag",
require => [Package[cvs], File["$copydir"], Exec["cvscheckout-$name"] ],
environment => "CVSROOT=:pserver:robots@codeserver:/cvs/repository",
cwd => "$copydir/$name",
unless => #NEED TO FIGURE THIS PART OUT!
}
}
我不知道的部分是如何返回工作副本的修订状态,以便它不会在每个木偶运行时调用cvs update。 cvs是否有命令返回整个工作树的当前标记或修订版ID?当我做一个cvs diff时,它似乎知道它应该在该标签下区分所有文件,但是我不知道在我检查完之后我怎么能只返回我的工作副本的标签ID。
谢谢!
答案 0 :(得分:0)
我猜您可以使用cvs status
查看是否需要检查任何更改。
然而,每次只运行cvs up
会有什么危害?我有cron工作,每小时或每天都做同样的事情,我不认为这是一个很大的问题。如果您的代码库是巨大的,我想这是一个原因:)