我正在使用Java的svn
命令来获取有关工作副本的信息。
final Process exec = Runtime.getRuntime().exec(
new String[]{"svn","info","--xml","/path/to/wc"}
);
ByteStreams.copy(exec.getErrorStream(), System.err);
// ... more code to read output
这给出了错误输出
/path/to/wc
: (Not a versioned resource)
但是,如果我在终端窗口中运行相同的命令,我会得到我想要的输出。我还试图在终端中运行时排除环境:
env -i svn info --xml /path/to/wc
但输出仍然正确。为什么从Java运行时它的行为会有所不同?
答案 0 :(得分:1)
真正的/path/to/wc
在其末尾有一个换行符。如果我更熟悉SVN错误输出,我可以看到它:
/path/to/wc
: (Not a versioned resource)
请注意:
我通过用纯Java exec("readlink -m " + path)
替换早先的path.getCanonicalName()
来意外地发现了这一点。