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になります。これはどのエラーに対応しますか?このドキュメントを見つけることができませんでした。

「catsomefile」などの単純な呼び出しが正常に出力されます。実際、「svninfopath-to-a-working-copy」の呼び出しは成功しています。ただし、柔軟性のために、おそらくリモートリポジトリを扱いたいと思います。

何か提案はありますか?

編集:終了コードは0から255の範囲にある必要があります。これは明らかにそうではありません。これは私に何を伝えますか?

Edit2:テストケースとして、目的のSVNコマンドを実行してその戻り値を出力するbashスクリプトを作成しました。予期されたSVNの動作は発生せず、スクリプトはSVNの終了値として「1」を出力しました。これはブラウザ側に表示されていました。

4

1 に答える 1

2

推測:おそらくsvn catURLで、svnがユーザー名/パスワードの入力を求めているのでしょうか?

bashスクリプトを作成したときに、エラーメッセージをキャッチするためにstderrをstdoutにリダイレクトしましたか?

于 2009-12-18T07:11:39.093 に答える