0

我想svn ls <path>在尝试时运行命令,但出现错误说明

svn: '.' is not a working copy
svn: Can't open file '.svn/entries': No such file or directory

这是您尝试在没有路径且不受 SVN 版本控制的目录中运行命令时遇到的标准错误。但问题是,当我在执行命令之前 console.log 时,它特别说明了远程 SVN 存储库的完整、有效路径。

例如,svn ls https://svn.example.com/this/is/a/valid/repo

如果我将日志复制并粘贴到我自己的 bash 中,它会很好地列出目录。

这是我想要执行的代码

function svnls (path) {
    var cp = require('child_process'),
        command = 'svn ls ' + path;

    console.log(command);  // -> svn ls https://svn.example.com/this/is/a/valid/repo
    cp.exec(command, function (err, stdout, stderr) {
        console.log(stderr);
    });
}

或者,我尝试了更详细的生成 bash 实例的方法:

function svnls (path) {
    var bash = require('child_process').spawn('bash');

    bash.stdout.on('data', function (data) {
        var buff = new Buffer(data),
            result = buff.toString('utf8');

        console.log(result);
    }); 

    bash.stderr.on('data', function (data) {
        var buff = new Buffer(data),
            error = buff.toString('utf8');

        console.log(error);
    }); 

    bash.on('exit', function (code) {
        console.log(code);
    });

    bash.stdin.write('svn ls ' + path);
    bash.stdin.end();
}   

它向控制台输出相同的错误以及退出代码(1)。

有谁知道为什么会失败?

4

0 回答 0