こしごぇ(B)

旧:http://d.hatena.ne.jp/koshigoeb/

会社でSubversionからGitに移行できるか考えた結果git-svnに落ち着きそう

現在、勤め先の会社ではSubversionを採用しています。開発者もデザイナもディレクタも、みんな仲良くSubversionを使ってます。

昨年から開発が始まった某サービスをheroku上で運用しているのですが、その都合でGitリポジトリを使う必要がありました。当初、自分がGit慣れしていなかったこともあり、関係者の学習コストが最小となるよう、公式(中央)リポジトリではSubversionを使うことにしました。その上で、自分(開発者)用にgit-svnを使ってGitリポジトリを作ったわけです。

そうして仕事で1年以上Gitを(一人で)使い続けた結果、Gitに乗り換えたら良いこと結構あるなということを実感したわけです。

  • git add -pでhunk単位でステージ出来る(commit -pも同様)
  • git stash save/popで作業の切り替えが簡単
  • git commit --ammendでコミット漏れ解消(ログ修正も可)
  • トピックブランチを使う習慣(ブランチ作成まじはやい。ぱねぇ。)
  • ローカルでコミットするから応答が早い
  • git bisectで二分探索(使ったことないけどねっ)

一人で使っていたし、豊富な機能を使いこなせてもいないので挙げられるのはこの程度ですが、これだけでもSubversionから乗り換える理由にはなる気がします。

さて、メリットしかないなら移行すれば良いわけですが、「会社のSubversionリポジトリをGitに移行する」ことを考えると、話はそう簡単ではありません。おそらく、Gitに移行できない組織の多くが抱える課題だとは思います(知りませんけどねっ)。「非技術者に使ってもらうにはどうしたら良いのか。」という課題の解決策が思いつかないのです。

まず、先に挙げたメリットは非技術者にとってもメリットであるか自信がありません。そもそも、ブランチを使いこなせている(使っている)のかという話ですし、コミット単位を意識するのかという話もあります。重要なのは版管理できているということだと思うわけです。Subversionでおなかいっぱいだと思うのです(年月日ファイル名じゃないだけでも賞賛されるべきとも思うのです)。全体としてメリットが大きいという判断ができない限りは、エゴでしかないと思うのです。

百歩譲って、分散バージョン管理システムを使うメリットが大きいとしましょう。そうすると、何を使うのという話になります。はい。そうです。TortoiseSVNの代わりに何を使うの?という話です。弊社では技術者以外はみんな仲良くWindowsユーザです。ああ、技術者についてはあふれんばかりのスキル()で事故自己解決してくれます。当然です(キリッ。

そんなこんなで、前置きを長々と書いてきましたが、結局のところ「はたしてTortoiseGitは実用的なのか?」ということを(中途半端に)確認しただけなのです。

  • TortoiseSVNを踏襲しているため使い勝手は大きく変わらない
    • もちろん、ステージ→コミット→プッシュという風にフローは大きく変わる(一度にpushまでやれるのかな?)
  • 日本語化パッチはメンテナンスされてない模様(1.3で止まってた)
  • 日本語のファイル名(パス)を扱えない
    • Git for WindowsのUTF-8ファイル名対応は見つかったけど、TortoiseGitとの組み合わせでWinXPで上手くいかなかった
  • コミットログに日本語は使えた(リモートリポジトリとのやりとり(push/pull)はしてないのでそこは未確認)

フローについては言葉巧みに騙してしまえば良いんですけど、「日本語パスを扱えない」という欠点はたぶん受け入れてもらいにくいんじゃないかと思ってます。確認してないけど。「ファイル(フォルダ)名に日本語なんて使わないよねぇ」なんて言う一般人はいません。ええ。いませんとも。つまり、日本語対応的な面で上手くやれている現状から悪化するということになるので、それを我慢してまで使わせるのは気が引けるのです。

さて、長々と書いてしまいまとまりませんし、まとめる気もなくなって来ましたが、要するに「Gitを使いたい人がgit-svn使ってGitリポジトリ作ったらいいんじゃね?」ということに落ち着くわけです。

というわけでまとめ。

  • git-svn(git svn rebase/dcommit)に対応したフロントエンド知りませんか?
    • 今はmagit.elを利用してます
  • TortoiseGitって今後に期待して良いんでしょうか?特に日本語対応。
    • 他に選択肢あるんでしょうか?TortoiseSVNとは別のインターフェースでも上手くやれるかな?
  • 中央(共有)リポジトリとアクセス権限などを手軽に管理するツールのおすすめある?
    • gitosisには良いイメージがない(面倒くさいだけな印象)。適当なGithubクローンを探したらよいのかな?Github使えばよいのかな?