#language ja == チュートリアル - 最初の変更を行う == JapaneseTutorialHistory から進んだ結果、私達は JapaneseTutorialClone で [[Clone|複製]]した {{{my-hello}}} リポジトリの中に居ます。 さまざまな変更を別の[[Repository|リポジトリ]]に分離することは、[[Mercurial]]で開発を実践する上で良い習慣です。これは関係のないコードが混ざるのを防ぎ、これにより個々の作業を個別にテストするのが楽になります。このモデルに従って始めてみましょう。 私達の他愛の無い目標は、"hello, world" プログラムの出力を別の行に変えることです。まず最初に、私達の小さなプロジェクトのために、{{{my-hello}}} を複製して {{{my-hello-new-output}}} と呼ばれる新しいリポジトリを作成します。 {{{ $ cd .. $ hg clone my-hello my-hello-new-output }}} この場合、clone コマンドは成功したら何も表示しません。 '''注意:''' 新しい [[Repository|リポジトリ]] に説明的な名前を付けたことに注意してください。基本的には、[[Repository|リポジトリ]] の目的がひと目でわかるような名前を付けます。[[Mercurial]] では [[Repository|リポジトリ]] の [[Clone|複製]] は手軽に行えるので、すぐにほんの少ししか違わないリポジトリが大量に蓄積します。もしこれらのリポジトリに説明的な名前を付けなければ、すぐにそれらを識別できなくなるでしょう。 それでは、新しいリポジトリに変更を加えてみましょう。[[WorkingDirectory|作業ディレクトリ]] (これは全てのファイルがあるディレクトリの私達の呼び名です)に入って、お好みのエディタでソースコードを変更してみましょう。 {{{ $ cd my-hello-new-output $ vi hello.c }}} {{{hello.c}}} の中身は最初はこんな感じです: {{{#!cplusplus numbers=off /* * 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 int main(int argc, char **argv) { printf("hello, world!\n"); return 0; } }}} {{{main}}} を編集して出力する行を二行に増やしてみましょう。 {{{#!cplusplus numbers=off (...) int main(int argc, char **argv) { printf("hello, world!\n"); printf("sure am glad I'm using Mercurial!\n"); return 0; } }}} 終わったら、エディタを終了してください。この編集で、[[ChangeSet|チェンジセット]]を作成する準備ができました。 しかし、もし仮に私達が作業を中断して、どの変更が[[ChangeSet|チェンジセット]]に含まれるか忘れてしまったらどうなるでしょう? このために、{{{status}}} コマンドを使います。 {{{ $ hg status M hello.c }}} 簡単な出力ですが、接頭辞の {{{M}}} は {{{hello.c}}} が変更(modified)されて、次の[[ChangeSet|チェンジセット]]に含まれることを教えてくれます。 {{{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 }}} [[ChangeSet|チェンジセット]]を作成する行為は、[[Commit|コミット]]すると呼ばれます。{{{commit}}} コマンドを使って [[Commit|コミット]] を実行します。 {{{ $ hg commit }}} これはエディタを開いて、暗号のような行をいくつか表示します。 '''注意:''' デフォルトのエディタは {{{vi}}} です。これは {{{EDITOR}}} や {{{HGEDITOR}}} 環境変数を使って変更することができます。また、マニフェストのハッシュは、あなたがどのようにタイプしファイルを保存したかによって異なります。 {{{ (空行) HG: manifest hash 14595beb70bcfb74bf227437d70c38878421c944 HG: changed hello.c }}} 最初の行は空白で、続く行は [[ChangeSet|チェンジセット]]に含まれるであろうファイルを特定します。 [[ChangeSet|チェンジセット]]を[[Commit|コミット]]するには、理由を書かなければなりません。これは通常[[ChangeSet|チェンジセット]] コメントと呼ばれます。このようにタイプしてみましょう。 {{{ Express great joy at existence of Mercurial HG: manifest hash 14595beb70bcfb74bf227437d70c38878421c944 HG: changed hello.c }}} 次に、保存してエディタを終了します。全て上手くいったなら、{{{commit}}} コマンドは終了して何も表示しません。 もしテキストを保存せずにエディタを終了したなら、{{{commit}}} は操作を中断し、コミットする前に気を変えることができます。 さて、この状態では {{{status}}} コマンドはどんなことを教えてくれるでしょうか? {{{ $ hg status }}} 何もありません! 私達の変更は [[ChangeSet|チェンジセット]] に [[Commit|コミット]]されたので、コミットが必要な変更されたファイルが存在しません。 [[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 (...) }}} ありました! 私達が [[Commit|コミット]]した [[ChangeSet|チェンジセット]] です。 '''注意:''' ユーザ名、日付、ChangeSetID はもちろん変わるでしょう。 JapaneseTutorialClone で議論したように、新しい[[ChangeSet|チェンジセット]]はこのリポジトリにのみ存在します。これは [[Mercurial]] の動作で極めて重要な部分です。 変更を共有するには、JapaneseTutorialShareChange に進まなければなりません。 ---- CategoryJapanese