我想写一个在线SVN存储库浏览器。 我决定将它作为Apache模块实现,围绕命令行客户端(暂时)。 在我开始使用时,我有以下代码:
FILE *f;
f = popen("/usr/local/bin/svn cat http://myrepo/svn/shell.c", "r");
char buf[1025];
if (f) {
ap_rputs("open ok\n", r);
}
else {
ap_rputs("not open ok\n", r);
}
while (fgets(buf, 1024, f) != NULL) {
ap_rprintf(r,"%s<br />", buf );
}
ap_rprintf(r, "return: %d\n", pclose(f));
此命令失败,终止状态为256.这对应于什么错误?我一直无法找到这份文件。
成功打印出诸如“cat somefile”之类的简单调用。实际上,调用“svn info path-to-a-working-copy”是成功的。但是,我想处理可能的远程存储库以获得灵活性。
你有什么建议吗?
编辑: 退出代码应该在0-255范围内。这显然没有。这告诉我什么?
EDIT2: 作为测试用例,我创建了一个bash脚本,它将运行所需的SVN命令,然后打印其返回值。未遇到预期的SVN行为,脚本打印“1”作为SVN的退出值。这在浏览器端可见。
答案 0 :(得分:2)
只是一个猜测:URL上的svn cat
可能导致svn想要提示用户名/密码?
当您创建bash脚本时,是否将stderr重定向到stdout以尝试捕获任何错误消息?