码迷,mamicode.com
首页 > Web开发 > 详细

[nodejs]svn命令行中避免进入用户交互出现卡住的情况

时间:2015-04-17 11:29:54      阅读:330      评论:0      收藏:0      [点我收藏+]

标签:svn   no-auth-cache   non-interactive   trust-server-cert   

问题

在服务器后台nodejs上使用svn导入变更记录出现“Error: spawn ENOMEM”错误提示,查了下发现是“底层抛了错误,并且设置了errno为ENOMEM,内存不够用


现象

登录到后台系统,发现有很多svn进程驻留在了后台,于是想着应该是异常情况后svn进程出现了驻留不退出的情况


过程

调试发现了两种情况会出现驻留的情况,一种是用户名使用了邮箱全写,比如"123@sogou.com",这种情况下,会出现需要验证领域的提示;另一种是svn用户名密码输入错误的情况


解决

但是就算用户写错了,后台也需要正常处理才可以,于是想是不是spawn-svn是否含有超时时间的设置,跟踪到底层,发现最终调用了child_process中的spawn方法,查了下child_process中有两个方法用于进程的调用:spawn和exec;两个的区别,可以在网上查找...

发现spawn的参数中没有timeout属性,而exec中有timeout属性,但是因为两种调用方式返回结果不同,就需要修改spawn-svn调用的easy-spawn底层库了,这个处理方式显然不好(1.修改第三方库,后续升级第三方库就麻烦了;2.工作量比较大)...


方案

于是想着在svn命令行上查找一下解决方法,使用svn help info查找帮助文档,查找到参数如下

技术分享

想了下,之前遇到一个问题:如果同台机器切换用户也会出现提示,当时采用了修改配置文件的方式,第一个参数应该就可以把这个问题解决掉...

于是添加上这三个参数后,问题解决了···

svn.getInfo([url, ‘--no-auth-cache‘, ‘--non-interactive‘, ‘--trust-server-cert‘], function(err, info){

转载请注明:http://blog.csdn.net/sogouauto

探索测试奥义,交流测试技术,欢迎关注“搜狗测试”



[nodejs]svn命令行中避免进入用户交互出现卡住的情况

标签:svn   no-auth-cache   non-interactive   trust-server-cert   

原文地址:http://blog.csdn.net/sogouauto/article/details/45093029

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!