0

我想写一个在线 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 的退出值。这在浏览器端可见。

4

1 回答 1

2

只是一个猜测:也许svn cat在一个 URL 上导致 svn 想要提示输入用户名/密码?

创建 bash 脚本时,是否将 stderr 重定向到 stdout 以尝试捕获任何错误消息?

于 2009-12-18T07:11:39.093 回答