svn relocateで403
svn relocate https://old https://
としてrepoのドメインをold.example.comからexample.comに変えようとしたところ、forbiddenと表示され失敗した。バージョンは1.8.0*1。
svn: E175013: Unable to connect to a repository at URL 'https://example.com/path/to/repo' svn: E175013: Access to '/path/to/repo' forbidden
サーバログを見たところ、401で認証要求された後に、svn infoで出てくる最後に認証したユーザfooではなく、パスワードが保存されているユーザbarでアクセスを試みていた。
0.0.0.0 - - [00/XXX/0000:00:00:00 +0900] "OPTIONS /path/to/repo HTTP/1.1" 401 401 "-" "SVN/1.8.0 (x86-microsoft-windows) serf/1.2.1" 0.0.0.0 - bar [00/XXX/0000:00:00:00 +0900] "OPTIONS /path/to/repo HTTP/1.1" 403 213 "-" "SVN/1.8.0 (x86-microsoft-windows) serf/1.2.1"
barはこのrepoにアクセス権が無いため失敗していたようだ。
--username foo
を付けてrelocateしたところ、今度は成功した。
今回、fooアカウントのパスワードは保存していなかった。relocateではupdateのようにパスワードを聞かずに他の保存済みアカウント情報にfallbackしてしまうのかもしれない(本当のところは不明)。svn updateではこれまで問題なかったはずだし、このrepoでユーザを使い分けたことはないのでディレクトリ毎の権限の違いなどによるものではないはずだ。
*1:折角なので1.8.9に更新した。