【個人的メモ】SVNとかGitとかMercurialとか…

お久しぶりです… いよいよ12月です。 今年も後1ヶ月切りました。
環境の変化があって、エントリが中々書けなかったり、家でプログラム全然書かなくなったり…してしまっていましたが、今日を機会にまた前の調子よりもっと良くしていこうと意気込みつつ…
以下、軽く調べたメモです。


研究室で使っているのはSVN、最近よく聞くのはGitHub、お世話になっている先ではMercurial…と何が何だか分からなくなってきたりしたので、この際に調べてみました。
間違っている点、その他追記すべき点などかなりあるとおもうため…
ご指摘よろしくお願いいたします…。

分散型/集中型バージョン管理システム

そもそもは、分散型・集中型バージョン管理システムとしてそれぞれ違うようです。
http://www.atmarkit.co.jp/fjava/rensai4/devtool03/devtool03_1.html
のサイトで図があるため、分かりやすかったのですが。
集中型:中央リポジトリをサーバーに上げて、そこへ変更を更新したり、コミットしたり

 (中央リポジトリ)
  ↓     ↓
開発者    開発者

分散型:中央リポジトリの他に、ローカルでも持っていて、ローカルにコミットしたあとに、中央へプッシュして変更を保存する。

 (中央リポジトリ)リポジトリ管理者
  ↓       ↓
(ローカル   (ローカル
リポジトリ)    リポジトリ)
開発者      開発者

図を文字で表すとこのようになるはずで、大体このようなイメージを掴みました…。

GitとかSVNとかは結局なんなのか?

先に集中型・分散型バージョン管理システムを挙げましたが
集中型バージョン管理システムSVN
分散型バージョン管理システム→Git、Mercurial、Bazaar
というように違います。

具体的な違い

SVNだと、中央リポジトリから取ってきて→変更部分を中央リポジトリへと直接コミットしていました。分散型の場合、commitする先は自分のローカルリポジトリで、その後中央リポジトリへpushする必要があります。
つまり、特に分散型バージョン管理システムの場合、ネットワークが必要なのは、pushする時だけという事になります。

じゃあGitHubとかは?

 git を用いたプロジェクトのホスティングサービス

http://womo.nconc.net/2010/03/04/github
GitHubを使うことで、gitリポジトリの作成及び公開ができます。
公開すると、forkすることが可能になります。
 fork…調べてもいまいちだったのですが、他の人のリポジトリを自分のところにコピーして(変更する/改良する)という事でいいのでしょうか…。
(http://help.github.com/forking/)

他にも…

Mercurial→bitbucket(http://bitbucket.org/)
 http://www.matzmtok.com/blog/2008/08/mercurial のサイトにいくつか挙げられていたりします。

結局MercurialとかGitとかどう違うの?

SVNかGitかといってしまうと、そもそもの管理方式が違うので…
とりあえず、同じ管理方式の中でも色々ある中でどう違うの?
というお話です。

こちらから引用させて頂くと以下です!http://brass.to/blog/bpstudy_11_mercurial.html

-Mercurial
--Pythonで出来ていていじりやすい。機能拡張も楽
--TortoiseHgというWindowsクライアントがある(でも微妙)
--Java系、Python系のプロジェクトでよく使われている
-Git
--リーナスが作った
--SVNとの連携がしっかりしてて移行が楽
--GitHubがすげぇ
--速い
--Linux、Rails界隈でよく使われている
--日本語リソースがしっかりしてる
-どっち使ったらいいの?
--好きな方使え。

ここではこのようなご意見が‥http://sheephead.homelinux.org/2009/07/21/1431/

-gitを使ってはいけない人
--環境がwinか、Linuxとかwinとか混在している人。win環境で運用するには、かなりいろいろと障害がありそう。
--ネットワークにいろいろ制限がある人。少なくともsshが問題なく使えないと、いろいろとめんどくさそう。
--CUIに抵抗がある人。git、かわいいよgitなんて言ってる人にそんな人いないと思いますが、Tortoisehogehogeとかにお世話になってる人が使い出すと膨大なオプションとかを使うには結局コマンド手打ちしないといけないので、面倒くさくなりそう。
--手数が多くなってもいいので、覚えるコマンドは少ない方がいい人。gitはいろいろと便利なコマンドがあるんだけど、あまりにいろいろあって覚えるのが結構大変。

こちらではwindowsサポート系のお話が…http://devml.blogspot.com/2010/02/gitmercurialdvcs.html

比較の表が有りました。
http://thingsilearned.com/2010/01/07/github-and-bitbucket/
大きな違いは、プライベートリポジトリがbitbucketでは1つ持てるという事のようです。
これはありがたいです…。

  • 追記

ご指摘ありがとうございます!><

bitbucketは、無料で 公開・プライベートリポジトリを無制限で使うことができます。

http://bitbucket.org/plans/
とのことです!

結局

これがいい!とは一概には言えなさそうです…。
流れに乗って、一度gitHubがちゃんと使える程度にはなっておいたほうが良さそうです。
ただ、個人的な開発で、後悔したくない場合… gitHubまでは使わず、gitHubの有料サービスを利用している…という事なのでしょうか???
考えているだけではしょうがないので、とにかく使ってみたほうが良さそうです…
gitHubのアカウント程度は、前に取ったような…気がするので、またやってみます。

色々使ってみて、一番合うものを探すのも有りなのかなと思いました…。

個人的な要望として、学校のMacBookと持ち歩いているWindowsで開発がしたかったのです。上に挙げたように、「WindowsだとGitは…」と述べている方もいらっしゃったため、とりあえずは、お世話になっている先と同じである、Mercurial+bitbucketの設定だけはしました。
Windowsでの設定方法関連などをまた後日挙げます。

参考サイト

http://www.atmarkit.co.jp/fjava/rensai4/devtool03/devtool03_1.html



とりあえず、今日はこの程度にして、また少々修正を書けるかもしれません!><
知識と経験が足りない…