Deployment 确保部署了正确版本的文件的最佳方法?

Deployment 确保部署了正确版本的文件的最佳方法?,deployment,cvs,versioning,Deployment,Cvs,Versioning,我工作的公司编写了很多小的Perl和Bash脚本,将数据转换成可用于我们软件的内容。与任何代码一样,这些脚本也可以更改。我向他们提供CVS是因为文件版本控制而不是存储库版本控制。无论如何,我正在考虑一个部署工具,以便将脚本从开发阶段转移到生产阶段。生产服务器将拥有自己的简单版本控制系统,如果其中一个脚本的md5 sum与数据库中的md5 sum不匹配,它将不会运行脚本并通过电子邮件发送给相应的方 我想强制程序员部署脚本的最新CVS版本。如果它不是最新版本,它应该会死掉,并显示一条消息,告诉他们必

我工作的公司编写了很多小的Perl和Bash脚本,将数据转换成可用于我们软件的内容。与任何代码一样,这些脚本也可以更改。我向他们提供CVS是因为文件版本控制而不是存储库版本控制。无论如何,我正在考虑一个部署工具,以便将脚本从开发阶段转移到生产阶段。生产服务器将拥有自己的简单版本控制系统,如果其中一个脚本的md5 sum与数据库中的md5 sum不匹配,它将不会运行脚本并通过电子邮件发送给相应的方

我想强制程序员部署脚本的最新CVS版本。如果它不是最新版本,它应该会死掉,并显示一条消息,告诉他们必须先签入自己的版本。我意识到在某些情况下可能需要部署旧文件。这些都是例外情况,可以这样处理


这样做最好的方法是什么?它是否与执行“cvs差异”一样简单

如果要编写某种分发脚本,它应该相对简单

1) 脚本应提交到cvs存储库中

2) 我建议从makefile(或您使用的任何构建系统)调用脚本 像这样的

make dist
dist规则将调用您的脚本。
3) 脚本将执行

 cvs up -An 
并分析输出以查找M或C或A或R状态 例如,通过将输出重定向到grep

grep -c ^[MCAR] 
如果计数>0,则会出现问题

4) 如果发现上述任何一项失败,则生成脚本

5) 如果没有,请创建tar或您正在使用的任何其他形式的分发


要部署旧版本,可以将-A作为参数默认设置为-A,并通过shell变量覆盖为-r tag-3.14.4

如果要编写某种分发脚本,它应该相对简单

1) 脚本应提交到cvs存储库中

2) 我建议从makefile(或您使用的任何构建系统)调用脚本 像这样的

make dist
dist规则将调用您的脚本。
3) 脚本将执行

 cvs up -An 
并分析输出以查找M或C或A或R状态 例如,通过将输出重定向到grep

grep -c ^[MCAR] 
如果计数>0,则会出现问题

4) 如果发现上述任何一项失败,则生成脚本

5) 如果没有,请创建tar或您正在使用的任何其他形式的分发


要部署旧版本,可以将-A作为参数默认设置为-A,并通过shell变量覆盖为-r tag-3.14.4

我使用了一个内部工具来完成部署。 它是为企业设计的(并且符合SOX法规),因此它依赖于批准来部署代码

因此,我们部署了开发人员在请求中指定的代码版本,而不是最新版本。原因是开发人员可能需要进行更改,将其放入测试,同时进行其他更改。这些较新的更改没有经过测试(QA)阶段,但是开发人员的原始版本已经过了,所以我们将部署该版本


也就是说,我将以这样一种方式设计它,即可以指定版本号,如果没有版本号,则推送最新版本。

我使用了一个内部工具来完成部署。 它是为企业设计的(并且符合SOX法规),因此它依赖于批准来部署代码

因此,我们部署了开发人员在请求中指定的代码版本,而不是最新版本。原因是开发人员可能需要进行更改,将其放入测试,同时进行其他更改。这些较新的更改没有经过测试(QA)阶段,但是开发人员的原始版本已经过了,所以我们将部署该版本


总而言之,我将以这样一种方式设计它,即可以指定版本号,如果没有版本号,则推送最新版本。

使用“^[MARC]”防止文件名中的大写字符导致误报…使用“^[MARC]”防止文件名中的大写字符导致误报。。。