1

Subversion リポジトリをホストするサービスを実装しています。各リポジトリには、サービスのコンシューマーが使用するフロントエンド名と、サーバーのファイル システム上でリポジトリが実際に存在する場所であるバックエンド パスが必要です。名前からパスへのマッピングはデータベースに保存されます。リポジトリには ssh 経由でアクセスします。

たとえば、 の URL を持つリポジトリは、実際にはatsvn+ssh://server/my-repoのファイル システムに存在する可能性があります。server/srv/repos/some-random-string

Subversion クライアントが にアクセスするsvn+ssh://server/my-repoと、ssh 経由でリモート サーバー上でコマンドを実行するだけsvnserve --tunnelです。クライアントとサーバー上の svnserve プロセスは独自のプロトコルを使用して通信し、リポジトリの名前はプロトコルに埋め込まれています。この場合、リポジトリの名前はmy-repo. svnserve次にmy-repo、現在のディレクトリを探して提供します。

問題はmy-repoフロントエンド名がバックエンド パス(この場合は )と異なることです/srv/repos/some-random-string。現在のディレクトリの/srv/repos代わりに調べるのは、強制的に ssh を実行することで簡単に実行できますsvnserve --root=/srv/repos --tunnelが、へのマッピングmy-reposome-random-stringは、クライアントとサーバー間の通信で書き換えが必要なようです。

これが私の質問です: libsvn を使用して、これらの通信を解析し、適切な書き換えを行うという汚い作業を行うことは可能ですか? どこから始めるべきかについての指針はありますか?

4

0 に答える 0