- クロスプラットフォームの分散型バージョン管理システム
- 全てのコマンドはhgから始まる
- mercuryが水銀を意味し、その元素記号がHgであることに由来する
# 研究室のmercurial web
# 使い方(コマンドライン編)
# インストール
HomeBrewを使用する。
brew install mercurial
でインストール出来る。
# hgwebの修正
brew upgrade mercurialでhgwebが動かなくなった時には、 /var/www/cgi-hg/index.cgi の以下の行を修正する。
|
|
一応修正スクリプトを生成しました
dateを絶対表示にするのは、
/usr/local/Cellar/mercurial/4.4.2/lib/python2.7/site-packages/mercurial/templates/static/mercurial.js
の function age をなおしてしまうのが良い。添付ファイルにあるので、それと入れ替える。
# リポジトリの初期化(init)
管理したいディレクトリ内で以下のコマンドを実行する。
|
|
# ファイルをリポジトリに追加(add,commit)
ファイルをリポジトリに追加する場合、以下のコマンドを実行する。
|
|
addで追加対象を設定し、commitでリポジトリに反映させる。
|
|
# リポジトリを複製(clone)
リポジトリを手元に複製し、作業をそこで行う。
|
|
# 履歴の閲覧(log)
複製したディレクトリ内で実行する。リポジトリ に起きたすべての出来事の要約を、最新のものから時間を遡って表示する。
|
|
# 変更の確認(diff)
変更の内容を確認する時は、以下のコマンドを実行する。
|
|
# ファイルの削除(remove)
ファイルを削除する時は、以下のコマンドを実行する。
|
|
このままでは削除されていないので、commitを行うとリポジトリに反映される。
# commit前の状態に戻す(revert)
誤って削除してしまったり、変更してしまった場合も、commit前なら変更内容を無かった事に出来る。
|
|
# タグを打つ(tag)
チェンジセットに独自の識別子を付ける。
|
|
# サーバーのリポジトリの変更内容を反映する。(pull)
変更内容の同期をとるため、サーバーから変更内容を取得する。
|
|
# サーバーに変更内容を反映する。(push)
手元にある変更したファイルをサーバー側に反映させる。
|
|
# hgignoreに書いたファイルを削除したい時
|
|
cf. https://stackoverflow.com/questions/19820020/hg-remove-all-files-listed-in-hgignore
# 基本的な使い方
# はじめ
hg commit したら、
hg push する前に、
hg incoming
してみて、他の人が commit してないかどうかを見る。
# 衝突無し
なかったら、そのまま hg push する。 そして、hg incoming して、自分のがtopだったら[終り]。
そうではなかったら、やっぱり[衝突あり] (pushの瞬間に割り込まれた…)
# 衝突あり
何かあったら、
|
|
する。すると、hg heads で、pull した version が出る。これを merge してやれば良い。hg pull で取れたのが、例えば、(localで) 255だったら、
|
|
とする。
で、conflict をvi/emacs で修正して、
|
|
で、[はじめ]に戻る。
# リポジトリからファイルを取り除く (convert)
間違えて登録してしまったファイルを最初からなかったかのように跡形もなく消す方法。(forget等と異なり過去のバージョンからも消される)
まず最初に、消したいファイルのファイルパスを適当なファイルに以下のようにして記述する。
|
|
次に、hgrcに以下の記述を加えてconvertを利用出来るようにする。
|
|
それから以下のようにコマンドを打ち、convertする。
|
|
convertが完了したら一度hg update
を行う必要がある。
updateしたらhg log等でリポジトリが正しく作成されているか確認し、find等を用いて指定したファイルが削除されているかも確認する。ファイルが消えてない場合大抵convert用のファイルの記述が正しいか、漏れがないか等を確認。
うまくいっていたら、元のリポジトリの.hg/hgrcを新しいリポジトリにコピーする。そして元のリポジトリを削除して新しい方をrenameすれば完了。
# convert作業例(.svnを間違えて入れちゃったので消す場合)
|
|
# メールでのpatch送信方法
メールで、最新のcommitをpatchとして送信する方法。
メールを送信したいlocalの /.hgrc を送信元の名前やメールの設定を追加編集する。
|
|
送信したいrepositoryの .hg/hgrc に、送信先のメールアドレスを設定する。
|
|
patchをメールで送信するコマンドは以下。
|
|
最初、abortが出る。
|
|
abortで出たfingerprintを、メールを送信したいlocalの /.hgrc に追加する。
|
|
Gmailを使用する際、
「安全性の低いアプリがアカウントにアクセスするのを許可する」
設定が必要となる場合がありますので、もしエラーが出たら設定してください。
https://support.google.com/accounts/answer/6010255
これらの設定で、patchをメールで送信することが出来るようになります。
# 使い方(Eclipse編)
# インストール
Eclipse3.3以上にて、
“Help”->“Software Updates"を選択し
“Add Site…“から以下のURLを入力する。
Name: Vectrace (Mercurial Eclipse plugin) URL: http://www.vectrace.com/eclipse-update/
その後、新しく現れた項目にチェックを入れて、“install…“でインストール完了。
# リポジトリの追加
“File” -> “New”-> “Project…“より、“Clone Repository using Mercurial"を選択し"Next”
URLにはコマンドラインと同じ様に
ssh://one@firefly.cr.ie.u-ryukyu.ac.jp/リポジトリ名 ローカル名
を入力し、ウィザードに従い必須項目を入力する。
成功すれば、左のウィンドウにプロジェクトが追加される。
# その他の操作
ファイルを右クリックした時に現れる"Team"内にMercurialのコマンドが表示される。
内容はコマンドラインと一緒なので説明は割愛する。
# リンク
- Mercurial の使い方のチュートリアル
http://www.selenic.com/mercurial/wiki/index.cgi/JapaneseTutorial - Mercurial Eclipse
http://www.vectrace.com/mercurialeclipse/
# おすすめ設定
- ホームディレクトリの.hgrcに書いておくとおすすめの設定
# xcodeのdiffを開かないようにしたい
|
|
- こう書いておくと
>>>>
=====
<<<<<
のgitっぽい感じでdiffが直接ファイルに書き出される- xcodeのdiffとかvim diffは慣れてないと使いづらいので…