LoginSignup
42
41

More than 5 years have passed since last update.

Subversion リポジトリのURLを変更する

Posted at

参考サイト:Subversion でリポジトリの場所が変わったら
参考サイト:svn_switch
参考サイト:Subversion_FAQ

概要

サーバが老朽化したとか、あっちのサーバに統合するとかで、
リポジトリのURLが変わるのはよくあること。
ローカルの作業ディレクトリを一旦亡き者にして、再度チェックアウトしてもいいのだけど、
SVNで管理してたのは、ソースだけだったので実行モジュールとか消えてしまっても本当にいいか不安がある。

作業ディレクトリがこっそり持っているリポジトリのURLだけを変更できればいいのならば、もっとスマートにやりたい。

コマンド

svnコマンド
$ svn switch --relocate <古いリポジトリ> <新しいリポジトリ>

これで変更が可能なんだが、、、、、
実際にやってみると

svn実行結果
$ svn switch --relocate svn://old.com/trunk svn://new.jp/trunk
svn: PROPFIND リクエスト (相手: '/trunk') が失敗しました
svn: PROPFIND (URL: '/trunk'): 403 Forbidden (http://new.jp)

エラーがでてしまった(/_;)
いろいろ情報を探していたら、どうやらsvnのキャッシュに以前にアクセスした
ユーザID等が残っていて、更新対象の作業ディレクトリのユーザID等がキャッシュと
違ったために認証に失敗していたらしい。

というわけで、ユーザID等を指定すれば、うまくいくはず。

ユーザID、パスワード付きswitchコマンド
$ svn switch --relocate --username <ユーザID> --password <パスワード> svn://old.com/trunk svn://new.jp/trunk

で、解決できればよかったのだけど、
自分は変更前のユーザID、パスワードを知らないのでこの方法が使えなかった。
それで、どうしたかというとキャッシュを覗いて無理やり書き換えて対応した。

キャッシュの場所:~/.subversion/auth/svn.simple/<英数字の羅列>

認証情報をそーっと覗いてみる
$ cat ~/.subversion/auth/svn.simple/<英数字の羅列>
※英数字の羅列のファイルは一つづつ中身を確認してください

K 8
passtype
V 6
simple
K 8
password
V 7
old_pass
K 15
svn:realmstring
V 41
<http://old.com:80> Subversion Repository
K 8
username
V 7
old_user
END

これをよくみるとsvn:realmstringの後にリポジトリの配置先があって、同じようにユーザIDとパスワードもある。
ここから古いリポジトリのユーザIDとパスワードを新しいリポジトリのキャッシュに手で書き換えてsvn switch
OKこれでできた。

。。。。ってセキュリティ的にこれでいいのか?と思ってたらやっぱり同じ考えの人がいた。しかも6年前に。
簡単に復号できても平文よりマシ

パスワードを完全に暗号化するのは無理でも、難読化するパッチはおそらくコレ
http://svn.haxx.se/dev/archive-2006-10/0508.shtml

・・・ソースからコンパイルしなおす必要があるのですネ。
・・・6年前のパッチだから、今のバージョンでもそのままパッチが当てられるのか検討する必要があるのですネ。

42
41
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
42
41