おはこんばんにちは、ビショップです。
タイトル的に何を言ってるか分からないと思いますし、私も何を言ってるか分からないところがありますが、まず状況から整理します。
- Subversionでソースを管理している
- サーバから何から何までWindows環境になっているような環境
- svnリポジトリがWindowsファイル共有。apacheと連携してたりはしない
- リポジトリへのアクセスは”file://server/repo”みたいな感じ
地獄のような環境ですね。いや、Windows環境なら単純っちゃ単純な設定なんでしょうか。どうしてこうなっているのか、全然分からないんですが、今回はこの環境を以下のようにしていこうと試行錯誤したまとめです。
- テストでアプリケーションを稼働させるテスト環境サーバのOSをLinux(RHEL)にする
- ソースは既存Windowsファイル共有のリポジトリからチェックアウトしたりコミットしたりアップデートしたりできるようにする
誰も得しない記事ですが、張り切ってまとめました。
問題点
SVNのリポジトリがWindowsファイル共有ということで、普通にsvnコマンドでリポジトリへアクセスしようとしてもダメです。なにがしかのエラーになります。
[root@server /]# svn ls svn://serverIP/repo/ svn: E170013: Unable to connect to a repository at URL 'svn://serverIP/repo' svn: E000111: Can't connect to host 'serverIP': Connection refused [root@server /]# svn ls file:///serverIP/repo/ svn: E170013: Unable to connect to a repository at URL 'file:///serverIP/repo' svn: E180001: Unable to open repository 'file:///serverIP/repo'
アクセスできないので論外ですね。
解決方法
分かっていましたが、ファイル共有としてアクセスできなきゃダメなんです。そう、マウントしましょう。
前提として、Subveresion、cifs-utilsは導入済みです。
Windows側の準備
共有フォルダにアクセスできる専用ユーザをローカルに作ります。このユーザをLinuxでのマウント時に指定します。例として、ユーザ名は”svn_user”、パスワードは”svn_pw”とします。
とりあえずマウント用フォルダを作る
[root@server /] mkdir /svn
マウント
[root@server /] mount -t cifs -o user=svn_user,password=svn_pw //serverIP/repo /svn/
SVNで見れるか確認
[root@server /] svn ls file:///svn/repo test/ test2/
はい勝った。
好きなところでチェックアウトしたり、コミットしたり、アップデートしたりしてください。いや、誰もやらないか…
一応、Linuxでfile://を使う場合、スラッシュは3本(file:///)です。気をつけましょう。