目次



Mercurial とは?

Mercurial は Python で実装された分散型のバージョン管理システムです。EasyPackage のカテゴリ devel にてパッケージがインストールできます。また、学科の Web サーバ(shongane.ie.u-ryukyu.ac.jp)にもインストールされているので、リポジトリをサーバ上に置いて公開することも出来ます。

基本的な操作方法

基本的な操作は、公式ページのチュートリアルを見れば問題ないと思いますが、いくつかの主要なコマンドを簡単に説明します。

下準備

Mercurial を利用する際は、最低でも以下のような設定を Mercurial の設定ファイル($HOME/.hgrc)に記述しておきましょう。

 ~ % vim ~/.hgrc
[ui]
username = e065763

上記のユーザ名以外にも、さまざまな設定を行うことができます。詳しくは man ページをご覧ください。

~ % man hgrc


リポジトリの作成:hg init

リポジトリを作成するには、以下の二通りの方法があります。

% hg init my-repo
% hg init

上記の一行目のコマンドを実行すると my-repo という名前のフォルダが作成され、このフォルダがリポジトリとなります。また、二行目のようにコマンドを実行するとカレントディレクトリがリポジトリとなります。
リポジトリとなったフォルダには .hg というフォルダが存在します。このフォルダにリポジトリを管理する上で必要な情報が記されたファイルが保管されます。なので、この .hg フォルダを削除すれば、そのフォルダはリポジトリではなくなってしまいます。


リポジトリ内の状態を見る:hg status

以下のコマンドを実行することでリポジトリ内のファイルの状態を見ることが出来ます。

% hg status
A func.h
A main.c
? Makefile

上記の結果は、func.h, main.c というファイルがリポジトリに追加され、Makefile というファイルがフォルダ内に存在するがよくわからないこと意味している。


リポジトリにファイルを追加:hg add

フォルダ内に作成したファイルを、リポジトリに追加するには以下のようにコマンドを実行する.

% hg add Makefile
% hg status
A Makefile
A func.h
A main.c

上記のように、hg add の後にファイル名を指定することでリポジトリにファイルを追加できるが、ファイル名を何も指定しないとフォルダ内にあるすべてのファイルをまとめてリポジトリに登録することができる。


変更をコミット:hg commit

変更されたリポジトリをコミットするときは以下のコマンドを実行します。

% hg commit

すると、エディタが起動してコミットログを編集できるので編集します。エディタが起動するのが煩わしい場合は、以下のようにしてコミットログを編集することが出来ます。

% hg commit -m 'ここにコミットログを書くことができる'
% hg commit -l logmesg.txt

オプション -m で引数でログメッセージを指定するか、オプション -l でログメッセージが書かれたファイルを指定することが出来ます。


最後の変更を取り消す:hg rollback

以下のように、最後に行った commit, pull, import, unbundle を取り消すことができます。

% hg commit
% hg status
% hg rollback
rolling back last transaction
% hg status
A Makefile
A func.h
A main.c

上記の実行結果はリポジトリの変更をコミットした後、hg rollback を実行してコミットを取り消したときのようすです。hg status でコミットが取り消されたことが確認できます。


リポジトリをコピーする:hg clone

既存のリポジトリをまるごとコピーすることができます。

% hg clone http://www.selenic.com/repo/hello my-hello
% hg clone ~/Document/my-repo test-repo

上記の一つ目のコマンドは、http://www.selenic.com/repo/hello をカレントディレクトリに my-hello という名前でコピーします。また、hg clone は上記のように Web 上に公開されているリポジトリーだけでなく、ローカルのリポジトリもコピーすることが出来ます。


shongane でリポジトリを公開する

リポジトリを Web 上で公開する方法を紹介します。以下のアカウント名などを適宜、自分のものに置き換えて実行してください。
shongane の /net/home/hg 以下の領域にリポジトリを置くことができます。まずは、リポジトリを公開するのに必要な情報を以下のように編集しましょう。

% vim ./my-rep/.hg/hgrc
[web]
description = test repo.
contact = e065763@ie.u-ryukyu.ac.jp
#name = 私のリポジトリ
#allow_archive = bz2, gz, zip
#style = gitweb

上記のように、リポジトリ内の .hg フォルダに hgrc という設定ファイルを作成します。今回はリポジトリの説明(description)と連絡先(contact)について設定しています。上記の例ではコメントアウトしてますが、公開するリポジトリの名前(デフォルトはフォルダ名)と、リポジトリのアーカイブ配布に関する設定(allow_archive)、デザインについての設定も行えます。詳しくは man hgrc で確認して下さい。
次に、公開するリポジトリを shongane の自分の領域にコピーします。

 ~ % scp -r ./my-repo e065763@shongane.ie.u-ryukyu.ac.jp:/net/home/hg/y06/e065763/
Password:
00changelog.i                                        100%   57     0.1KB/s   00:00    
branch                                               100%    8     0.0KB/s   00:00    
dirstate                                             100%  111     0.1KB/s   00:00    
requires                                             100%   15     0.0KB/s   00:00    
00changelog.i                                        100%  163     0.2KB/s   00:00    
00manifest.i                                         100%  138     0.1KB/s   00:00    
_makefile.i                                          100%   64     0.1KB/s   00:00    
func.h.i                                             100%   64     0.1KB/s   00:00    
main.c.i                                             100%   64     0.1KB/s   00:00    
undo                                                 100%   81     0.1KB/s   00:00    
undo.branch                                          100%    7     0.0KB/s   00:00    
undo.dirstate                                        100%  111     0.1KB/s   00:00    
func.h                                               100%    0     0.0KB/s   00:00    
main.c                                               100%    0     0.0KB/s   00:00    
Makefile                                             100%    0     0.0KB/s   00:00    

これで、Web 上で公開できるようになったはずです。以下のようなアドレスを入力して確認してみます。

http://www.ie.u-ryukyu.ac.jp/hg/y06/e065763

以下のような画面が表示されたら成功です。

pic1.png


他のリポジトリを追加すると上のページにも自動で追加されて表示されます。ここで、my-repo をクリックすると以下のような画面が表示されると思います。

pic2.png


まだ、commit を一度しか行っていないので changelog の項目は一つだけです。ここで、ローカルのリポジトリに変更を加え、shongane 上のリポジトリにその変更を反映させてみましょう。まず、適当にローカルのリポジトリに変更を加えます。

~/my-repo % vim README
~/my-repo % hg add
adding README
~/my-repo % hg commit -m "add README"

ファイルを一つ作成し、リポジトリに変更を加えました。この変更の内容を shongane 上のリポジトリに反映させてみます。以下のコマンドを実行してみてください。

 ~/my-repo % hg push ssh://e065763@shongane.ie.u-ryukyu.ac.jp//net/home/hg/y06/e065763/my-repo/
Password:
pushing to ssh://e065763@shongane.ie.u-ryukyu.ac.jp//net/home/hg/y06/e065763/my-repo/
searching for changes
remote: adding changesets
remote: adding manifests
remote: adding file changes
remote: added 1 changesets with 1 changes to 1 files

上記のコマンドの形式は、

hg push ssh://ユーザー名@shongane.ie.u-ryukyu.ac.jp//net/home/hg/y0X/e0XXXXX/リポジトリ名/

です。これで shongane の /net/home/hg 以下に用意された各ユーザ領域のリポジトリに、ローカルの変更内容を反映することができます。Web ブラウザで確認すると、以下のようになっていると思います。

pic3.png

ローカルのリポジトリの変更を shongane 上に反映させるとき、上記のように長々とコマンドを入力するのは煩雑なので、リポジトリの設定ファイルに以下の設定を追加することを勧めます。

~/my-repo % vim .hg/hgrc
[paths]
default-push = ssh://e065763@shongane.ie.u-ryukyu.ac.jp//net/home/hg/y06/e065763/my-repo/

この設定を追加することで、次回から変更を反映させるときは

~/my-repo % hg push

だけで実行できます。


CVS のリポジトリを変換する

ここで紹介する方法を使えば、CVS のリポジトリを Mercurial のものに変換することができます。

下準備

shongane 上で公開している CVS リポジトリを Mercurial のものに変換する場合は cvsps をインストールする必要はありません。

cvsps のインストール(必要な場合のみ)

ローカルに CVSROOT を用意してバージョン管理を行っている人は cvsps を事前にインストールしてください。EasyPackage ではカテゴリ devel で cvsps を提供しています。

Mercurial の拡張機能を利用できるようにする

$HOME/.hgrc に以下の設定を追加して、Mercurial の拡張機能である convert コマンドが利用できるようにします。

% vim ~/.hgrc
[extensions]
hgext.convert=

shongane 上のリポジトリを変換するひとは、shongane にログインしてから上記の設定を追加してください。

変換するリポジトリを checkout する

shongane で projectA というリポジトリを公開している場合、以下のコマンドを実行してカレンとディレクトリに、変換するリポジトリを checkout します。

shongane ~/tmp/cvsps_test % cvs -d /net/home/cvs co y06/e065763/projectA

上記のコマンドは、以下のような形式になっています。

% cvs -d CVSROOTへのパス co CVSROOTからのリポジトリへのパス

これで、カレントディレクトリに変換したいリポジトリが落ちてきたと思います。これを変換します。

リポジトリを変換する

先ほど checkout した CVS のリポジトリを、以下のコマンドを実行して変換します。

% hg convert projectA /net/home/hg/y06/e065763/projectB

上記のコマンドが成功すると、projectA という CVS のリポジトリが projectB という Mercurial のリポジトリに変換できました。shongane 上の Mercurial のリポジトリを公開する領域に置かれたので Web ブラウザから変換されたリポジトリが確認できると思います。


  • shongane で公開された CVS のリポジトリ projectA

pic4.png


  • shongane で公開された Mercurial のリポジトリに変換された projectB

pic5.png

添付ファイル: filepic3.png 378件 [詳細] filepic2.png 388件 [詳細] filepic1.png 691件 [詳細] filepic5.png 664件 [詳細] filepic4.png 695件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2015-04-11 (土) 00:03:32 (1170d)