1. Top » 
  2. スポンサー広告 » 
  3. 【mercurial】【バージョン管理】mercurialの話(三度目)
  4. mercurial » 
  5. 【mercurial】【バージョン管理】mercurialの話(三度目)

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  • Genre:

【mercurial】【バージョン管理】mercurialの話(三度目)

一度目の話 【mercurial】【バージョン管理】mercurialの話(最初)
二度目の話 【mercurial】【バージョン管理】mercurialの話(二度目)



全開までで使ったコマンドはこのようなものです

・hg init 初期化
・hg add 管理対象への追加
・hg status 対象のファイルの状態を確認
・hg commit リビジョンを作る
・hg log リビジョンの情報を見る(オプション-r/-p/-vなど)


今はファイルなどをリビジョンとして追加していくことしかできません。
出来ればファイルを復元したり出力したりしたいところです。

まず、対象ファイル(今はtest.cでした)がどのリビジョンで変更されたのか。
いつcommitしたときに変更を加えられたのかを見ることが出来ます。
そのためのコマンドが hg annotate です。
引数としてファイル名を指定してあげます。

taki@false:~/program/test$ hg annotate test.c
0: #include <stdio.h>
0: int main(int argc, char** argv){
0: printf("test message\n");
1: printf("test message no 2\n");
0: return 0;
0: }


このようにその行の先頭に由来のリビジョンが表示されます。
再びtest.cを変更してcommitして、もう一度annotateをしてみると
また新しく由来のリビジョンが増えるはずです。

さて、次はリビジョンを元にして対象のファイルを遡ります。
つまりリビジョン1にいたとして、リビジョン0に戻るわけです。
リビジョン0をcommitした後に何かやらかしてしまったわけですね。
こういうときは hg update を使います。

まずはじめに hg parents を利用して
現在のリビジョンがいつ登録されたもので、番号は何かを確認します。

taki@false:~/program/test$ hg parents
changeset: 1:6b6bff58ecb8
tag: tip
user: taki@false
date: Sat Oct 24 09:04:48 2009 +0900
summary: Add printf and comment in English.

現在のリビジョンは1なのが分かる。

さて、リビジョン1からリビジョン0へ遡ります。

taki@false:~/program/test$ hg update 0
1 files updated, 0 files merged, 0 files removed, 0 files unresolved

このように0へupdataするということです、メッセージがでていますね。
さて、annotateを利用して実際に確認します。

taki@false:~/program/test$ hg annotate test.c
0: #include <stdio.h>
0: int main(int argc, char** argv){
0: printf("test message\n");
0: return 0;
0: }

このように管理対象のtest.cが全てリビジョン0由来のものに変わりました。
ところで、リビジョン情報を調べてみます。

taki@false:~/program/test$ hg log
changeset: 1:6b6bff58ecb8
tag: tip
user: taki@false
date: Sat Oct 24 09:04:48 2009 +0900
summary: Add printf and comment in English.

changeset: 0:ec4b7d568ed4
user: taki@false
date: Sat Oct 24 09:02:37 2009 +0900
summary: ブログの記事のためのレポジトリに

taki@false:~/program/test$ hg parents
changeset: 0:ec4b7d568ed4
user: taki@false
date: Sat Oct 24 09:02:37 2009 +0900
summary: ブログの記事のためのレポジトリに

なるほど。
現在のリビジョンが0へ移っただけで、リビジョン1の情報はちゃんと残っています。
さて、再びupdateでリビジョン1へ戻ります。

taki@false:~/program/test$ hg update 1
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
taki@false:~/program/test$ hg annotate test.c
0: #include <stdio.h>
0: int main(int argc, char** argv){
0: printf("test message\n");
1: printf("test message no 2\n");
0: return 0;
0: }

このように戻りました。
これで今回はだいぶmercurialを使えるようになりました。
具体的には

・ファイルのどの部分がどのリビジョン由来かどうかを調べる
・ディレクトリ毎、別のリビジョンへと復活させる、もういちど戻す


このような感じです。
それではまた次回、書くもしれません。
関連記事
スポンサーサイト

Comment

コメントフォーム
このエントリへコメントを書く
(任意)
(任意)
(任意)
(必須) HTMLタグは使用できません
(任意) ID生成と編集に使用します
(任意) 非公開コメントにする

Page Top

Trackback

Trackback URI
http://parabola0.blog86.fc2.com/tb.php/587-077b0e46 この記事にトラックバックする(FC2ブログユーザーのみ)

Page Top

訪問者

お引っこし。 http://parabola.sblog.jp/

プロフィール

parabola0

Author:parabola0
Twitter用ですが…。
プロフィール

最新記事
最新コメント
最新トラックバック
カテゴリ
月別アーカイブ
検索フォーム
リンク

このブログをリンクに追加する

QRコード
QRコード
RSSリンクの表示
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。