suakx devlog

開発ブログのような

1 note &

gitとsvnの違い

間違いを恐れずにgitとsvnの違いを言えばgitは、ローカルファースト、svnはサーバーファーストの違いがあります。

Rails使いだと本体自体がgitで管理されているとかのせいでどうしてもgitになってしまうのですが、プログラミングではないところでもバージョン管理を普及させたいのでいろいろとテストしてみました。

gitの弱点としてあるのはコマンドライン基本、サーバーとの接続はsshが基本、utf8が基本の3点でしょうか。

svnにはtortoiseSVNという右クリックでチェックアウト、インポートと言うすばらしいソフトがあります。コマンドラインを覚えなくても一般の人に「教え込めば」使えるようになります。コマンドラインでは一般の人には教え込む前の大きな障壁があります。svnはwebDAVでザーバー管理が基本です。apacheの設定がうまくいけば管理は楽です。tortoiseSVNはWindowsでの日本語ファイル名も問題なく処理してくれます。

一方gitはコマンドラインが基本です。tortoiseGITもあるのはあるのですが、.svnファイルがそれぞれのフォルダに配置されているsvnと違い、トップにだけ.gitフォルダがあるgitはどうも動きがもっさりしています。gitはsshでのサーバーとのやり取りが基本です。どうもwebDAVとかは後回しにされている気がします。basic認証はうまくいくのですが、digest認証はうまくいかなかったり、basic認証でもhttpsなんかにすると設定に一山ありますし、capistrano+basic auth+httpsの組み合わせなどはうまくいってくれません。またwindowsからの日本語ファイル名もうまくいってくれません。sshで接続となるとOSにユーザー・グループ設定してやるのかとか少々めんどくさい事になります(ただしgitosis-adminというすばらしいものがあります)。

windowsからのgitは日本語ファイル名の事を考えるとcygwinのutf8版しかありません。tortoiseGITは動きがもっさりしてるしmsysgitはsshが結局putty頼みだし(tortioseSVNもそう)、cygwinのutf8版しかありません。macでもコマンドラインしかありません。

svnにはファイルロック機能があります。サーバーからファイルとってきてそれをいじるファイル管理をしているのであれば、それはいじってますよと意思表示が出来るのですからバイナリファイルの編集とかは便利です。gitにはそんなものないです。

で、弊社ではgitとsvnは併用しています。ただ、コーディングに関してはgit一本やりです。オレオレコミットというかスナップショットが簡単にとれますし、オレオレブランチも敷居がかなり下がります。svnなんぞには戻れません。一方で建築系のプロジェクトとかのためにsvnをのこしています。guiがあるのでgeek以外にも勧める事が出来るのとでそうしています。

  1. fakedelica reblogged this from devlog
  2. devlog posted this