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)に出力します。
なぜこれが失敗しているのか誰かが知っていますか?