如何用Node拿到svn用户信息

目前我们还是用svn进行版本的控制,有时候我们要对一个人的代码进行一些监控,而svn用户名则是最好的用户标记。
那么我们要如何拿到一些svn的信息呢?

假设大家是用mac作为开发机器。
下面,我提供一些代码。

/**
 * [通过svn得到用户信息]
 * @param  {[type]}   host [svn仓库的主机地址,例如192.168.1.1:80]
 * @param  {Function} cb   [拿到之后的回调]
 */
var getUserInfo = function(host,cb){
    var cmd = 'cd ~/.subversion/auth/svn.simple/ && ls | xargs cat $1'
    child_process.exec(cmd,function(err,data){
        var fragment = data.split(host)[1];
        fragment.replace(/username\n.+\n(\w+)\n/,function(){
            cb && cb(arguments[1]);
        })
    });
}

代码略简单,不过在node作为开发环境,svn作为版本控制中,这种方式屡试不爽。

如果是用windows作为开发机,那么用子进程的方式是实现不了了。不过大家可以通过一些fs的操作来替换。
后面如果有时间,我会把一些svn的工具开源,以解决一些代码构建的问题。

不过题外话,目前用svn的公司越来越少了,除了一些年代略久远、且很重要的代码还在svn以外,其他的都转向了git。

我们还是向git进军吧。