%\chapter{Command reference}
\chapter{コマンドリファレンス}
\label{cmdref}

\cmdref{add}{次回のコミットでファイルを追加}
\optref{add}{I}{include}
\optref{add}{X}{exclude}
\optref{add}{n}{dry-run}

\cmdref{diff}{ヒストリまたはワーキングディレクトリ内の変更を表示}

%Show differences between revisions for the specified files or
%directories, using the unified diff format.  For a description of the
%unified diff format, see section~\ref{sec:mq:patch}.

指定したファイル、ディレクトリについてリビジョン間での差分を表示する。
表示にはunified diffフォーマットが用いられる。unified diffフォーマット
についての説明は\ref{sec:mq:patch}を参照のこと。

%By default, this command does not print diffs for files that Mercurial
%considers to contain binary data.  To control this behaviour, see the
%\hgopt{diff}{-a} and \hgopt{diff}{--git} options.

デフォルトではバイナリデータと考えられるファイルの差分は出力しない．この
挙動は\hgopt{diff}{-a} と \hgopt{diff}{--git}によって変更できる．


\subsection{オプション}

\loptref{diff}{nodates}

%Omit date and time information when printing diff headers.

diffヘッダから日付と時間情報を省略する．

\optref{diff}{B}{空行を無視する}

%Do not print changes that only insert or delete blank lines.  A line
%that contains only whitespace is not considered blank.

空行の挿入または削除だけの変更を表示しない．空白文字が含まれる行は空行と
は見なされない．

\optref{diff}{I}{include}

%Include files and directories whose names match the given patterns.

指定したパターンとマッチするファイルまたはディレクトリを対象に加える

\optref{diff}{X}{exclude}

%Exclude files and directories whose names match the given patterns.

指定したパターンとマッチするファイルまたはディレクトリを対象から除外する

\optref{diff}{a}{text}

%If this option is not specified, \hgcmd{diff} will refuse to print
%diffs for files that it detects as binary. Specifying \hgopt{diff}{-a}
%forces \hgcmd{diff} to treat all files as text, and generate diffs for
%all of them.

このオプションが指定されなければ\hgcmd{diff}はバイナリと判定されたファイ
ルに対するdiffの生成を行わない．\hgopt{diff}{-a}を指定すると
\hgcmd{diff}は全てのファイルをテキストとして扱い，全てのファイルに対して
diffを生成する．

%This option is useful for files that are ``mostly text'' but have a
%few embedded NUL characters.  If you use it on files that contain a
%lot of binary data, its output will be incomprehensible.

このオプションは，ほぼ全てがテキストだが一部にヌル文字を含んでいるような
ファイルに対して有用である．このオプションをバイナリデータが多く含まれる
ファイルに適用すると無意味な出力になるだろう．

\optref{diff}{b}{ignore-space-change}

%Do not print a line if the only change to that line is in the amount
%of white space it contains.

空白の変更のみの行について出力しない．

\optref{diff}{g}{git}

%Print \command{git}-compatible diffs.  XXX reference a format
%description.

\command{git}互換のdiffを出力する．


\optref{diff}{p}{show-function}

%Display the name of the enclosing function in a hunk header, using a
%simple heuristic.  This functionality is enabled by default, so the
%\hgopt{diff}{-p} option has no effect unless you change the value of
%the \rcitem{diff}{showfunc} config item, as in the following example.
%\interaction{cmdref.diff-p}

ハンクヘッダの中に含まれている関数の名前を表示する．検索は単純な発見的方
法で行う．この機能はデフォルトで有効にされており，\hgopt{diff}{-p}オプ
ションは下の例のように\rcitem{diff}{showfunc}設定を変更されるまで意味をな
さない．
\interaction{cmdref.diff-p}

\optref{diff}{r}{rev}

%Specify one or more revisions to compare.  The \hgcmd{diff} command
%accepts up to two \hgopt{diff}{-r} options to specify the revisions to
%compare.

比較する対象のリビジョンを一つ以上指定する．\hgcmd{diff}コマンドは，
比較するリビジョンを指定するために\hgopt{diff}{-r}オプションを2つま
で受け付ける．

%\begin{enumerate}
%\setcounter{enumi}{0}
%\item Display the differences between the parent revision of the
%  working directory and the working directory.
%\item Display the differences between the specified changeset and the
%  working directory.
%\item Display the differences between the two specified changesets.
%\end{enumerate}

\begin{enumerate}
\setcounter{enumi}{0}
\item 親リビジョンのワーキングディレクトリと，現在のワーキングディレクト
      リの差分を表示．
\item 指定されたチェンジセットと現在のワーキングディレクトリの差分を表示．
\item 指定された2つのチェンジセット間の差分を表示．
\end{enumerate}

%You can specify two revisions using either two \hgopt{diff}{-r}
%options or revision range notation.  For example, the two revision
%specifications below are equivalent.

2つのリビジョンを指定する方法として，\hgopt{diff}{-r}を2つ使ってもいいし，
リビジョンレンジ記法を使っても良い．例えば，下の2つのリビジョン指定は等
価である．
\begin{codesample2}
  hg diff -r 10 -r 20
  hg diff -r10:20
\end{codesample2}

%When you provide two revisions, Mercurial treats the order of those
%revisions as significant.  Thus, \hgcmdargs{diff}{-r10:20} will
%produce a diff that will transform files from their contents as of
%revision~10 to their contents as of revision~20, while
%\hgcmdargs{diff}{-r20:10} means the opposite: the diff that will
%transform files from their revision~20 contents to their revision~10
%contents.  You cannot reverse the ordering in this way if you are
%diffing against the working directory.

2つのリビジョンを指定する時，リビジョン指定の順序には意味がある．
\hgcmdargs{diff}{-r10:20}はファイルの内容がリビジョン10からリビジョン20
に変わったとして差分を作成する．\hgcmdargs{diff}{-r20:10}であれば逆の意
味になる．ワーキングディレクトリの差分を取る場合にはこのようにリビジョン
の順序を逆にすることはできない．

\optref{diff}{w}{ignore-all-space}

\cmdref{version}{バージョン情報とコピーライト情報を表示する}

%This command displays the version of Mercurial you are running, and
%its copyright license.  There are four kinds of version string that
%you may see.
このコマンドは現在動作中のMercurialのバージョンとコピーライトライセンス
を表示する．メッセージは4種類ある．
%\begin{itemize}
%\item The string ``\texttt{unknown}''. This version of Mercurial was
%  not built in a Mercurial repository, and cannot determine its own
%  version.
%\item A short numeric string, such as ``\texttt{1.1}''. This is a
%  build of a revision of Mercurial that was identified by a specific
%  tag in the repository where it was built.  (This doesn't necessarily
%  mean that you're running an official release; someone else could
%  have added that tag to any revision in the repository where they
%  built Mercurial.)
%\item A hexadecimal string, such as ``\texttt{875489e31abe}''.  This
%  is a build of the given revision of Mercurial.
%\item A hexadecimal string followed by a date, such as
%  ``\texttt{875489e31abe+20070205}''.  This is a build of the given
%  revision of Mercurial, where the build repository contained some
%  local changes that had not been committed.
%\end{itemize}
\begin{itemize}
\item 文字列``\texttt{unknown}''． このバージョンのMercurialはMercurialリ
      ポジトリの中でビルドされたのではないため，自分自身のリビジョンは分
      からない
\item ``\texttt{1.1}''のような短い数値文字列．これはビルドリポジトリ内で
      タグ付けされた特定のリビジョンのMercurialであることを示す．（これは
      正式リリース版であるということを必ずしも意味しない．Mercurialをビル
      ドするリポジトリでタグを付けるのは誰でもどのリビジョンに対しても可
      能である）
\item ``\texttt{875489e31abe}''のような16進数文字列．これはMercurialが表
      示されたリビジョンのビルドであることを示す．

\item ``\texttt{875489e31abe+20070205}''のような16進文字列＋日付．これは
      そのリビジョンに対してコミットされていないローカルな変更を加えたソー
      スからビルドされたMercurialであることを示す．
\end{itemize}

%\subsection{Tips and tricks}
\subsection{Tips and tricks}

\subsubsection{Why do the results of \hgcmd{diff} and \hgcmd{status}
  differ?}
\label{cmdref:diff-vs-status}

%When you run the \hgcmd{status} command, you'll see a list of files
%that Mercurial will record changes for the next time you perform a
%commit.  If you run the \hgcmd{diff} command, you may notice that it
%prints diffs for only a \emph{subset} of the files that \hgcmd{status}
%listed.  There are two possible reasons for this.

\hgcmd{status}を実行した時，Mercurialは次回のコミットで記録する変更のリ
ストを表示する．\hgcmd{diff}を実行すると，\hgcmd{status}の\emph{一部
の}diffが表示されることに気付くだろう．これには二つの理由が考えられる．

%The first is that \hgcmd{status} prints some kinds of modifications
%that \hgcmd{diff} doesn't normally display.  The \hgcmd{diff} command
%normally outputs unified diffs, which don't have the ability to
%represent some changes that Mercurial can track.  Most notably,
%traditional diffs can't represent a change in whether or not a file is
%executable, but Mercurial records this information.

1つ目は\hgcmd{status}が\hgcmd{diff}が通常表示しない何種類かの変更を表示す
るためである．\hgcmd{diff}は通常unified diff形式で出力するが，これは
Mercurialが追跡できる変更のいくつかを追跡できない．特に，古いdiffではファ
イルが実行かのうかどうかを表現できないが，Mercurialはこの情報を記録する．

%If you use the \hgopt{diff}{--git} option to \hgcmd{diff}, it will
%display \command{git}-compatible diffs that \emph{can} display this
%extra information.

\hgcmd{diff}コマンドで\hgopt{diff}{--git}オプションを使っている場合，
この情報を表示できる\command{git}互換のdiffを出力する．

%The second possible reason that \hgcmd{diff} might be printing diffs
%for a subset of the files displayed by \hgcmd{status} is that if you
%invoke it without any arguments, \hgcmd{diff} prints diffs against the
%first parent of the working directory.If you have run \hgcmd{merge}
%to merge two changesets, but you haven't yet committed the results of
%the merge,your working directory has two parents (use \hgcmd{parents}
%to see them).While \hgcmd{status} prints modifications relative to
%\emph{both} parents after an uncommitted merge, \hgcmd{diff} still
%operates relative only to the first parent.  You can get it to print
%diffs relative to the second parent by specifying that parent with the
%\hgopt{diff}{-r} option.  There is no way to print diffs relative to
%both parents.

2つ目の考えられる理由は，\hgcmd{diff}を引数なしで呼んでいるため，
\hgcmd{diff}がワーキングディレクトリの直接の親との差分を取っているためで
ある．チェンジセットをマージするために\hgcmd{merge}を実行すると，ワーキン
グディレクトリは2つの親を持つことになる．（親を表示するには
\hgcmd{parents}を使う．）\hgcmd{status}はコミットされていないマージの
\emph{両方}の親との差分を取るのに対して，\hgcmd{diff}は順序的に先の親と
の差分を取る．後の親との差分を取るためには\hgopt{diff}{-r}オプションを使
う．両方の親との差分を取る方法は存在しない．


%\subsubsection{Generating safe binary diffs}
\subsubsection{バイナリの差分を安全に取得する}

%If you use the \hgopt{diff}{-a} option to force Mercurial to print
%diffs of files that are either ``mostly text'' or contain lots of
%binary data, those diffs cannot subsequently be applied by either
%Mercurial's \hgcmd{import} command or the system's \command{patch}
%command.  

大半がテキストであるファイル同士や，多くのバイナリデータが含まれるファイ
ル同士の差分を取るために\hgopt{diff}{-a}を指定する場合，生成された差分は
Mercurialの\hgcmd{import}コマンドやシステムの\command{patch}に用いること
ができない．

%If you want to generate a diff of a binary file that is safe to use as
%input for \hgcmd{import}, use the \hgcmd{diff}{--git} option when you
%generate the patch.  The system \command{patch} command cannot handle
%binary patches at all.

\hgcmd{import}で利用できるバイナリファイルの差分を生成するには，
パッチ生成に\hgcmd{diff}{--git}オプションを指定すればよい．システムの
\command{patch}コマンドからはこの差分は利用できない．

%%% Local Variables: 
%%% mode: yatex
%%% TeX-master: "00book"
%%% End: 
