[nodejs]svn命令行中避免進入用戶交互出現卡住的情況

問題

在服務器後臺nodejs上使用svn導入變更記錄出現“Error: spawn ENOMEM”錯誤提示,查了下發現是“底層拋了錯誤,並且設置了errno爲ENOMEM,內存不夠用


現象

登錄到後臺系統,發現有很多svn進程駐留在了後臺,於是想着應該是異常情況後svn進程出現了駐留不退出的情況


過程

調試發現了兩種情況會出現駐留的情況,一種是用戶名使用了郵箱全寫,比如"[email protected]",這種情況下,會出現需要驗證領域的提示;另一種是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

探索測試奧義,交流測試技術,歡迎關注“搜狗測試”



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章