cvs返回工作副本修订的状态

时间:2011-02-14 01:52:24

标签: tags cvs puppet

我正在研究一个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。

谢谢!

1 个答案:

答案 0 :(得分:0)

我猜您可以使用cvs status查看是否需要检查任何更改。

然而,每次只运行cvs up会有什么危害?我有cron工作,每小时或每天都做同样的事情,我不认为这是一个很大的问题。如果您的代码库是巨大的,我想这是一个原因:)