/etc/auto_masterに以下の行を追加する
/mnt/one auto_firefly
/etc/auto_fireflyというファイルを作成する
one -fstype=afp afp://one:password@firefly.cr.ie.u-ryukyu.ac.jp/one
正しく動くかどうかをautomount -vcで調べる
boot時に自動的にmountするようになる
最後にhgを/mnt/oneへのシンボリックリンクにする
HomeBrew?を使用する。
brew install mercurial
でインストール出来る。
/usr/local/Cellar/mercurial/4.4.2/lib/python2.7/site-packages/mercurial/templates/static/mercurial.js の function age をなおしてしまうのが良い。添付ファイルにあるので、それと入れ替える。
管理したいディレクトリ内で以下のコマンドを実行する。
hg init
ファイルをリポジトリに追加する場合、以下のコマンドを実行する。
hg add ファイル名
addで追加対象を設定し、commitでリポジトリに反映させる。
hg commit
リポジトリを手元に複製し、作業をそこで行う。
hg clone ssh://one@firefly.cr.ie.u-ryukyu.ac.jp/リポジトリ名 ローカル名
複製したディレクトリ内で実行する。リポジトリ に起きたすべての出来事の要約を、最新のものから時間を遡って表示する。
hg log changeset: 46:98c2bbeaecb4 tag: tip user: convert-repo date: Tue Nov 18 02:12:32 2008 +0000 summary: update tags
変更の内容を確認する時は、以下のコマンドを実行する。
hg diff
ファイルを削除する時は、以下のコマンドを実行する。
hg remove ファイル名
このままでは削除されていないので、commitを行うとリポジトリに反映される。
誤って削除してしまったり、変更してしまった場合も、commit前なら変更内容を無かった事に出来る。
hg revert --all
チェンジセットに独自の識別子を付ける。
hg tag タグ名
変更内容の同期をとるため、サーバーから変更内容を取得する。
hg pull ssh://one@firefly.cr.ie.u-ryukyu.ac.jp/リポジトリ名
手元にある変更したファイルをサーバー側に反映させる。
hg push ssh://one@firefly.cr.ie.u-ryukyu.ac.jp/リポジトリ名
[はじめ]
hg commit したら、
hg push する前に、
hg incoming
してみて、他の人が commit してないかどうかを見る。
[衝突無し] なかったら、そのまま hg push する。 そして、hg incoming して、自分のがtopだったら[終り]。
そうではなかったら、やっぱり[衝突あり] (pushの瞬間に割り込まれた...)
[衝突あり] 何かあったら、
hg pull
する。すると、hg heads で、pull した version が出る。これを merge してやれば良い。hg pull で取れたのが、例えば、(localで) 255だったら、
hg merge -r 255
とする。
で、conflict をvi/emacs で修正して、
hg commit
で、[はじめ]に戻る。
間違えて登録してしまったファイルを最初からなかったかのように跡形もなく消す方法。(forget等と異なり過去のバージョンからも消される)
まず最初に、消したいファイルのファイルパスを適当なファイルに以下のようにして記述する。
exclude "<file path>"
(例 : convert.txt)
exclude "history/black.txt" exclude "history/black2.txt" exclude "aua" #ディレクトリ指定も可能。 include "aua/auaua.txt" #指定したディレクトリ内のあるファイルのみ保持するときはincludeで指定。
次に、hgrcに以下の記述を加えてconvertを利用出来るようにする。
[extensions] hgext.convert=
それから以下のようにコマンドを打ち、convertする。
hg convert --filemap <削除ファイルのパスを書いたファイル> <対象リポジトリ> <新しく作られるリポジトリのパス>
convertが完了したら一度hg updateを行う必要がある。
updateしたらhg log等でリポジトリが正しく作成されているか確認し、find等を用いて指定したファイルが削除されているかも確認する。ファイルが消えてない場合大抵convert用のファイルの記述が正しいか、漏れがないか等を確認。
うまくいっていたら、元のリポジトリの.hg/hgrcを新しいリポジトリにコピーする。そして元のリポジトリを削除して新しい方をrenameすれば完了。
find ./ -name .svn > convert.txt #.svnの場所を探してconvert.txtに出力。 sed -e "s/\.\/\//exclude \"/g" convert.txt #convert.txt内の .// を exclude " に、.svn を " に置換。 sed -e "s/\.svn/\"/g" convert.txt hg convert --filemap ./exclude.txt ../GCC_original ../GCC_original_rm_svn #convert(この前にhgrcでconvertを有効にしておく) cd ../GCC_original_rm_svn hg update # updateしないとファイルが構成されない。 hg log # 正しく作成されているかの確認。 find ./ -name .svn #ちゃんと消えているかの確認。 cp ../GCC_original/.hg/hgrc ./hg/hgrc #hgrcのコピー。 cd .. rm -r GCC_original #元の削除 mv GCC_original_rm_svn GCC_original #rename
メールで、最新のcommitをpatchとして送信する方法。
メールを送信したいlocalの ~/.hgrc を送信元の名前やメールの設定を追加編集する。
[email] method = smtp from = Name <mail-address> [smtp] host = smtp.gmail.com port = 587 tls = starttls username = mail-address
送信したいrepositoryの .hg/hgrc に、送信先のメールアドレスを設定する。
[email] to = mail-address
patchをメールで送信するコマンドは以下。
$ hg email .
最初、abortが出る。
abort: smtp.gmail.com certificate with fingerprint 9c:0a:cc:93:1d:e7:51:37:90:61:6b:a1:18:28:67:95:54:c5:69:a8 not verified (check hostfingerprints or web.cacerts config setting)
abortで出たfingerprintを、メールを送信したいlocalの ~/.hgrc に追加する。
[hostfingerprints] smtp.gmail.com = 9c:0a:cc:93:1d:e7:51:37:90:61:6b:a1:18:28:67:95:54:c5:69:a8
Gmailを使用する際、
「安全性の低いアプリがアカウントにアクセスするのを許可する」
設定が必要となる場合がありますので、もしエラーが出たら設定してください。
https://support.google.com/accounts/answer/6010255
これらの設定で、patchをメールで送信することが出来るようになります。
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のコマンドが表示される。
内容はコマンドラインと一緒なので説明は割愛する。