# HG changeset patch # User Yoshiki Yazawa # Date 1225515185 -32400 # Node ID 586bd91d0c8498f5b6a887a0c3e2188dfd002720 # Parent 4e746f46085c7f41628537adcce381340584dda9 - translated title page. - started collab.tex. diff -r 4e746f46085c -r 586bd91d0c84 ja/00book.tex --- a/ja/00book.tex Fri Oct 31 22:21:35 2008 +0900 +++ b/ja/00book.tex Sat Nov 01 13:53:05 2008 +0900 @@ -16,15 +16,25 @@ \include{99defs} -\title{Distributed revision control with Mercurial} \author{Bryan - O'Sullivan} +%\title{Distributed revision control with Mercurial} +\title{Mercurialによる分散リビジョン管理} +\author{Bryan O'Sullivan} +%\date{Copyright \copyright\ 2006, 2007 Bryan O'Sullivan.\\ +% This material may be distributed only subject to the terms and +% conditions set forth in version 1.0 of the Open Publication License. +% Please refer to Appendix~\ref{cha:opl} for the license text.\\ +% This book was prepared from +% \href{http://hg.serpentine.com/mercurial/book/}{rev~\input{build_id}} +% using \href{http://www.selenic.com/hg/}{rev~\input{hg_id}} of Mercurial.} \date{Copyright \copyright\ 2006, 2007 Bryan O'Sullivan.\\ - This material may be distributed only subject to the terms and - conditions set forth in version 1.0 of the Open Publication License. - Please refer to Appendix~\ref{cha:opl} for the license text.\\ - This book was prepared from - \href{http://hg.serpentine.com/mercurial/book/}{rev~\input{build_id}} - using \href{http://www.selenic.com/hg/}{rev~\input{hg_id}} of Mercurial.} + この文書は Open Publication License バージョン 1.0 の定める条件 + にのみ従って配布される.ライセンスの内容については付録~\ref{cha:opl}を + 参照されたい.\\ + この書籍はMercurial + \href{http://www.selenic.com/hg/}{rev~\input{hg_id}} + によって管理される + \href{http://freehg.org/u/honeyplanet/hgbook/}{rev~\input{build_id}} + から製版された.} \makeindex @@ -70,7 +80,7 @@ \end{document} -%%% Local Variables: +%%% Local Variables: %%% mode: yatex %%% TeX-master: t -%%% End: +%%% End: diff -r 4e746f46085c -r 586bd91d0c84 ja/collab.tex --- a/ja/collab.tex Fri Oct 31 22:21:35 2008 +0900 +++ b/ja/collab.tex Sat Nov 01 13:53:05 2008 +0900 @@ -1,87 +1,155 @@ -\chapter{Collaborating with other people} +%\chapter{Collaborating with other people} +\chapter{他の人々との共同作業} \label{cha:collab} -As a completely decentralised tool, Mercurial doesn't impose any -policy on how people ought to work with each other. However, if -you're new to distributed revision control, it helps to have some -tools and examples in mind when you're thinking about possible -workflow models. +%As a completely decentralised tool, Mercurial doesn't impose any +%policy on how people ought to work with each other. However, if +%you're new to distributed revision control, it helps to have some +%tools and examples in mind when you're thinking about possible +%workflow models. -\section{Mercurial's web interface} +完全な分散型ツールとして,Mercurialはユーザが他のユーザとどのように作業す +るかのポリシーを強要することはない.しかし初めて分散リビジョンコントロー +ルツールを使うのであれば,いくつかのツールの使用法と使用例を知ることが +取り得るワークフローモデルを考える際に助けとなるであろう. + +%\section{Mercurial's web interface} +\section{Mercurialのウェブインタフェース} -Mercurial has a powerful web interface that provides several -useful capabilities. +%Mercurial has a powerful web interface that provides several +%useful capabilities. + +Mercurialはいくつかの有用な機能を持つ強力なウェブインタフェースを備えて +いる. -For interactive use, the web interface lets you browse a single -repository or a collection of repositories. You can view the history -of a repository, examine each change (comments and diffs), and view -the contents of each directory and file. +%For interactive use, the web interface lets you browse a single +%repository or a collection of repositories. You can view the history +%of a repository, examine each change (comments and diffs), and view +%the contents of each directory and file. + +対話的な利用では,ウェブインタフェースにより1つのリポジトリまたはいくつか +のリポジトリのコレクションを閲覧することができる.リポジトリの履歴を見た +り,各々の変更(コメントや差分を含む)を調べたり,ディレクトリやファイル +の内容を見ることができる. -Also for human consumption, the web interface provides an RSS feed of -the changes in a repository. This lets you ``subscribe'' to a -repository using your favourite feed reader, and be automatically -notified of activity in that repository as soon as it happens. I find -this capability much more convenient than the model of subscribing to -a mailing list to which notifications are sent, as it requires no -additional configuration on the part of whoever is serving the -repository. +%Also for human consumption, the web interface provides an RSS feed of +%the changes in a repository. This lets you ``subscribe'' to a +%repository using your favourite feed reader, and be automatically +%notified of activity in that repository as soon as it happens. I find +%this capability much more convenient than the model of subscribing to +%a mailing list to which notifications are sent, as it requires no +%additional configuration on the part of whoever is serving the +%repository. + +ウェブインタフェースは閲覧用にリポジトリの変更のRSSフィードを提供する.こ +れを使えば,リポジトリの変化を好みのフィードリーダによって``購読''するこ +とができ,リポジトリでの活動が起こるとすぐさま通知を受けられる.この機能 +は誰がリポジトリのサービスを行っても追加の設定を必要としないため,メーリ +ングリストを購読して通知を受けるモデルよりもずっと便利である. -The web interface also lets remote users clone a repository, pull -changes from it, and (when the server is configured to permit it) push -changes back to it. Mercurial's HTTP tunneling protocol aggressively -compresses data, so that it works efficiently even over low-bandwidth -network connections. +%The web interface also lets remote users clone a repository, pull +%changes from it, and (when the server is configured to permit it) push +%changes back to it. Mercurial's HTTP tunneling protocol aggressively +%compresses data, so that it works efficiently even over low-bandwidth +%network connections. -The easiest way to get started with the web interface is to use your -web browser to visit an existing repository, such as the master -Mercurial repository at -\url{http://www.selenic.com/repo/hg?style=gitweb}. +リモートユーザはウェブインタフェースを用いてリポジトリをクローンすること +もできる.変更をpullして,(サーバが許可する設定になっていれば)加えた変 +更を再びpushすることもできる.MercurialのHTTPトンネルプロトコルはデータを +積極的に圧縮するため,バンド幅の低いネットワークコネクションでも有効に機 +能する. + +%The easiest way to get started with the web interface is to use your +%web browser to visit an existing repository, such as the master +%Mercurial repository at +%\url{http://www.selenic.com/repo/hg?style=gitweb}. + +ウェブインタフェースの最も簡単な始め方はウェブブラウザを使ってMercurialの +マスタリポジトリ\url{http://www.selenic.com/repo/hg?style=gitweb}のような +既存のリポジトリを参照することである. -If you're interested in providing a web interface to your own -repositories, Mercurial provides two ways to do this. The first is -using the \hgcmd{serve} command, which is best suited to short-term -``lightweight'' serving. See section~\ref{sec:collab:serve} below for -details of how to use this command. If you have a long-lived -repository that you'd like to make permanently available, Mercurial -has built-in support for the CGI (Common Gateway Interface) standard, -which all common web servers support. See -section~\ref{sec:collab:cgi} for details of CGI configuration. +%If you're interested in providing a web interface to your own +%repositories, Mercurial provides two ways to do this. The first is +%using the \hgcmd{serve} command, which is best suited to short-term +%``lightweight'' serving. See section~\ref{sec:collab:serve} below for +%details of how to use this command. If you have a long-lived +%repository that you'd like to make permanently available, Mercurial +%has built-in support for the CGI (Common Gateway Interface) standard, +%which all common web servers support. See +%section~\ref{sec:collab:cgi} for details of CGI configuration. + +自分のリポジトリにウェブインタフェースを用意する場合,2通りのやり方があ +る. 1つ目の方法は\hgcmd{serve}コマンドを使う方法で,これは短期間の``手軽 +な''サービスに的している.このコマンドの詳細な使用法については下記 +の~\ref{sec:collab:serve}節を参照のこと.リポジトリを長期間にわたり永続的 +にサービスしたい場合は,Mercurialに内蔵のCGI(Common Gateway Interface)サ +ポートを利用することができる. CGIの設定については~\ref{sec:collab:cgi}節 +を参照のこと. -\section{Collaboration models} +%\section{Collaboration models} +\section{共同作業モデル} + +%With a suitably flexible tool, making decisions about workflow is much +%more of a social engineering challenge than a technical one. +%Mercurial imposes few limitations on how you can structure the flow of +%work in a project, so it's up to you and your group to set up and live +%with a model that matches your own particular needs. -With a suitably flexible tool, making decisions about workflow is much -more of a social engineering challenge than a technical one. -Mercurial imposes few limitations on how you can structure the flow of -work in a project, so it's up to you and your group to set up and live -with a model that matches your own particular needs. +適切で柔軟なツールをもってしても,ワークフローに関する決定をすることは技 +術的というよりは社会工学的なチャレンジである. Mercurialがプロジェクトの +ワークフローに課す制限はほとんどないため,これをいかに構築するかはあなた +とその共同作業者に任されており,固有の要求マッチするモデルを作ることがで +きる. -\subsection{Factors to keep in mind} +%\subsection{Factors to keep in mind} +\subsection{考慮すべき要素} + +%The most important aspect of any model that you must keep in mind is +%how well it matches the needs and capabilities of the people who will +%be using it. This might seem self-evident; even so, you still can't +%afford to forget it for a moment. -The most important aspect of any model that you must keep in mind is -how well it matches the needs and capabilities of the people who will -be using it. This might seem self-evident; even so, you still can't -afford to forget it for a moment. +どのようなモデルを使う場合でも,それが作業する人々の要求と能力に適ったも +のであるかを常に念頭に置くことが最も重要である. +これは自明のことのように思えるかもしれないが,片時も忘れてはならない. + +%I once put together a workflow model that seemed to make perfect sense +%to me, but that caused a considerable amount of consternation and +%strife within my development team. In spite of my attempts to explain +%why we needed a complex set of branches, and how changes ought to flow +%between them, a few team members revolted. Even though they were +%smart people, they didn't want to pay attention to the constraints we +%were operating under, or face the consequences of those constraints in +%the details of the model that I was advocating. + +自分にとって完全と思えるワークフローモデルを構築したつもりが,共同開発チー +ムにとっては大きな驚きと葛藤を与えてしまったことがある.複雑なブランチの +集合がなぜ必要なのか変更がブランチ間でどのように伝播するのかを説明したに +もかかわらず,幾人かのチームメンバーは反発した.彼らは聡明であったが,私 +が拘ったルールが作業に与える制限や,モデルの細部に与える影響に注意を払う +ことは望まなかった. -I once put together a workflow model that seemed to make perfect sense -to me, but that caused a considerable amount of consternation and -strife within my development team. In spite of my attempts to explain -why we needed a complex set of branches, and how changes ought to flow -between them, a few team members revolted. Even though they were -smart people, they didn't want to pay attention to the constraints we -were operating under, or face the consequences of those constraints in -the details of the model that I was advocating. +%Don't sweep foreseeable social or technical problems under the rug. +%Whatever scheme you put into effect, you should plan for mistakes and +%problem scenarios. Consider adding automated machinery to prevent, or +%quickly recover from, trouble that you can anticipate. As an example, +%if you intend to have a branch with not-for-release changes in it, +%you'd do well to think early about the possibility that someone might +%accidentally merge those changes into a release branch. You could +%avoid this particular problem by writing a hook that prevents changes +%from being merged from an inappropriate branch. -Don't sweep foreseeable social or technical problems under the rug. -Whatever scheme you put into effect, you should plan for mistakes and -problem scenarios. Consider adding automated machinery to prevent, or -quickly recover from, trouble that you can anticipate. As an example, -if you intend to have a branch with not-for-release changes in it, -you'd do well to think early about the possibility that someone might -accidentally merge those changes into a release branch. You could -avoid this particular problem by writing a hook that prevents changes -from being merged from an inappropriate branch. +将来起こり得る社会的またいは技術的問題に目を瞑ってはならない.どのような +方法をとるに志手も,間違いや問題が起きた場合に備えておく必要がある.想像 +し得るトラブルを防止したり,トラブルから素早く回復させるための自動化され +た方法を考えておく必要がある.たとえば,リリースに含めない変更を行ったブ +ランチがあるとしたら,誰かが誤ってそこからリリースブランチに変更をマージ +してしまう可能性について検討しておくべきである.この場合であれば,不適切 +なブランチからのマージを禁止するフックを用意することで問題を回避すること +ができる. -\subsection{Informal anarchy} +%\subsection{Informal anarchy} +\subsection{非公式な混乱} I wouldn't suggest an ``anything goes'' approach as something sustainable, but it's a model that's easy to grasp, and it works @@ -112,7 +180,8 @@ scale beyond a handful people, because each individual needs to know about $n$ different repositories to pull from. -\subsection{A single central repository} +%\subsection{A single central repository} +\subsection{1つの集中リポジトリ} For smaller projects migrating from a centralised revision control tool, perhaps the easiest way to get started is to have changes flow @@ -142,7 +211,8 @@ needs of people who don't have push access, and those who want to use web browsers to browse the repository's history. -\subsection{Working with multiple branches} +%\subsection{Working with multiple branches} +\subsection{複数のブランチでの作業} Projects of any significant size naturally tend to make progress on several fronts simultaneously. In the case of software, it's common @@ -176,7 +246,7 @@ Using the tag that was recorded at the milestone, people who clone that repository at any time in the future can use \hgcmd{update} to get a copy of the working directory exactly as it was when that tagged -revision was committed. +revision was committed. \interaction{branching.update} In addition, immediately after the main branch is tagged, someone can @@ -202,7 +272,8 @@ branch, but it will also contain all of the bugfixes from the stable branch. The stable branch remains unaffected by these changes. -\subsection{Feature branches} +%\subsection{Feature branches} +\subsection{機能によるブランチ} For larger projects, an effective way to manage change is to break up a team into smaller groups. Each group has a shared branch of its @@ -221,7 +292,8 @@ on that feature team pulls and merges from the master branch into the feature branch, then pushes back up to the master branch. -\subsection{The release train} +%\subsection{The release train} +\subsection{リリースの繋がり} Some projects are organised on a ``train'' basis: a release is scheduled to happen every few months, and whatever features are ready @@ -233,7 +305,8 @@ the feature branch, and the team continues its work on top of that release so that their feature can make the next release. -\subsection{The Linux kernel model} +%\subsection{The Linux kernel model} +\subsection{Linuxカーネルモデル} The development of the Linux kernel has a shallow hierarchical structure, surrounded by a cloud of apparent chaos. Because most @@ -297,7 +370,8 @@ of development is astounding. And yet Linux is a highly successful, well-regarded piece of software. -\subsection{Pull-only versus shared-push collaboration} +%\subsection{Pull-only versus shared-push collaboration} +\subsection{Pullのみ対共有pushコラボレーション} A perpetual source of heat in the open source community is whether a development model in which people only ever pull changes from others @@ -316,7 +390,8 @@ how you work together based on your own needs and preferences, not on what contortions your tools force you into. -\subsection{Where collaboration meets branch management} +%\subsection{Where collaboration meets branch management} +\subsection{共同作業がブランチ管理と直面するところ} Once you and your team set up some shared repositories and start propagating changes back and forth between local and shared repos, you @@ -326,12 +401,14 @@ collaborates, it's dense enough to merit treatment of its own, in chapter~\ref{chap:branch}. -\section{The technical side of sharing} +%\section{The technical side of sharing} +\section{共有の技術的側面} The remainder of this chapter is devoted to the question of serving data to your collaborators. -\section{Informal sharing with \hgcmd{serve}} +%\section{Informal sharing with \hgcmd{serve}} +\section{\hgcmd{serve}による非公式な共有} \label{sec:collab:serve} Mercurial's \hgcmd{serve} command is wonderfully suited to small, @@ -365,7 +442,8 @@ This can help you to quickly get acquainted with using commands on network-hosted repositories. -\subsection{A few things to keep in mind} +%\subsection{A few things to keep in mind} +\subsection{覚えておくべき2, 3の点} Because it provides unauthenticated read access to all clients, you should only use \hgcmd{serve} in an environment where you either don't @@ -389,7 +467,8 @@ correctly, and find out what URL you should send to your collaborators, start it with the \hggopt{-v} option. -\section{Using the Secure Shell (ssh) protocol} +%\section{Using the Secure Shell (ssh) protocol} +\section{Secure Shell (ssh)プロトコルの使用} \label{sec:collab:ssh} You can pull and push changes securely over a network connection using @@ -405,7 +484,8 @@ (If you \emph{are} familiar with ssh, you'll probably find some of the material that follows to be elementary in nature.) -\subsection{How to read and write ssh URLs} +%\subsection{How to read and write ssh URLs} +\subsection{sshのURLをどのように読むか} An ssh URL tends to look like this: \begin{codesample2} @@ -452,7 +532,8 @@ ssh://server//absolute/path \end{codesample2} -\subsection{Finding an ssh client for your system} +%\subsection{Finding an ssh client for your system} +\subsection{利用中のシステム向けのssh clientを見つける} Almost every Unix-like system comes with OpenSSH preinstalled. If you're using such a system, run \Verb|which ssh| to find out if @@ -485,7 +566,8 @@ idea). \end{note} -\subsection{Generating a key pair} +%\subsection{Generating a key pair} +\subsection{キーペアの作成} To avoid the need to repetitively type a password every time you need to use your ssh client, I recommend generating a key pair. On a @@ -511,7 +593,8 @@ window it's displayed in straight into the \sfilename{authorized\_keys} file. -\subsection{Using an authentication agent} +%\subsection{Using an authentication agent} +\subsection{認証エージェントの使用} An authentication agent is a daemon that stores passphrases in memory (so it will forget passphrases if you log out and log back in again). @@ -534,7 +617,8 @@ command acts as the agent. It adds an icon to your system tray that will let you manage stored passphrases. -\subsection{Configuring the server side properly} +%\subsection{Configuring the server side properly} +\subsection{サーバの正しい設定} Because ssh can be fiddly to set up if you're new to it, there's a variety of things that can go wrong. Add Mercurial on top, and @@ -651,7 +735,8 @@ point, try using the \hggopt{--debug} option to get a clearer picture of what's going on. -\subsection{Using compression with ssh} +%\subsection{Using compression with ssh} +\subsection{sshでの圧縮の利用} Mercurial does not compress data when it uses the ssh protocol, because the ssh protocol can transparently compress data. However, @@ -686,7 +771,8 @@ and use compression. This gives you both a shorter name to type and compression, each of which is a good thing in its own right. -\section{Serving over HTTP using CGI} +%\section{Serving over HTTP using CGI} +\section{CGIを使用したHTTPでのサービス} \label{sec:collab:cgi} Depending on how ambitious you are, configuring Mercurial's CGI @@ -706,7 +792,8 @@ of time reading your server's error logs. \end{note} -\subsection{Web server configuration checklist} +%\subsection{Web server configuration checklist} +\subsection{Webサーバ設定のチェックリスト} Before you continue, do take a few moments to check a few aspects of your system's setup. @@ -731,7 +818,8 @@ repositories. And \texttt{lighttpd} is undeniably \emph{much} easier to get started with than Apache. -\subsection{Basic CGI configuration} +%\subsection{Basic CGI configuration} +\subsection{CGIの基本的な設定} On Unix-like systems, it's common for users to have a subdirectory named something like \dirname{public\_html} in their home directory, @@ -763,7 +851,8 @@ chmod 755 ~/public_html \end{codesample2} -\subsubsection{What could \emph{possibly} go wrong?} +%\subsubsection{What could \emph{possibly} go wrong?} +\subsubsection{どこが問題と成り得るか?} \label{sec:collab:wtf} Once you've copied the CGI script into place, go into a web browser, @@ -851,7 +940,8 @@ At this point, when you try to reload the page, you should be presented with a nice HTML view of your repository's history. Whew! -\subsubsection{Configuring lighttpd} +%\subsubsection{Configuring lighttpd} +\subsubsection{lighttpdの設定} To be exhaustive in my experiments, I tried configuring the increasingly popular \texttt{lighttpd} web server to serve the same @@ -879,7 +969,8 @@ easier to configure than Apache, even though I've used Apache for over a decade, and this was my first exposure to \texttt{lighttpd}. -\subsection{Sharing multiple repositories with one CGI script} +%\subsection{Sharing multiple repositories with one CGI script} +\subsection{1つのCGIスクリプトで複数のリポジトリを共有する} The \sfilename{hgweb.cgi} script only lets you publish a single repository, which is an annoying restriction. If you want to publish @@ -952,7 +1043,8 @@ into, or out of, the directory hierarchy in which you've configured \sfilename{hgwebdir.cgi} to look. -\subsubsection{Explicitly specifying which repositories to publish} +%\subsubsection{Explicitly specifying which repositories to publish} +\subsubsection{どのリポジトリを表示するか明示的に指定する} In addition to the \texttt{collections} mechanism, the \sfilename{hgwebdir.cgi} script allows you to publish a specific list @@ -979,7 +1071,8 @@ behave unpredictably. \end{note} -\subsection{Downloading source archives} +%\subsection{Downloading source archives} +\subsection{ソースアーカイブのダウンロード} Mercurial's web interface lets users download an archive of any revision. This archive will contain a snapshot of the working @@ -990,7 +1083,8 @@ add an \rcitem{web}{allow\_archive} item to the \rcsection{web} section of your \hgrc. -\subsection{Web configuration options} +%\subsection{Web configuration options} +\subsection{Web設定オプション} Mercurial's web interfaces (the \hgcmd{serve} command, and the \sfilename{hgweb.cgi} and \sfilename{hgwebdir.cgi} scripts) have a @@ -1060,7 +1154,8 @@ convenience. These items are \rcitem{web}{motd} and \rcitem{web}{style}. -\subsubsection{Options specific to an individual repository} +%\subsubsection{Options specific to an individual repository} +\subsubsection{個々のリポジトリに特有のオプション} A few \rcsection{web} configuration items ought to be placed in a repository's local \sfilename{.hg/hgrc}, rather than a user's or @@ -1074,7 +1169,8 @@ last component of the repository's path. \end{itemize} -\subsubsection{Options specific to the \hgcmd{serve} command} +%\subsubsection{Options specific to the \hgcmd{serve} command} +\subsubsection{\hgcmd{serve}コマンド特有のオプション} Some of the items in the \rcsection{web} section of a \hgrc\ file are only for use with the \hgcmd{serve} command. @@ -1096,8 +1192,9 @@ server should listen. The default port number used is~8000. \end{itemize} -\subsubsection{Choosing the right \hgrc\ file to add \rcsection{web} - items to} +%\subsubsection{Choosing the right \hgrc\ file to add \rcsection{web} + %items to} +\subsubsection{\rcsection{web}アイテムを追加する正しい\hgrc ファイルを選ぶ} It is important to remember that a web server like Apache or \texttt{lighttpd} will run under a user~ID that is different to yours. @@ -1112,7 +1209,7 @@ those settings to a system-wide \hgrc\ file. -%%% Local Variables: +%%% Local Variables: %%% mode: yatex %%% TeX-master: "00book" -%%% End: +%%% End: diff -r 4e746f46085c -r 586bd91d0c84 ja/todo.txt --- a/ja/todo.txt Fri Oct 31 22:21:35 2008 +0900 +++ b/ja/todo.txt Sat Nov 01 13:53:05 2008 +0900 @@ -1,6 +1,7 @@ translate proofread +00book.tex 100% branch.tex 100% -collab.tex +collab.tex 5% concepts.tex daily.tex filenames.tex 100%