0

私は、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 を返す方法がわかりません。

ありがとう!

4

1 に答える 1

0

cvs status変更をチェックする必要があるかどうかを確認するために使用できると思います。

cvs upしかし、毎回実行することの害は何ですか? 毎時または毎日同じことを行う cron ジョブがありますが、それはあまり問題ではないと思います。あなたのコードベースが膨大な場合、それが理由だと思います:)

于 2011-04-10T02:50:58.937 に答える