<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>王超 - 博客 BLOG &#187; cvs</title>
	<atom:link href="http://www.wangchao123.com/tag/cvs/feed" rel="self" type="application/rss+xml" />
	<link>http://www.wangchao123.com</link>
	<description>code player 海盗精神 - 他们向往自由，面对大海胸怀宽广，只拿他们想要的，遵守契约，单纯而且机智。</description>
	<lastBuildDate>Tue, 07 Feb 2012 10:05:53 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>CVS 配置方法，及实时同步到真实代码 (实时发布)</title>
		<link>http://www.wangchao123.com/2011/12/05/746</link>
		<comments>http://www.wangchao123.com/2011/12/05/746#comments</comments>
		<pubDate>Mon, 05 Dec 2011 09:51:05 +0000</pubDate>
		<dc:creator>wangchao</dc:creator>
				<category><![CDATA[开发工具软件]]></category>
		<category><![CDATA[服务器 网络]]></category>
		<category><![CDATA[cvs]]></category>

		<guid isPermaLink="false">http://www.wangchao123.com/?p=746</guid>
		<description><![CDATA[kill -9 `ps aux&#124;grep commitlog&#124;awk &#8216;{print $2}&#8217;` 建立帐号 #groupadd cvs #useradd  cvsroot -g cvs 检查是否存在cvs端口服务，防火墙需要打开2401的权限。 #more /etc/services &#124; grep cvspserver 看看是否有: cvspserver  2401/tcp #CVS client/server operations cvspserver  2401/udp #CVS client/server operations #vi /etc/xinetd.d/cvspserver service cvspserver { disable = no flags           = REUSE socket_type     = stream wait     [...]]]></description>
			<content:encoded><![CDATA[<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">kill -9 `ps aux|grep commitlog|awk &#8216;{print $2}&#8217;`</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">建立帐号</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">#groupadd cvs</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">#useradd  cvsroot -g cvs</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">检查是否存在cvs端口服务，防火墙需要打开2401的权限。</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">#more /etc/services | grep cvspserver</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">看看是否有:</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">cvspserver  2401/tcp #CVS client/server operations</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">cvspserver  2401/udp #CVS client/server operations</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">#vi /etc/xinetd.d/cvspserver</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">service cvspserver</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">{</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">disable = no</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">flags           = REUSE</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">socket_type     = stream</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">wait            = no</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">user            = root</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">server          = /usr/bin/cvs</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">server_args     = -f &#8211;allow-root=/fse/CVS_REP/cvs_docs   &#8211;allow-root=/fse/CVS_REP/cvs_classes pserver</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">log_on_failure  += USERID</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">}</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">初始化CVS</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">#su cvsroot</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">#cvs -d /fse/CVS_REP/cvs_docs init</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">#cvs -d /fse/CVS_REP/cvs_classes init</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">重启服务</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">#/etc/init.d/xinetd restart</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">检查CVS服务</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">#netstat -l | grep cvspserver</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">此处需打开防火墙的 2401 端口（见1_linix.txt），可在windows cmd:<span style="white-space: pre;"> </span>telnet 192.168.1.199 2401 检查是否打开</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">导入程序</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">-先进入到网站的根目录下 cd /ROOT/www/docs</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">cvsroot$ cvs -d /fse/CVS_REP/cvs_docs import -m “new www” docs vendor_tag release_tag</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">分配cvs帐号的脚本 adduse</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">#!/usr/bin/perl</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"># Simple script to take a username and password and</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"># return a line suitable for pasting into the CVS</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"># password file</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">// 添加用户</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"># exp: ./adduser.sh wangcy 123456 cvsroot &gt;&gt; cvs_other/CVSROOT/passwd</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">($u,$p,$g)=@ARGV;</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">@d=(A..Z,a..z);</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">$s=$d[rand(52)].$d[rand52];</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">print $u.”:”.crypt($p,$s).”:”.$g.”\n”;</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">提交cvs的同时发布新的代码到docs目录中</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">#vi cvs_other/CVSROOT/loginfo 最后一行增加</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">docs /fse/CVS_REP/cvs_docs/CVSROOT/log.in %s -f /fse/CVS_REP/cvs_docs/CVSROOT/commitlog  -a /fse/docs</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">classes /fse/CVS_REP/cvs_classes/CVSROOT/log.in %s -f /fse/CVS_REP/cvs_classes/CVSROOT/commitlog  -a /fse/classes</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">log.in文件.&#8211;&gt;http://www.cnblogs.com/oxo/articles/472518.html</div>
<p>kill -9 `ps aux|grep commitlog|awk &#8216;{print $2}&#8217;`</p>
<p>______________________________________</p>
<p>建立帐号</p>
<p>#groupadd cvs</p>
<p>#useradd  cvsroot -g cvs</p>
<p style="font-family: Simsun; line-height: normal; font-size: medium;">______________________________________</p>
<p>检查是否存在cvs端口服务，防火墙需要打开2401的权限。</p>
<p>#more /etc/services | grep cvspserver</p>
<p>看看是否有:</p>
<p>cvspserver  2401/tcp #CVS client/server operations</p>
<p>cvspserver  2401/udp #CVS client/server operations</p>
<p style="font-family: Simsun; line-height: normal; font-size: medium;">______________________________________</p>
<p>#vi /etc/xinetd.d/cvspserver</p>
<p>service cvspserver</p>
<p>{</p>
<p>disable = no</p>
<p>flags           = REUSE</p>
<p>socket_type     = stream</p>
<p>wait            = no</p>
<p>user            = root</p>
<p>server          = /usr/bin/cvs</p>
<p>server_args     = -f &#8211;allow-root=/fse/CVS_REP/cvs_docs   &#8211;allow-root=/fse/CVS_REP/cvs_classes pserver</p>
<p>log_on_failure  += USERID</p>
<p>}</p>
<p style="font-family: Simsun; line-height: normal; font-size: medium;">______________________________________</p>
<p>初始化CVS</p>
<p>#su cvsroot</p>
<p>#cvs -d /fse/CVS_REP/cvs_docs init</p>
<p>#cvs -d /fse/CVS_REP/cvs_classes init</p>
<p style="font-family: Simsun; line-height: normal; font-size: medium;">______________________________________</p>
<p>重启服务</p>
<p>#/etc/init.d/xinetd restart</p>
<p>如果没有 xinetd 可以执行</p>
<p>#yum install xinetd</p>
<p style="font-family: Simsun; line-height: normal; font-size: medium;">______________________________________</p>
<p>检查CVS服务</p>
<p>#netstat -l | grep cvspserver</p>
<p>此处需打开防火墙的 2401 端口    (如果没有开启防火墙，不用做这一步)</p>
<p>vi  /etc/sysconfig/iptables</p>
<p>在后面加</p>
<p>-A RH-Firewall-1-INPUT -m state &#8211;state NEW -m tcp -p tcp &#8211;dport 2401 -j ACCEPT</p>
<p>可在windows cmd:<span style="white-space:pre"> </span>telnet 192.168.1.199 2401 检查是否打开</p>
<p style="font-family: Simsun; line-height: normal; font-size: medium;">______________________________________</p>
<p>导入程序</p>
<p>-先进入到网站的根目录下 cd /ROOT/www/docs</p>
<p>cvsroot$ cvs -d /fse/CVS_REP/cvs_docs import -m “new www” docs vendor_tag release_tag</p>
<p style="font-family: Simsun; line-height: normal; font-size: medium;">______________________________________</p>
<p>分配cvs帐号的脚本 adduse</p>
<p>vi /ROOT/CVS_REP/adduser.sh<br />
给予执行权限<br />
chmod +x <span style="font-size: x-small;"> </span><span style="font-family: Simsun; line-height: normal; font-size: small;"> </span></p>
<p style="font-family: Simsun; line-height: normal; font-size: medium; display: inline !important; ">/ROOT/CVS_REP/adduser.sh</p>
<p style="font-family: Simsun; line-height: normal; font-size: medium; display: inline !important; ">
<p style="font-family: Simsun; line-height: normal; font-size: medium; display: inline !important; ">
<p>以下是文件内容 (”exp,“后面是执行范例，需要在 /ROOT/CVS_REP/文件夹下执行)</p>
<p>#!/usr/bin/perl</p>
<p># Simple script to take a username and password and</p>
<p># return a line suitable for pasting into the CVS</p>
<p># password file</p>
<p>// 添加用户</p>
<p># exp: ./adduser.sh wangcy 123456 cvsroot &gt;&gt; cvs_other/CVSROOT/passwd</p>
<p>($u,$p,$g)=@ARGV;</p>
<p>@d=(A..Z,a..z);</p>
<p>$s=$d[rand(52)].$d[rand52];</p>
<p>print $u.”:”.crypt($p,$s).”:”.$g.”\n”;</p>
<p style="font-family: Simsun; line-height: normal; font-size: medium;">______________________________________</p>
<p>提交cvs的同时发布新的代码到docs目录中</p>
<p>#vi cvs_other/CVSROOT/loginfo 最后一行增加</p>
<p>docs /fse/CVS_REP/cvs_docs/CVSROOT/log.in %s -f /fse/CVS_REP/cvs_docs/CVSROOT/commitlog  -a /fse/docs</p>
<p>log.in文件内容及说明详见<br />
<a href=" http://www.wangchao123.com/2011/12/05/747"> http://www.wangchao123.com/2011/12/05/747</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.wangchao123.com/2011/12/05/746/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>CVS 实时同步到真实代码 实时发布 (转)  附: log.in 及 log_php.pl 文件下载，任选一个即可</title>
		<link>http://www.wangchao123.com/2011/12/05/747</link>
		<comments>http://www.wangchao123.com/2011/12/05/747#comments</comments>
		<pubDate>Mon, 05 Dec 2011 09:50:34 +0000</pubDate>
		<dc:creator>wangchao</dc:creator>
				<category><![CDATA[开发工具软件]]></category>
		<category><![CDATA[服务器 网络]]></category>
		<category><![CDATA[cvs]]></category>

		<guid isPermaLink="false">http://www.wangchao123.com/?p=747</guid>
		<description><![CDATA[文章转自 http://www.cnblogs.com/oxo/articles/472518.html 文件下载 /home/cvsroot/test/CVSROOT/loginfo 文件用于控制仓库中版本变更和目录添加之后，log 信息发送到哪里的控制。 loginfo相当于是一个事件驱动器，只要提交了新的版本到cvs中就会触发里面的程序。 loginfo 文件有一个标准的脚本 hook 形式(参阅 Trigger Scripts)，每一行是一个正则表达式和所执行的命令。它支持 ALL 和 DEFAULT 关键字。 调用任何指定的脚本: commit 每个目录一次，在此目录中的所有文件成功提交之后立即执行。 import 每个 import 一次，完成所有写操作之后立即执行。 add 成功 add 到目录之后立即执行。 通过 loginfo 调用的任何脚本会从标准输入获得 log 信息。注意过滤程序 必须 从标准输入读 所有 的 log 信息，否则 cvs 将因管道信号打断而失败。 除了通用格式化字符串以外(参阅 syntax)，loginfo 还支持: {stVv} 文件属性，其中: s    文件名 T    目标的标签名，或者在没有相关标签的时候为空字串(通常是主干) V    旧版本号(提交前) v    新版本号(提交后) 例如，有效的格式化字符串是 [...]]]></description>
			<content:encoded><![CDATA[<p>文章转自</p>
<p style="font-family: Simsun; line-height: normal; font-size: medium;">http://www.cnblogs.com/oxo/articles/472518.html</p>
<p><a href="/file.rar">文件下载</a></p>
<div style="width:400px">
<table border="0" cellspacing="0" cellpadding="0" width="600">
<tbody>
<tr>
<td style="font-size: 12px; color: #303030; font-family: Verdana, Helvetica, Arial; word-break: break-all; line-height: 18px;" valign="top">
<table style="border: 1px dashed #cccccc;" border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td style="font-size: 12px; color: #303030; font-family: Verdana, Helvetica, Arial; word-break: break-all; line-height: 18px;">
<div style="font-size: 12px; text-align: justify; word-break: break-all;">
<div style="background-color: white; color: #4b4b4b; padding: 10px; border: 1px dotted #000000;">
<div style="margin-top: 10px;  font-size: 12px; color: #303030; background-repeat: no-repeat no-repeat;">
<div id="cnblogs_post_body">
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">/home/cvsroot/test/CVSROOT/loginfo 文件用于控制仓库中版本变更和目录添加之后，log 信息发送到哪里的控制。 loginfo相当于是一个事件驱动器，只要提交了新的版本到cvs中就会触发里面的程序。</p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">loginfo 文件有一个标准的脚本 hook 形式(参阅 Trigger Scripts)，每一行是一个正则表达式和所执行的命令。它支持 ALL 和 DEFAULT 关键字。</p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">调用任何指定的脚本:</p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">commit<br />
每个目录一次，在此目录中的所有文件成功提交之后立即执行。</p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">import<br />
每个 import 一次，完成所有写操作之后立即执行。</p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">add<br />
成功 add 到目录之后立即执行。<br />
通过 loginfo 调用的任何脚本会从标准输入获得 log 信息。注意过滤程序 必须 从标准输入读 所有 的 log 信息，否则 cvs 将因管道信号打断而失败。</p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">除了通用格式化字符串以外(参阅 syntax)，loginfo 还支持:</p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">{stVv}<br />
文件属性，其中:<br />
s    文件名</p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">T    目标的标签名，或者在没有相关标签的时候为空字串(通常是主干)</p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">V    旧版本号(提交前)</p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px;">v    新版本号(提交后)<br />
例如，有效的格式化字符串是 `%%&#8217;, `%s&#8217;, `%{s}&#8217; 和 `%{stVv}&#8217;。</p>
<p>我们了解了loginfo的功能以后就知道我要做什么，我们将提交到cvs里面的版本能不能直接发行，这样岂不是很方便。下面这个程序就解决了这样的问题。原来程序只是作为版本修改通知，现在我改进以后同时支持发布了。</p>
<div style="padding-right: 5px; padding-left: 4px; font-size: 13px; padding-bottom: 4px; width: 600px; word-break: break-all; padding-top: 4px; background-color: #eeeeee; border: 1px solid #cccccc;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /><span style="color: #000000;">#! </span><span style="color: #000000;">/</span><span style="color: #000000;">usr</span><span style="color: #000000;">/</span><span style="color: #000000;">bin</span><span style="color: #000000;">/</span><span style="color: #000000;">perl<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /># </span><span style="color: #000000;">-*-</span><span style="color: #000000;">Perl</span><span style="color: #000000;">-*-</span><span style="color: #000000;"><br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" />#<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /><br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /># Usage: </span><span style="color: #0000ff;">log</span><span style="color: #000000;">.pl [</span><span style="color: #000000;">-</span><span style="color: #000000;">u user] [[</span><span style="color: #000000;">-</span><span style="color: #000000;">m mailto] ] [</span><span style="color: #000000;">-</span><span style="color: #000000;">s] [</span><span style="color: #000000;">-</span><span style="color: #000000;">V] </span><span style="color: #000000;">-</span><span style="color: #000000;">a </span><span style="color: #008000;">&#8216;</span><span style="color: #008000;">execution dir&#8217; -f logfile &#8217;dirname file &#8217;</span><span style="color: #008000;"><br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: #000000;">#<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /># </span><span style="color: #000000;">-</span><span style="color: #000000;">u user </span><span style="color: #000000;">-</span><span style="color: #000000;"> $USER passed from loginfo<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /># </span><span style="color: #000000;">-</span><span style="color: #000000;">m mailto </span><span style="color: #000000;">-</span><span style="color: #000000;"> </span><span style="color: #0000ff;">for</span><span style="color: #000000;"> </span><span style="color: #0000ff;">each</span><span style="color: #000000;"> user </span><span style="color: #0000ff;">to</span><span style="color: #000000;"> receive cvs </span><span style="color: #0000ff;">log</span><span style="color: #000000;"> reports<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" />#                       (multiple </span><span style="color: #000000;">-</span><span style="color: #000000;">m</span><span style="color: #008000;">&#8216;</span><span style="color: #008000;">s permitted)</span><span style="color: #008000;"><br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: #000000;"># </span><span style="color: #000000;">-</span><span style="color: #000000;">s </span><span style="color: #000000;">-</span><span style="color: #000000;"> </span><span style="color: #0000ff;">to</span><span style="color: #000000;"> prevent </span><span style="color: #000000;">“</span><span style="color: #000000;">cvs status -v</span><span style="color: #000000;">“</span><span style="color: #000000;"> messages<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /># </span><span style="color: #000000;">-</span><span style="color: #000000;">V </span><span style="color: #000000;">-</span><span style="color: #000000;"> without </span><span style="color: #008000;">&#8216;</span><span style="color: #008000;">-s&#8217;, don&#8217;t pass &#8217;-v&#8217; to cvs status</span><span style="color: #008000;"><br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: #000000;"># </span><span style="color: #000000;">-</span><span style="color: #000000;">a dirname </span><span style="color: #000000;">-</span><span style="color: #000000;"> </span><span style="color: #0000ff;">to</span><span style="color: #000000;"> specify actual execution directory<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /># </span><span style="color: #000000;">-</span><span style="color: #000000;">f logfile </span><span style="color: #000000;">-</span><span style="color: #000000;"> </span><span style="color: #0000ff;">for</span><span style="color: #000000;"> the logfile </span><span style="color: #0000ff;">to</span><span style="color: #000000;"> append </span><span style="color: #0000ff;">to</span><span style="color: #000000;"> (mandatory,<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" />#                       but only one logfile can be specified).<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /><br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /><br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" />use strict;<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" />use IO::File;<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /><br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" />my $cvsroot </span><span style="color: #000000;">=</span><span style="color: #000000;"> $ENV{</span><span style="color: #008000;">&#8216;</span><span style="color: #008000;">CVSROOT&#8217;};</span><span style="color: #008000;"><br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: #000000;"><br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /># turn off setgid<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" />#<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" />$) </span><span style="color: #000000;">=</span><span style="color: #000000;"> $(;<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /><br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" />my $dostatus </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #000000;">1</span><span style="color: #000000;">;<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" />my $verbosestatus </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #000000;">1</span><span style="color: #000000;">;<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" />my $users;<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" />my $login;<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" />my $donefiles;<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" />my $logfile;<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" />my $activedir;<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" />my @files;<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /><br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /># parse command line arguments<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" />#<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: #0000ff;">while</span><span style="color: #000000;"> (@ARGV) {<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> my $arg </span><span style="color: #000000;">=</span><span style="color: #000000;"> shift @ARGV;<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /><br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> ($arg eq </span><span style="color: #008000;">&#8216;</span><span style="color: #008000;">-m&#8217;) {</span><span style="color: #008000;"><br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: #000000;"> $users </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #000000;">“</span><span style="color: #000000;">$users </span><span style="color: #000000;">“</span><span style="color: #000000;"> . shift @ARGV;<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> } elsif ($arg eq </span><span style="color: #008000;">&#8216;</span><span style="color: #008000;">-u&#8217;) {</span><span style="color: #008000;"><br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: #000000;"> $login </span><span style="color: #000000;">=</span><span style="color: #000000;"> shift @ARGV;<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> } elsif ($arg eq </span><span style="color: #008000;">&#8216;</span><span style="color: #008000;">-f&#8217;) {</span><span style="color: #008000;"><br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: #000000;"> ($logfile) </span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;"> die </span><span style="color: #000000;">“</span><span style="color: #000000;">Too many &#8217;-f&#8217; args</span><span style="color: #000000;">“</span><span style="color: #000000;">;<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> $logfile </span><span style="color: #000000;">=</span><span style="color: #000000;"> shift @ARGV;<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> } elsif ($arg eq </span><span style="color: #008000;">&#8216;</span><span style="color: #008000;">-a&#8217;) {</span><span style="color: #008000;"><br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: #000000;"> $activedir </span><span style="color: #000000;">=</span><span style="color: #000000;"> shift @ARGV;<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> } elsif ($arg eq </span><span style="color: #008000;">&#8216;</span><span style="color: #008000;">-s&#8217;) {</span><span style="color: #008000;"><br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: #000000;"> $dostatus </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #000000;">0</span><span style="color: #000000;">;<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> } elsif ($arg eq </span><span style="color: #008000;">&#8216;</span><span style="color: #008000;">-V&#8217;) {</span><span style="color: #008000;"><br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: #000000;"> $verbosestatus </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #000000;">0</span><span style="color: #000000;">;<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> } </span><span style="color: #0000ff;">else</span><span style="color: #000000;"> {<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> ($donefiles) </span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;"> die </span><span style="color: #000000;">“</span><span style="color: #000000;">Too many arguments!\n</span><span style="color: #000000;">“</span><span style="color: #000000;">;<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> $donefiles </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #000000;">1</span><span style="color: #000000;">;<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> @files </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000ff;">split</span><span style="color: #000000;">(</span><span style="color: #000000;">/</span><span style="color: #000000;"> </span><span style="color: #000000;">/</span><span style="color: #000000;">, $arg);<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> }<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" />}<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /><br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /># the first argument </span><span style="color: #0000ff;">is</span><span style="color: #000000;"> the module location relative </span><span style="color: #0000ff;">to</span><span style="color: #000000;"> $CVSROOT<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" />#<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" />my $modulepath </span><span style="color: #000000;">=</span><span style="color: #000000;"> shift @files;<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" />my $mailcmd </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #000000;">“</span><span style="color: #000000;">| Mail -s &#8217;CVS update: $modulepath&#8217;</span><span style="color: #000000;">“</span><span style="color: #000000;">;<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /><br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /># Initialise some </span><span style="color: #0000ff;">date</span><span style="color: #000000;"> </span><span style="color: #0000ff;">and</span><span style="color: #000000;"> </span><span style="color: #0000ff;">time</span><span style="color: #000000;"> arrays<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" />#<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" />my @mos </span><span style="color: #000000;">=</span><span style="color: #000000;"> (</span><span style="color: #008000;">&#8216;</span><span style="color: #008000;">January&#8217;,'February&#8217;,'March&#8217;,'April&#8217;,'May&#8217;,'June&#8217;,'July&#8217;,</span><span style="color: #008000;"><br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: #000000;"> </span><span style="color: #008000;">&#8216;</span><span style="color: #008000;">August&#8217;,'September&#8217;,'October&#8217;,'November&#8217;,'December&#8217;);</span><span style="color: #008000;"><br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: #000000;">my @days </span><span style="color: #000000;">=</span><span style="color: #000000;"> (</span><span style="color: #008000;">&#8216;</span><span style="color: #008000;">Sunday&#8217;,'Monday&#8217;,'Tuesday&#8217;,'Wednesday&#8217;,'Thursday&#8217;,'Friday&#8217;,'Saturday&#8217;);</span><span style="color: #008000;"><br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: #000000;"><br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" />my ($sec,$min,$</span><span style="color: #0000ff;">hour</span><span style="color: #000000;">,$mday,$mon,$</span><span style="color: #0000ff;">year</span><span style="color: #000000;">,$wday,$yday,$isdst) </span><span style="color: #000000;">=</span><span style="color: #000000;"> localtime;<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" />$</span><span style="color: #0000ff;">year</span><span style="color: #000000;"> </span><span style="color: #000000;">+=</span><span style="color: #000000;"> </span><span style="color: #000000;">1900</span><span style="color: #000000;">;<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /><br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /># </span><span style="color: #0000ff;">get</span><span style="color: #000000;"> a login name </span><span style="color: #0000ff;">for</span><span style="color: #000000;"> the guy doing the commit.<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" />#<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: #0000ff;">if</span><span style="color: #000000;"> ($login eq </span><span style="color: #008000;">&#8216;</span><span style="color: #008000;">&#8216;) {</span><span style="color: #008000;"><br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: #000000;"> $login </span><span style="color: #000000;">=</span><span style="color: #000000;"> getlogin || (getpwuid($</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">))[</span><span style="color: #000000;">0</span><span style="color: #000000;">] || </span><span style="color: #000000;">“</span><span style="color: #000000;">nobody</span><span style="color: #000000;">“</span><span style="color: #000000;">;<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" />}<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /><br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /># open </span><span style="color: #0000ff;">log</span><span style="color: #000000;"> file </span><span style="color: #0000ff;">for</span><span style="color: #000000;"> appending<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" />#<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" />my $logfh </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000ff;">new</span><span style="color: #000000;"> IO::File </span><span style="color: #000000;">“</span><span style="color: #000000;">&gt;&gt;</span><span style="color: #000000;">“</span><span style="color: #000000;"> . $logfile<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> </span><span style="color: #0000ff;">or</span><span style="color: #000000;"> die </span><span style="color: #000000;">“</span><span style="color: #000000;">Could not open(</span><span style="color: #000000;">“</span><span style="color: #000000;"> . $logfile . </span><span style="color: #000000;">“</span><span style="color: #000000;">): $!\n</span><span style="color: #000000;">“</span><span style="color: #000000;">;<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /><br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /># send mail, </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> there</span><span style="color: #008000;">&#8216;</span><span style="color: #008000;">s anyone to send to!</span><span style="color: #008000;"><br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: #000000;">#<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" />my $mailfh;<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: #0000ff;">if</span><span style="color: #000000;"> ($users) {<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> $mailcmd </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #000000;">“</span><span style="color: #000000;">$mailcmd $users</span><span style="color: #000000;">“</span><span style="color: #000000;">;<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> $mailfh </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000ff;">new</span><span style="color: #000000;"> IO::File $mailcmd<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> </span><span style="color: #0000ff;">or</span><span style="color: #000000;"> die </span><span style="color: #000000;">“</span><span style="color: #000000;">Could not Exec($mailcmd): $!\n</span><span style="color: #000000;">“</span><span style="color: #000000;">;<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" />}<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /><br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /># print out the </span><span style="color: #0000ff;">log</span><span style="color: #000000;"> Header<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" />#<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" />$logfh</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">print (</span><span style="color: #000000;">“</span><span style="color: #000000;">\n</span><span style="color: #000000;">“</span><span style="color: #000000;">);<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" />$logfh</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">print (</span><span style="color: #000000;">“</span><span style="color: #000000;">****************************************\n</span><span style="color: #000000;">“</span><span style="color: #000000;">);<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" />$logfh</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">print (</span><span style="color: #000000;">“</span><span style="color: #000000;">Date:\t$days[$wday] $mos[$mon] $mday, $year @ $hour:</span><span style="color: #000000;">“</span><span style="color: #000000;"> . sprintf(</span><span style="color: #000000;">“</span><span style="color: #000000;">%02d</span><span style="color: #000000;">“</span><span style="color: #000000;">, $min) . </span><span style="color: #000000;">“</span><span style="color: #000000;">\n</span><span style="color: #000000;">“</span><span style="color: #000000;">);<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" />$logfh</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">print (</span><span style="color: #000000;">“</span><span style="color: #000000;">Author:\t$login\n\n</span><span style="color: #000000;">“</span><span style="color: #000000;">);<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /><br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: #0000ff;">if</span><span style="color: #000000;"> ($mailfh) {<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> $mailfh</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">print (</span><span style="color: #000000;">“</span><span style="color: #000000;">\n</span><span style="color: #000000;">“</span><span style="color: #000000;">);<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> $mailfh</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">print (</span><span style="color: #000000;">“</span><span style="color: #000000;">Date:\t$days[$wday] $mos[$mon] $mday, $year @ $hour:</span><span style="color: #000000;">“</span><span style="color: #000000;"> . sprintf(</span><span style="color: #000000;">“</span><span style="color: #000000;">%02d</span><span style="color: #000000;">“</span><span style="color: #000000;">, $min) . </span><span style="color: #000000;">“</span><span style="color: #000000;">\n</span><span style="color: #000000;">“</span><span style="color: #000000;">);<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> $mailfh</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">print (</span><span style="color: #000000;">“</span><span style="color: #000000;">Author:\t$login\n\n</span><span style="color: #000000;">“</span><span style="color: #000000;">);<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" />}<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /><br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /># print the stuff from logmsg that comes in </span><span style="color: #0000ff;">on</span><span style="color: #000000;"> stdin </span><span style="color: #0000ff;">to</span><span style="color: #000000;"> the logfile<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" />#<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" />my $infh </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000ff;">new</span><span style="color: #000000;"> IO::File </span><span style="color: #000000;">“</span><span style="color: #000000;">&lt; -</span><span style="color: #000000;">“</span><span style="color: #000000;">;<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /><br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" />my $cno </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #000000;">0</span><span style="color: #000000;">;<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" />my $cdir;<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" />foreach ($infh</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">getlines) {<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> $logfh</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">print;<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> #print(</span><span style="color: #000000;">“</span><span style="color: #000000;">cc-&gt; $_</span><span style="color: #000000;">“</span><span style="color: #000000;">);<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> </span><span style="color: #0000ff;">if</span><span style="color: #000000;">($cno </span><span style="color: #000000;">==</span><span style="color: #000000;"> </span><span style="color: #000000;">1</span><span style="color: #000000;">){<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> my $ff </span><span style="color: #000000;">=</span><span style="color: #000000;"> $_;<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> my @nw </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000ff;">split</span><span style="color: #000000;"> (</span><span style="color: #000000;">/</span><span style="color: #000000;">:</span><span style="color: #000000;">/</span><span style="color: #000000;">, $ff) ;<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> $cdir </span><span style="color: #000000;">=</span><span style="color: #000000;"> @nw[</span><span style="color: #000000;">1</span><span style="color: #000000;">];<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> }<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> ($mailfh) {<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> $mailfh</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">print (</span><span style="color: #000000;">“</span><span style="color: #000000;">$_</span><span style="color: #000000;">“</span><span style="color: #000000;">);<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> }<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> $cno</span><span style="color: #000000;">++</span><span style="color: #000000;">;<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" />}<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" />undef $infh;<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /><br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" />$logfh</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">print (</span><span style="color: #000000;">“</span><span style="color: #000000;">\n</span><span style="color: #000000;">“</span><span style="color: #000000;">);<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" />#print(</span><span style="color: #000000;">“</span><span style="color: #000000;">cdir=$cdir</span><span style="color: #000000;">“</span><span style="color: #000000;">);<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" />my $adir </span><span style="color: #000000;">=</span><span style="color: #000000;"> substr $cdir, </span><span style="color: #000000;">0</span><span style="color: #000000;">, length($cdir) </span><span style="color: #000000;">-</span><span style="color: #000000;"> </span><span style="color: #000000;">1</span><span style="color: #000000;">;<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" />#my $asubdir </span><span style="color: #000000;">=</span><span style="color: #000000;"> substr $cdir, </span><span style="color: #000000;">18</span><span style="color: #000000;"> ;<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" />my $asubdir </span><span style="color: #000000;">=</span><span style="color: #000000;"> substr ($cdir, index($cdir,</span><span style="color: #000000;">“</span><span style="color: #000000;">/</span><span style="color: #000000;">“</span><span style="color: #000000;">,</span><span style="color: #000000;">5</span><span style="color: #000000;">) </span><span style="color: #000000;">+</span><span style="color: #000000;"> </span><span style="color: #000000;">1</span><span style="color: #000000;">) ;<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" />chomp $asubdir;<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" />my $ain </span><span style="color: #000000;">=</span><span style="color: #000000;"> index($modulepath,</span><span style="color: #000000;">“</span><span style="color: #000000;">/</span><span style="color: #000000;">“</span><span style="color: #000000;">);<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" />my $mopath_sub </span><span style="color: #000000;">=</span><span style="color: #000000;"> substr ($modulepath, $ain</span><span style="color: #000000;">+</span><span style="color: #000000;">1</span><span style="color: #000000;">);<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /><br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /># after </span><span style="color: #0000ff;">log</span><span style="color: #000000;"> information, </span><span style="color: #0000ff;">do</span><span style="color: #000000;"> an </span><span style="color: #008000;">&#8216;</span><span style="color: #008000;">cvs -Qq status -v&#8217; on each file in the arguments.</span><span style="color: #008000;"><br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: #000000;">#<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: #0000ff;">if</span><span style="color: #000000;"> ($dostatus !</span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #000000;">0</span><span style="color: #000000;">) {<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> </span><span style="color: #0000ff;">while</span><span style="color: #000000;"> (@files) {<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> my $file </span><span style="color: #000000;">=</span><span style="color: #000000;"> shift @files;<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /><br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> ($file eq </span><span style="color: #000000;">“</span><span style="color: #000000;">-</span><span style="color: #000000;">“</span><span style="color: #000000;">) {<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> $logfh</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">print (</span><span style="color: #000000;">“</span><span style="color: #000000;">[input file was '-']\n</span><span style="color: #000000;">“</span><span style="color: #000000;">);<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> ($mailfh) {<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> $mailfh</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">print (</span><span style="color: #000000;">“</span><span style="color: #000000;">[input file was '-']\n</span><span style="color: #000000;">“</span><span style="color: #000000;">);<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> }<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /><br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> exec </span><span style="color: #000000;">“</span><span style="color: #000000;">mkdir -m 755 $activedir/$mopath_sub</span><span style="color: #000000;">“</span><span style="color: #000000;">;<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> #die </span><span style="color: #000000;">“</span><span style="color: #000000;">file transfer for latest version failed: $!</span><span style="color: #000000;">“</span><span style="color: #000000;">;<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> last;<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> }<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> my $rcsfh </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000ff;">new</span><span style="color: #000000;"> IO::File;<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> my $pid </span><span style="color: #000000;">=</span><span style="color: #000000;"> $rcsfh</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">open (</span><span style="color: #000000;">“</span><span style="color: #000000;">-|</span><span style="color: #000000;">“</span><span style="color: #000000;">);<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> ( !defined $pid )<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> {<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> die </span><span style="color: #000000;">“</span><span style="color: #000000;">fork failed: $!</span><span style="color: #000000;">“</span><span style="color: #000000;">;<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> }<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> ($pid </span><span style="color: #000000;">==</span><span style="color: #000000;"> </span><span style="color: #000000;">0</span><span style="color: #000000;">)<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> {<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> my @command </span><span style="color: #000000;">=</span><span style="color: #000000;"> (</span><span style="color: #008000;">&#8216;</span><span style="color: #008000;">cvs&#8217;, &#8217;-nQq&#8217;, &#8217;status&#8217;);</span><span style="color: #008000;"><br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: #000000;"> </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> ($verbosestatus)<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> {<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> push @command, </span><span style="color: #008000;">&#8216;</span><span style="color: #008000;">-v&#8217;;</span><span style="color: #008000;"><br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: #000000;"> }<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> push @command, $file;<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> exec @command;<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> die </span><span style="color: #000000;">“</span><span style="color: #000000;">cvs exec failed: $!</span><span style="color: #000000;">“</span><span style="color: #000000;">;<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /><br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> }<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /><br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> my $line;<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> </span><span style="color: #0000ff;">while</span><span style="color: #000000;"> ($line </span><span style="color: #000000;">=</span><span style="color: #000000;"> $rcsfh</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">getline) {<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> $logfh</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">print ($line);<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> ($mailfh) {<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> $mailfh</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">print ($line);<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> }<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> }<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /><br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> #print(</span><span style="color: #000000;">“</span><span style="color: #000000;">cp $adir/$file $activedir/$mopath_sub,$asubdir \n</span><span style="color: #000000;">“</span><span style="color: #000000;">);<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> print (</span><span style="color: #000000;">“</span><span style="color: #000000;">\n  Active Dir : $activedir/$asubdir  \n</span><span style="color: #000000;">“</span><span style="color: #000000;">);<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> </span><span style="color: #0000ff;">if</span><span style="color: #000000;">(index($asubdir,</span><span style="color: #000000;">“</span><span style="color: #000000;">src/</span><span style="color: #000000;">“</span><span style="color: #000000;">)</span><span style="color: #000000;">==</span><span style="color: #000000;">0</span><span style="color: #000000;">){<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> my $tmp_2</span><span style="color: #000000;">=</span><span style="color: #000000;">substr $asubdir,</span><span style="color: #000000;">4</span><span style="color: #000000;">;<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> $asubdir </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #000000;">“</span><span style="color: #000000;">WebRoot/WEB-INF/classes/$tmp_2</span><span style="color: #000000;">“</span><span style="color: #000000;">;<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> </span><span style="color: #0000ff;">if</span><span style="color: #000000;">(</span><span style="color: #000000;">-</span><span style="color: #000000;">d </span><span style="color: #000000;">“</span><span style="color: #000000;">$activedir/$asubdir</span><span style="color: #000000;">“</span><span style="color: #000000;">){<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> print(</span><span style="color: #000000;">“</span><span style="color: #000000;">Dir exists:$activedir/$asubdir \n</span><span style="color: #000000;">“</span><span style="color: #000000;">);<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> }</span><span style="color: #0000ff;">else</span><span style="color: #000000;">{<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> exec </span><span style="color: #000000;">“</span><span style="color: #000000;">mkdir -p $activedir/$asubdir</span><span style="color: #000000;">“</span><span style="color: #000000;">;<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> }<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> }<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> print(</span><span style="color: #000000;">“</span><span style="color: #000000;">cp $adir/$file $activedir/$asubdir \n</span><span style="color: #000000;">“</span><span style="color: #000000;">);<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> </span><span style="color: #0000ff;">if</span><span style="color: #000000;">(index($asubdir,</span><span style="color: #000000;">“</span><span style="color: #000000;">/tmp/cvs-</span><span style="color: #000000;">“</span><span style="color: #000000;">)</span><span style="color: #000000;">==</span><span style="color: #000000;">0</span><span style="color: #000000;">){<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> exec </span><span style="color: #000000;">“</span><span style="color: #000000;">cp $adir/$file $activedir</span><span style="color: #000000;">“</span><span style="color: #000000;">;<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> }</span><span style="color: #0000ff;">else</span><span style="color: #000000;">{<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> exec </span><span style="color: #000000;">“</span><span style="color: #000000;">cp $adir/$file $activedir/$asubdir</span><span style="color: #000000;">“</span><span style="color: #000000;">;<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> }<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /><br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> #die </span><span style="color: #000000;">“</span><span style="color: #000000;">file transfer for latest version failed: $!</span><span style="color: #000000;">“</span><span style="color: #000000;">;<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /><br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> undef $rcsfh;<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> }<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" />}<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /><br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" />$logfh</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">close()<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> </span><span style="color: #0000ff;">or</span><span style="color: #000000;"> die </span><span style="color: #000000;">“</span><span style="color: #000000;">Write to $logfile failed: $!</span><span style="color: #000000;">“</span><span style="color: #000000;">;<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /><br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: #0000ff;">if</span><span style="color: #000000;"> ($mailfh)<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" />{<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> $mailfh</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">close;<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> die </span><span style="color: #000000;">“</span><span style="color: #000000;">Pipe to $mailcmd failed</span><span style="color: #000000;">“</span><span style="color: #000000;"> </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> $?;<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" />}<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" />## must </span><span style="color: #0000ff;">exit</span><span style="color: #000000;"> cleanly<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" />##<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: #0000ff;">exit</span><span style="color: #000000;"> </span><span style="color: #000000;">0</span><span style="color: #000000;">;<br />
<img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /></span></div>
</div>
</div>
</div>
</div>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.wangchao123.com/2011/12/05/747/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>cvs update 提示信息含义</title>
		<link>http://www.wangchao123.com/2009/06/08/158</link>
		<comments>http://www.wangchao123.com/2009/06/08/158#comments</comments>
		<pubDate>Mon, 08 Jun 2009 14:16:21 +0000</pubDate>
		<dc:creator>wangchao</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[开发工具软件]]></category>
		<category><![CDATA[开源软件]]></category>
		<category><![CDATA[cvs]]></category>
		<category><![CDATA[zend]]></category>

		<guid isPermaLink="false">http://www.wangchao123.com/?p=158</guid>
		<description><![CDATA[“cvs update” 后在信息框里会列出你的操作，你的文件update的情况，这里是CVS使用的所有其它单字符信息性消息的列表：   U [path]  在本地机更新get到了服务器上最新的或者最新版本的文件。 P [path]  像“U”一样，只是在update时你的网络带宽少的情况下CVS服务器所出现的提示。 M [path] 这意味着您已经修改过该文件了；而且，有可能资源库中新的更改已成功地合并到该文件。 C [path] 错误警报，”C” 字符表明该文件存在冲突，需要在使用 “commit” 提交前解决这冲突。 A [path] 该文件是计划要添加的，即添加了但尚未提交，这时你还使用update命令，CVS就会有这个提示，当你 “commit” 时，它被正式添加到服务器库中，问题解决。 R [path] 象 “A” 一样，”R” 让您知道该文件计划要删除的，即删除了但尚未提交，这时你还使用update命令， CVS就会有这个提示，当你 ” commit” 后，该文件就会从服务器库中删除，问题解决。]]></description>
			<content:encoded><![CDATA[<p>“cvs update” 后在信息框里会列出你的操作，你的文件update的情况，这里是CVS使用的所有其它单字符信息性消息的列表：<br />
 <br />
<span style="color: #008000;"><span style="color: #00ff00;">U [path]</span>  </span>在本地机更新get到了服务器上最新的或者最新版本的文件。</p>
<p><span style="color: #00ff00;">P [path] </span> 像“U”一样，只是在update时你的网络带宽少的情况下CVS服务器所出现的提示。</p>
<p><span style="color: #0000ff;">M [path] </span>这意味着您已经修改过该文件了；而且，有可能资源库中新的更改已成功地合并到该文件。</p>
<p><span style="color: #ff0000;">C [path]</span> 错误警报，”C” 字符表明该文件存在冲突，需要在使用 “commit” 提交前解决这冲突。</p>
<p><span style="color: #ff0000;">A [path]</span> 该文件是计划要添加的，即添加了但尚未提交，这时你还使用update命令，CVS就会有这个提示，当你 “commit” 时，它被正式添加到服务器库中，问题解决。</p>
<p><span style="color: #ff0000;">R [path]</span> 象 “A” 一样，”R” 让您知道该文件计划要删除的，即删除了但尚未提交，这时你还使用update命令， CVS就会有这个提示，当你 ” commit” 后，该文件就会从服务器库中删除，问题解决。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.wangchao123.com/2009/06/08/158/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

