Я работаю над манифестом марионетки для развертывания нашего кода из репозитория 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 команда для возврата текущего тега или идентификатора версии всего рабочего дерева? Когда я делаю cvs diff, кажется, что он знает, что он должен различать все файлы под этим тегом, однако я не уверен, как я могу просто вернуть идентификатор тега для моей рабочей копии после того, как я его проверил.
Спасибо!