Size: 6845
Comment: #language ja
|
← Revision 9 as of 2009-05-19 19:31:05 ⇥
Size: 6867
Comment: converted to 1.6 markup
|
Deletions are marked like this. | Additions are marked like this. |
Line 5: | Line 5: |
JapaneseTutorialHistory から進んだ結果、私達は JapaneseTutorialClone で [:Clone:複製]した {{{my-hello}}} リポジトリの中に居ます。 | JapaneseTutorialHistory から進んだ結果、私達は JapaneseTutorialClone で [[Clone|複製]]した {{{my-hello}}} リポジトリの中に居ます。 |
Line 7: | Line 7: |
さまざまな変更を別の[:Repository:リポジトリ]に分離することは、["Mercurial"]で開発を実践する上で良い習慣です。これは関係のないコードが混ざるのを防ぎ、これにより個々の作業を個別にテストするのが楽になります。このモデルに従って始めてみましょう。 | さまざまな変更を別の[[Repository|リポジトリ]]に分離することは、[[Mercurial]]で開発を実践する上で良い習慣です。これは関係のないコードが混ざるのを防ぎ、これにより個々の作業を個別にテストするのが楽になります。このモデルに従って始めてみましょう。 |
Line 18: | Line 18: |
'''注意:''' 新しい [:Repository:リポジトリ] に説明的な名前を付けたことに注意してください。基本的には、[:Repository:リポジトリ] の目的がひと目でわかるような名前を付けます。["Mercurial"] では [:Repository:リポジトリ] の [:Clone:複製] は手軽に行えるので、すぐにほんの少ししか違わないリポジトリが大量に蓄積します。もしこれらのリポジトリに説明的な名前を付けなければ、すぐにそれらを識別できなくなるでしょう。 | '''注意:''' 新しい [[Repository|リポジトリ]] に説明的な名前を付けたことに注意してください。基本的には、[[Repository|リポジトリ]] の目的がひと目でわかるような名前を付けます。[[Mercurial]] では [[Repository|リポジトリ]] の [[Clone|複製]] は手軽に行えるので、すぐにほんの少ししか違わないリポジトリが大量に蓄積します。もしこれらのリポジトリに説明的な名前を付けなければ、すぐにそれらを識別できなくなるでしょう。 |
Line 20: | Line 20: |
それでは、新しいリポジトリに変更を加えてみましょう。[:WorkingDirectory:作業ディレクトリ] (これは全てのファイルがあるディレクトリの私達の呼び名です)に入って、お好みのエディタでソースコードを変更してみましょう。 | それでは、新しいリポジトリに変更を加えてみましょう。[[WorkingDirectory|作業ディレクトリ]] (これは全てのファイルがあるディレクトリの私達の呼び名です)に入って、お好みのエディタでソースコードを変更してみましょう。 |
Line 61: | Line 61: |
終わったら、エディタを終了してください。この編集で、[:ChangeSet:チェンジセット]を作成する準備ができました。 | 終わったら、エディタを終了してください。この編集で、[[ChangeSet|チェンジセット]]を作成する準備ができました。 |
Line 63: | Line 63: |
しかし、もし仮に私達が作業を中断して、どの変更が[:ChangeSet:チェンジセット]に含まれるか忘れてしまったらどうなるでしょう? このために、{{{status}}} コマンドを使います。 | しかし、もし仮に私達が作業を中断して、どの変更が[[ChangeSet|チェンジセット]]に含まれるか忘れてしまったらどうなるでしょう? このために、{{{status}}} コマンドを使います。 |
Line 70: | Line 70: |
簡単な出力ですが、接頭辞の {{{M}}} は {{{hello.c}}} が変更(modified)されて、次の[:ChangeSet:チェンジセット]に含まれることを教えてくれます。 | 簡単な出力ですが、接頭辞の {{{M}}} は {{{hello.c}}} が変更(modified)されて、次の[[ChangeSet|チェンジセット]]に含まれることを教えてくれます。 |
Line 94: | Line 94: |
[:ChangeSet:チェンジセット]を作成する行為は、[:Commit:コミット]すると呼ばれます。{{{commit}}} コマンドを使って [:Commit:コミット] を実行します。 | [[ChangeSet|チェンジセット]]を作成する行為は、[[Commit|コミット]]すると呼ばれます。{{{commit}}} コマンドを使って [[Commit|コミット]] を実行します。 |
Line 110: | Line 110: |
最初の行は空白で、続く行は [:ChangeSet:チェンジセット]に含まれるであろうファイルを特定します。 | 最初の行は空白で、続く行は [[ChangeSet|チェンジセット]]に含まれるであろうファイルを特定します。 |
Line 112: | Line 112: |
[:ChangeSet:チェンジセット]を[:Commit:コミット]するには、理由を書かなければなりません。これは通常[:ChangeSet:チェンジセット] コメントと呼ばれます。このようにタイプしてみましょう。 | [[ChangeSet|チェンジセット]]を[[Commit|コミット]]するには、理由を書かなければなりません。これは通常[[ChangeSet|チェンジセット]] コメントと呼ばれます。このようにタイプしてみましょう。 |
Line 128: | Line 128: |
何もありません! 私達の変更は [:ChangeSet:チェンジセット] に [:Commit:コミット]されたので、コミットが必要な変更されたファイルが存在しません。 ["Tip"] は今では作業ディレクトリの内容に一致しています。 | 何もありません! 私達の変更は [[ChangeSet|チェンジセット]] に [[Commit|コミット]]されたので、コミットが必要な変更されたファイルが存在しません。 [[Tip]] は今では作業ディレクトリの内容に一致しています。 |
Line 142: | Line 142: |
ありました! 私達が [:Commit:コミット]した [:ChangeSet:チェンジセット] です。 | ありました! 私達が [[Commit|コミット]]した [[ChangeSet|チェンジセット]] です。 |
Line 146: | Line 146: |
JapaneseTutorialClone で議論したように、新しい[:ChangeSet:チェンジセット]はこのリポジトリにのみ存在します。これは ["Mercurial"] の動作で極めて重要な部分です。 | JapaneseTutorialClone で議論したように、新しい[[ChangeSet|チェンジセット]]はこのリポジトリにのみ存在します。これは [[Mercurial]] の動作で極めて重要な部分です。 |
チュートリアル - 最初の変更を行う
JapaneseTutorialHistory から進んだ結果、私達は JapaneseTutorialClone で 複製した my-hello リポジトリの中に居ます。
さまざまな変更を別のリポジトリに分離することは、Mercurialで開発を実践する上で良い習慣です。これは関係のないコードが混ざるのを防ぎ、これにより個々の作業を個別にテストするのが楽になります。このモデルに従って始めてみましょう。
私達の他愛の無い目標は、"hello, world" プログラムの出力を別の行に変えることです。まず最初に、私達の小さなプロジェクトのために、my-hello を複製して my-hello-new-output と呼ばれる新しいリポジトリを作成します。
$ cd .. $ hg clone my-hello my-hello-new-output
この場合、clone コマンドは成功したら何も表示しません。
注意: 新しい リポジトリ に説明的な名前を付けたことに注意してください。基本的には、リポジトリ の目的がひと目でわかるような名前を付けます。Mercurial では リポジトリ の 複製 は手軽に行えるので、すぐにほんの少ししか違わないリポジトリが大量に蓄積します。もしこれらのリポジトリに説明的な名前を付けなければ、すぐにそれらを識別できなくなるでしょう。
それでは、新しいリポジトリに変更を加えてみましょう。作業ディレクトリ (これは全てのファイルがあるディレクトリの私達の呼び名です)に入って、お好みのエディタでソースコードを変更してみましょう。
$ cd my-hello-new-output $ vi hello.c
hello.c の中身は最初はこんな感じです:
/*
* hello.c
*
* Placed in the public domain by Bryan O'Sullivan
*
* This program is not covered by patents in the United States or other
* countries.
*/
#include <stdio.h>
int main(int argc, char **argv)
{
printf("hello, world!\n");
return 0;
}
main を編集して出力する行を二行に増やしてみましょう。
(...)
int main(int argc, char **argv)
{
printf("hello, world!\n");
printf("sure am glad I'm using Mercurial!\n");
return 0;
}
終わったら、エディタを終了してください。この編集で、チェンジセットを作成する準備ができました。
しかし、もし仮に私達が作業を中断して、どの変更がチェンジセットに含まれるか忘れてしまったらどうなるでしょう? このために、status コマンドを使います。
$ hg status M hello.c
簡単な出力ですが、接頭辞の M は hello.c が変更(modified)されて、次のチェンジセットに含まれることを教えてくれます。
diff コマンドを使うと、そのファイルに対して私達がした変更を実際に調べることができます。
$ hg diff diff -r 82e55d328c8c hello.c --- a/hello.c Fri Aug 26 01:21:28 2005 -0700 +++ b/hello.c Fri Sep 30 10:27:47 2005 +0800 @@ -12,5 +12,6 @@ int main(int argc, char **argv) { printf("hello, world!\n"); + printf("sure am glad I'm using Mercurial!\n"); return 0; }
変更を 破棄して最初からやり直したい場合は、revert コマンドを使ってファイルを変更されていない状態に戻すことができます。ただ、それが本当にしたいことなのか確認してください。
$ hg revert
チェンジセットを作成する行為は、コミットすると呼ばれます。commit コマンドを使って コミット を実行します。
$ hg commit
これはエディタを開いて、暗号のような行をいくつか表示します。
注意: デフォルトのエディタは vi です。これは EDITOR や HGEDITOR 環境変数を使って変更することができます。また、マニフェストのハッシュは、あなたがどのようにタイプしファイルを保存したかによって異なります。
(空行) HG: manifest hash 14595beb70bcfb74bf227437d70c38878421c944 HG: changed hello.c
最初の行は空白で、続く行は チェンジセットに含まれるであろうファイルを特定します。
チェンジセットをコミットするには、理由を書かなければなりません。これは通常チェンジセット コメントと呼ばれます。このようにタイプしてみましょう。
Express great joy at existence of Mercurial HG: manifest hash 14595beb70bcfb74bf227437d70c38878421c944 HG: changed hello.c
次に、保存してエディタを終了します。全て上手くいったなら、commit コマンドは終了して何も表示しません。<!> もしテキストを保存せずにエディタを終了したなら、commit は操作を中断し、コミットする前に気を変えることができます。
さて、この状態では status コマンドはどんなことを教えてくれるでしょうか?
$ hg status
何もありません! 私達の変更は チェンジセット に コミットされたので、コミットが必要な変更されたファイルが存在しません。 Tip は今では作業ディレクトリの内容に一致しています。
次の作業のために、更新履歴を調べることができます。
$ hg log changeset: 2:a58809af174d tag: tip user: mpm@selenic.com date: Fri Aug 26 01:26:28 2005 -0700 summary: Express great joy at existence of Mercurial (...)
注意: ユーザ名、日付、ChangeSetID はもちろん変わるでしょう。
JapaneseTutorialClone で議論したように、新しいチェンジセットはこのリポジトリにのみ存在します。これは Mercurial の動作で極めて重要な部分です。
変更を共有するには、JapaneseTutorialShareChange に進まなければなりません。