読者です 読者をやめる 読者になる 読者になる

積極的にメモっていく姿勢

題名詐欺。更新頻度の低さが売り。

Linuxとかの勉強 #2.0

Linuxとかの勉強 #1.1 - 積極的にメモっていく姿勢

これの続きです。

今回の目標は、

Haskellを勉強するために書いたソースを
Mercurialを使って管理してみよう

ということに。

まずは、Mercurialの設定から行っていきます。

1. .hgrcを書く

まずは、自分のホームディレクトリに、.hgrcを書いて置いておきます。
中身はこんな感じに。(先輩の.hgrcまるうつし)

[ui]
username = tomio(tcent)<tomio2480@gmail.com>
editor = /usr/local/bin/vim
merge = /usr/local/bin/vimdiff

[extensions]
graphlog =
color =
pager =

[pager]
pager = LESS='-FRSX' less

[web]
cacerts = /etc/pki/tls/certs/ca-bundle.crt
[ui]

username = tomio(tcent)
ローカルリポジトリにコミットしたときに、コミットしたものの名前として利用されます。これを指定しないと、アカウント名とホスト名を名前として利用されるようです。

editor = /usr/local/bin/vim
コミット時に使用するエディタの指定をします。
毎度のとおり、vimを使用することとします。

merge = /usr/local/bin/vimdiff
マージ時に使用するエディタの指定をします。
vimdiffはvimをdiffモードで使用する、ということのようです。

因みに、マージという言葉に馴染みがなかったので、若干調べました。
凡そ、統合するという意味のようです。

複数人が pull した成果を取得し、自分が pull しようとしている成果物と見比べ、再編集し統合することをマージという。という解釈をしました。正しいかどうかは、実際に使っていくうちにわかるのでしょうか。

[extentions]

ここでは、Mercurialに機能を追加するエクステンションについての記述をします。書いてある意味は、「graphlog」「color」「pager」の3つを使用するということです。

JapaneseUsingExtensions - Mercurial

上記のサイトにエクステンションについて細かく記載されていました。今回使用するエクステンションは、すべてmercurialとともに配布されており、mercurialをインストールした時点で使用可能になるもののようです。

graphlog
コミットの履歴をアスキーアートと共に表示してくれる機能です。

使用する際は、

hg glog

と打ちこんでやるようです。

color
status, diff などをカラー表示してくれる機能です。

pager
テキストを表示する機能です。俗に言うページャです。

ページャも馴染みがなかったので、調べましたが、lessコマンドがそれに相当するようです。これはすんなりわかりました。

これを設定しないと、標準出力にコマンドの出力が直接流れ込むので、長くなれば長くなるほど履歴を追う事が難しくなるようです。

[pager]

pager = LESS='-FRSX' less
ページャの設定のようです。調べましたが、いまいちどういう意味なのかわからず。

得られた情報は、-FRSX と指定している人が多いことと、これでは折り返しをしてくれないということくらいです。

[web]

cacerts = /etc/pki/tls/certs/ca-bundle.crt
CA証明書をここで明示しておくと、httpsを使用したときにエラーが出ないとかなんとか。
今回使用しているOSはCentOSなので、以上の場所にCA証明書があるそうです。

2.リポジトリの作成

これから管理して行きたいソースを保存するディレクトリを作っておきます。Haskellの勉強をするので、 haskell_files という名前としました。

そのディレクトリ内で、

hg init

と打ちこんでやります。.hg ディレクトリが作成されたはずです。
之が確認できれば、リポジトリの作成は完了です。

3.管理するファイルと状態

状態の確認

ディレクトリ内にソースファイルなどがある状態で、

hg status

と打ちこんでやると、現在の状態を確認することができます。

現在の状態を表す記号については、

Mercurial(hg) のコマンド一覧 - A Day in Serenity @ kenjis

の真ん中あたりに書いてありました。

何もしていなければ、左側に ? が表示されていると思います。

管理の必要が無いファイルの処置

.hg/ と同じ場所で、.hgignore を書いて置いておきます。

内容は、

syntax:glob
*.hi
*.o

となっています。

.hgignore ファイルは管理の対象外とするファイル名のパターンが記述されています。
syntax:glob とすることで、シェルと同じようにワイルドカードを用いて、指定できるようにしているようです。

4.commitの手順

準備

以下のように打ちこんでやります。

hg add ファイル名

ここでも、* を使って指定することができます。

ここで、

hg status

とすると、指定したファイルの状態が A に変わっていることが確認できます。
A はコミットの準備が完了したということを示しています。

ここで、間違えてしまったときは、

hg forget ファイル名

とすることで、コミット予定のリストから除外することができます。

commitする

用意ができたら

hg commit

と打ちこんでやるだけです。

コマンドを実行すると、テキストエディタが起動して、コミットの履歴に残すコメントを打ち込むよう要求されます。ここで、あまり訳のわからないことを書くと、後に混乱を招くので、ある程度解りやすいコメントを残すこととします。

完了したようなら、hg status で確認すると A となっていたファイルが非表示になったことでしょう。

ここで

hg glog

とすると、コミットの履歴が表示されます。
これで、コミットは完了です。