バージョンコントロールをしようと思ってきた、今までの流れ
- Subversionを入れてみるが、個人で作っているため作りかけが多く、どんなときにコミットして良いのかわからず止める
- もう一度Subversionを使い始めてみるが、カフェとかでプログラミングをするときにコミットできないので止める。
- svkを使えば2.ができるらしいということを知り、svkを使い始めるが、(もう忘れてしまったが)何となくしっくりこなくて止める
- やっぱりバージョンコントロールはしないとまずいだろと思ってSubversionよりもしっくり来そうなMercurialを使おうと思い始める ← 今ここ
何となくSubversionがしっくりこないような気がする理由は、まず一つにレポジトリとかワーキングコピーとかの概念がイマイチよくわかっていないということだと思います。
まず最初に使っているファイルをコミットして、さらにアップデートしてとか、使い始めの時点で訳がわかりませんw。
あんたの頭が悪いだけだろうという突っ込みは置いておいて。
Mercurialの場合は、おっとその前に、インストールは得意のMacPortsでやりました。
一発完了です。
使い方は、ウノウラボ Unoh Labs: Mercurialでバージョン管理とかまちゅダイアリー – 個人で簡単に使える分散バージョン管理ツール Mercurialとかを参考にしました。
まずは、バージョンコントロールしたいフォルダまでcdでいっていただいて
hg init
これでバージョンコントロールを始める準備ができました。
この状態で
hg status
というコマンドを実行すると、ディレクトリ内のファイルの前に ? が付いた状況になります。
これはまだレポジトリには追加されていないためです。
なので、バージョン管理をしたいファイルをレポジトリに追加するんですが、その前に!!!
私はXcodeを使っているので、Xcodeのユーザー設定ファイルとかビルドファイルとかは管理させたくないので、それを追加しない設定をします(先ほどのhg statusコマンドを実行するとbuildディレクトリの中身まで?が付いていますよね)。
フォルダの位置はそのままで .hgignore というファイルを作成します。
vi .hgignore
.hgignore ファイルの中身はMercurialで無視するファイルや拡張子を指定できる.hgignoreファイルの書き方(symfonyプロジェクト対応版)を参考にしました。
syntax: regexp /\. DS_Store ^build/ .*\.mode1v3$ .*\.pbxuser$
この状態でもう一度、先ほどのhg statusコマンドを実行すると、今度はbuildディレクトリや.DS_Storeファイルなどがリストに表示されなくなります。
後はレポジトリに追加し、変更をコミットしましょう。
hg add * hg commit -m "initial import"