【mercurial】【バージョン管理】mercurialの話(四度目)
- 2009 11/03 (Tue)
引き続きmercurialの基本的な使い方の話です(個人用)
今までの記事はこちら。
一度目の話 【mercurial】【バージョン管理】mercurialの話(最初)
二度目の話 【mercurial】【バージョン管理】mercurialの話(二度目)
三度目の話 【mercurial】【バージョン管理】mercurialの話(三度目)
さて、前回までで出来ていることをまとめます。
・ディレクトリの初期化、管理対象の追加、状態の確認(init/add/status)
・リビジョンの作成と確認(commit/log)
・由来の確認(annotate)
・リビジョンの変更(update)
今回は先に進む前に、少し便利な使い方を見ます。
まず初めに、過去のリビジョンを配布したいときです。いちいち
1.古いリビジョンにupdate
2.cpしてディレクトリを保存
3.再び元のリビジョンに戻す
という手順を踏むのは大変です。
これを解決してくれるコマンドは hg archive を利用します。
今、hg parentsで現在のリビジョンを、そして保存したいリビジョンをhg logで
それぞれ確認します。
ここでは現在のリビジョンが2、出力したいリビジョンが1とします。
hg archiveを利用して、リビジョン1を./work.(リビジョンの文字列)に保存します
このようにします。
カレントディレクトリにwork.%hというディレクトリを作ってリビジョン1を保存。
rはrevisionの頭文字で%hにはrevisionの番号1に相当する文字列がつきます。
実際に作成されているのか確認します。
このように古いソースが復元されました。
こうすることでリビジョン単位でファイルの受け渡しが可能になります。
せっかくなのでディレクトリをtgz形式で保存してみます。
現在のリビジョンをtgzで保存してみました。
中にはきっと入っていることでしょう。
hg archiveは対象ディレクトリ全てを扱ってくれますが
hg catを使うと特定のファイルのみを扱ってくれます。
リビジョン1のソースを取り出す。
リビジョン0のソースを取り出す。
このようにすると、各リビジョンの一部のファイルだけを
うまく利用することが出来ます。
次回はタグの話をするか、hg自体の話をするか。
今のところ検討中です。
今までの記事はこちら。
一度目の話 【mercurial】【バージョン管理】mercurialの話(最初)
二度目の話 【mercurial】【バージョン管理】mercurialの話(二度目)
三度目の話 【mercurial】【バージョン管理】mercurialの話(三度目)
さて、前回までで出来ていることをまとめます。
・ディレクトリの初期化、管理対象の追加、状態の確認(init/add/status)
・リビジョンの作成と確認(commit/log)
・由来の確認(annotate)
・リビジョンの変更(update)
今回は先に進む前に、少し便利な使い方を見ます。
まず初めに、過去のリビジョンを配布したいときです。いちいち
1.古いリビジョンにupdate
2.cpしてディレクトリを保存
3.再び元のリビジョンに戻す
という手順を踏むのは大変です。
これを解決してくれるコマンドは hg archive を利用します。
今、hg parentsで現在のリビジョンを、そして保存したいリビジョンをhg logで
それぞれ確認します。
ここでは現在のリビジョンが2、出力したいリビジョンが1とします。
hg archiveを利用して、リビジョン1を./work.(リビジョンの文字列)に保存します
taki@false:~/program/test$ hg archive -r1 ./work.%h
このようにします。
カレントディレクトリにwork.%hというディレクトリを作ってリビジョン1を保存。
rはrevisionの頭文字で%hにはrevisionの番号1に相当する文字列がつきます。
実際に作成されているのか確認します。
taki@false:~/program/test$ ls
test.c work.6b6bff58ecb8
taki@false:~/program/test$ cat work.6b6bff58ecb8/test.c
#include
int main(int argc, char** argv){
printf("test message\n");
printf("test message no 2\n");
return 0;
}
このように古いソースが復元されました。
こうすることでリビジョン単位でファイルの受け渡しが可能になります。
せっかくなのでディレクトリをtgz形式で保存してみます。
taki@false:~/program/test$ hg archive -t tgz -r2 ./work.%h.tgz
taki@false:~/program/test$ ls
test.c work.6b6bff58ecb8 work.f9a2ea1a3ee0.tgz
現在のリビジョンをtgzで保存してみました。
中にはきっと入っていることでしょう。
hg archiveは対象ディレクトリ全てを扱ってくれますが
hg catを使うと特定のファイルのみを扱ってくれます。
taki@false:~/program/test$ hg cat -r1 test.c
#include <stdio.h>
int main(int argc, char** argv){
printf("test message\n");
printf("test message no 2\n");
return 0;
}
リビジョン1のソースを取り出す。
taki@false:~/program/test$ hg cat -r0 test.c
#include <stdio.h>
int main(int argc, char** argv){
printf("test message\n");
return 0;
}
リビジョン0のソースを取り出す。
このようにすると、各リビジョンの一部のファイルだけを
うまく利用することが出来ます。
次回はタグの話をするか、hg自体の話をするか。
今のところ検討中です。
- No Tag
- posted 16:46 |
- Trackback(0) |
- Comment(0) |
- Page Top


