Mercurial の使い方
Menu Menu
■ 課題毎に repository を作って下さい
ソースは、shongane 上の Mercurial Repository を使います。
ssh://yomitan.ie.u-ryukyu.ac.jp:/home/hg/y10/e105708/os/1.1
などのように、課題毎の repository にすること。repository は僕が読み出せる Permission に設定してください。上記の hg 用の repository 名をメールに含めること。
Web からも見れるので、注意して記述してください。
http://ie.u-ryukyu.ac.jp/hg/
から見えていればだいじょうぶ。
■ インストール
http://mercurial.berkwood.com/上にパッケージがあります。詳しい使い方はこちら↓http://www.selenic.com/mercurial/wiki/index.cgi/JapaneseTutorial
Mac OS X は EasyPackage で
sudo epkg sync
sudo epkg install mercurial
Linux は yum install hg ぐらいで。
■ カスタマイズ
~/.hgrc に
[extensions]
hgext.convert=
[ui]
username = Shinji KONO <kono@ie.u-ryukyu.ac.jp>
ssh = ssh -C
これぐらいをいれておきます。(もちろん、名前は自分の名前で)
.hgignore に
syntax: regexp
/\.
git
DS_Store
xcuserdata
^build/
.*\.mode1v3$
.*\.pbxuser$
.*\.xcworkspace$
これぐらいをいれておきます。(Xcode4 用)
■0 課題のファイルを取って来る
既に課題のrepositoryがある場合は、そこから取って来ます。Webからwget? Control click でも良いけど、
scp -r yomitan.ie.u-ryukyu.ac.jp:~kono/public_html/os/os01/exぐらいが簡単かも。
■1 レポジトリの作成
レポジトリにしたいフォルダ内で
% hg init
とするとそのフォルダはレポジトリになります。(fireflyに入ってとってきたいフォルダにhg initしてください)
■2 レポジトリのコピー(ローカルレポジトリ)
% hg clone "コピーしたいレポジトリ名"
で送り込みます。
ex.
% hg clone ssh://e085705@yomitan.ie.u-ryukyu.ac.jp//home/hg/y08/....
yomitan に上げるときには、
ex.
% hg clone testMercurial ssh://e085705@yomitan.ie.u-ryukyu.ac.jp//home/hg/y08/e085705/testMercurial
hint
このURLを.zshrcで変数に入れておくと便利
■3 レポジトリに追加
% hg add "追加したいファイル"
hg add ファイル名を省略すると追加できるファイルを全部追加します。
■4 コミット
% hg commit
or
% hg commit -m 'コメント'
このコマンドでチェンジセット(他レポジトリとの変更情報)が作成されます。(ローカルレポジトリの情報を更新するだけなのでfireflyのデータは変わりません)
■5 他のレポジトリを変更(push)
% hg push "送りたい場所"
指定した場所に自分がコミットしたチェンジセットを送りつけます。
push したら、
.hg/hgrc
に、
[paths]
default = ssh://e085705@yomitan.ie.u-ryukyu.ac.jp//home/hg/y08/e085705/testMercurial
を書き込みます。
■6 他のレポジトリの変更情報を取得
% hg pull "引っ張ってくる場所"
他のレポジトリのチェンジセットを取得します。
% hg update
チェンジセットの内容を反映し、更新します。
■7 Eclipse での使い方
Help -> MarketPlace
hg を選択
新規プロジェクトを Mercurial で管理する
プロジェクトを選択して、control click
-> Share Project -> MercurialEclipse
ここで、repository を上記の方法でサーバに上げます。
ex.
% hg clone testMercurial ssh://e085705@yomitan.ie.u-ryukyu.ac.jp//home/hg/y08/e085705/testMercurial
それを、以下のように読み込みます。
File -> New -> Other
Mercurial
■8 Merge の仕方
hg heads
で、複数のhead があるかどうかを確認。merge したい方(だいたい tip じゃない方でしょう) に
hg update -C version-number
で移行します。
まず、自分の変更を local に commite しておくこと。
hg merge
します。それで解決できれば、
hg commit
hg push
できなければ、
hg resolve -a
で、解決できなかったファイルを見ます。
それを手動で編集して解決したら、
hg resolve -m file-name
で、解決したと hg に教えます。hg resolve -a を全部解決できたら、
hg commit
これで、head が一つになれば、merge 終了です。
hg push
で、repository に上げます。
■9 tag
とっておきたい版は、 tag づけします。
hg tag tag-name-01
とか。
■10 大文字小文字の混在、日本語ファイル名
使わないのが一番。
■11 Xcode4 で使う時には
.hgignore に
syntax: regexp
/\.
DS_Store
^build/
.*\.mode1v3$
.*\.pbxuser$
と書くと良いようです。