20110302

有事要吱声

有事要吱声

计算机输入输出的时候,传统上有三种方法。

一种是轮询,类似于每隔一会就上人人上瞧一眼,哪个好友又抽疯更新状态了;

一种是中断,类似于有同学在人人网给你留言,你不用总花CPU时间去看,而是人
人网主动的发封邮件给你,而你有邮件通知工具,一收到邮件你机器就叫唤。于
是你脱离工作状态,上人人。

另一种是DMA通道,类似于你后台下载一大推VERYCD的东西,前台不耽误看碟。

如果不是批量的话,很多场合,我们希望是中断方式,不幸的是,很多时间恰恰
要轮询。

是不是有人强迫症到半夜起来上厕所还要收下邮件看看QQ的?

工程上也一样。

俺们使用git做版本控制,长时间以来,我每天pull一次。然后看看同学们有啥
进度。

SVN很久以前就提供一个好功能,有人更新代码的话,会给大家发封邮件。为啥
不是QQ消息呢?因为电子邮件是因特网中三个核心技术之一,QQ不是的。

其实git也可以提供类似的功能。一年左右以前,我试把了一次,失败了。

前一段时间跟李记者和典典烤肉,又提起这个。话说,我们仨谈不完的话题恰恰
是技术本身。本次会面,就先友好地把ipad和kindel等东西拿出来,大家显摆一
翻。还有口头上提到的8G内存啥的。

典典说,他们公司也用git管理版本,有邮件通知功能。我又活了心,回家歇了
几天,整些俗务,然后又回过头投入到美好的git geek生活中。

其实邮件通知说起来也容易调。

有个hooks目录,往里面拷一个post-receive-email,然后配置一下。事情就成
了。

不过这只是说起来。我发现一个规律,越是简单的,越是有N多人写了或抄了相同
的教程的,我调起来总是失败的次数越多。直接读文档,反倒好一些。

其实上面的描述里,有好几个陷阱, 或者太过简单, 写教程的人不太提。

1. 那个hooks目录是服务端(比如安装gitosis的那个)的,不是客户端的.更严格的说,是大家一起向它
push的那个git,而且大家相互之间不会push.这是手册上说的.

2. post-receive-email一般已经跟git一起安装了,不用到处找,在你硬盘上.通
常在
: /var/git/repositories/gittest.git/hooks/post-receive
或者这样查到
: ~/git/gittest $ dpkg -L git | grep post-receive-email
: /usr/share/doc/git/contrib/hooks/post-receive-email

3. post-receive必须是可执行

4. sendmail 必须启动

我上次可能就栽在这上面了.

不清楚为什么在我的Ubuntu下,不启动sendmail,也能发出邮件。

: sendmail -t < mailbody.txt

服务端CentOS,需要启动sendmail

: /etc/rc.d/init.d/sendmail start


以上.

此外,push的时候发现,使用git也有文件系统编码的问题.

原来的git都是gbk的,而今我投奔了utf8.于是,git自动把N多文件名都复制一
份,改成了UTF8的.唉,跟SVN的做法没啥区别.

网上大家都建议所有成员一起用linux.暂时估计还不行.刘同学正试windows下的
utf8 git,等消息中.

一个收获.

sendmail -v
查看详细信息, 包括发送邮件的过程, 用于确定问题的原因.

要想知道问题的原因,当然,不仅要知道如何看,如上,还要知道那些信息到底
是什么意思.

这就得看理论书了.


配完了以上这些东西,git终于能在有事的时候就发邮件了.有事吱声,不用成天去看了.

尤其是成天看,却不见更新.

顺便说一嘴,春晚的"喜欢你就抱抱我亲亲我爱爱我",把我恶心够呛.你事怎么就
这么多呢.

知道为什么把WINDOWS下的杀毒软件一个个都杀了么?因为它们太事多,打扰人工
作.干点活就成天叫唤"我又给你杀了个病毒".杀了就杀了,你以为我留着你干嘛
的,打呼噜翻跟斗的?"你的计算机打败了全国XX台计算机",我同意你测了么?
测量是占用启用时间的,显示这条没用的消息是占用我的显示器的.

有事你就吱声.但是,前提是有事.如果你成天让我轮询,我就让你闭嘴.

No comments: