キッカケは些細なことだった。昔作ったASP.NETアプリをちょこっと改修したかっただけなんだ。
1) 作業用PCに、Visual Studio Express 2013 for Webのインストール
ASP.NETアプリをコンパイルするとなると、Visual Studioが要る。
Visual Studioは割と頻繁に代替わりするから、古いアプリの互換性維持が心配だった。なにしろ動作環境が、mono 2.8.2 on CentOS 6.5 なのだ。.NETの版を上げるのは怖い。VS2003辺りのプロジェクトを最新に変換してみたところ、.NET 2.0を対象としたままで実装できるようだ。
ところで、gitに標準対応しているのに少し驚いた。「Azureでgit使え」ということらしい。これまでのVisual Studioでは、VSSなんて購入するわけもなく、AnkhSVNプラグインを導入してsubversionの1択だったが…。ならば、自宅サーバーにgitを導入して、コードを格納しようと考えた。これが面倒の始まりだった。
2) 自宅サーバに、gitを導入
yumでgitをインストールしてみたが、接続方法、というか認証方法をどうしようか、と。「gitプロトコル」だと認証かけられない、「SSHトンネル」だと一般公開できない、ということで、「https接続として、Redmineと認証統合」することにした。
先人のお言葉に従って、httpd.confを設定したところ、「RedmineGitSmartHttpなんてディレクティブは知らないよ」エラーとなった。Redmineでのsvn認証に使っていたRedmine.pmファイルが古かったようだ。Redmine-2.5内の同ファイルへのsymbric linkに差し替えた。
また、「CentOS 6の標準搭載git 1.7.1は、httpでのBasic認証でユーザー名とパスワードを聞いてこない問題がある」とのことで、git 1.7.12をローカルインストールしようとしたところ、版競合が大量に発生して導入できない。インストールされているsubversion 1.8.8が原因な気がする。
3) subversionのダウングレード
しょうがないので、インストールされていたsubversion 1.8.8を、CentOSのyumリポジトリにある1.6.11へダウングレードすることにした。yumで削除して入れ直す。
すると、「既存のsvnリポジトリのfstypeがサポートされてないよ」エラーとなった。そりゃそうか…。バックアップdumpから、各svnリポジトリを再構築するハメになった。これが面倒だった。ふぅ…。
おまけに、Redmine自体も1.8.8のsvnコマンドでcheck outしていたらしく、Rails再起動の度に、「svnクライアントを更新しないとダメよ」と言われるようになってしまった。こうなったら、Redmineも更新してしまえ!
4) Redmineのアップデート
Redmine 2.5.2をcheck outし直して、差し替えた。何の障害もなく。
ところが、svnリポジトリへ接続できないことに気がついた。2)の工程で、Redmine.pmファイルを差し替えた時に、自宅サーバー独自の設定「リポジトリ名は大文字と小文字を区別しない」「Redmineプロジェクトの公開/非公開に依らず、だれでもsvn読み取り可」等が消えてしまったようだ。Oh, no!
5) Redmineのプロジェクトidentifierに合うように、Subversionリポジトリ名を変更
結局、これやんないといけないわけね…。なんとか、svnの復旧完了。
6) Visual Studioからgit remote repositoryへpushしてみる。
おぉ!標準機能だけで、local repositoryだけじゃなくて、remoteへのpushまでできるのねぇ…。画面構成に慣れるまで多少混乱するが、通常用途にはCUIは不要。十分十分。 .gitIgnore や .gitAttribute が自動生成され、中身のお作法もなかなか良い。