Mercurial > hgbook
changeset 367:586bd91d0c84
- translated title page.
- started collab.tex.
author | Yoshiki Yazawa <yaz@honeyplanet.jp> |
---|---|
date | Sat, 01 Nov 2008 13:53:05 +0900 |
parents | 4e746f46085c |
children | 7ef84661e43e |
files | ja/00book.tex ja/collab.tex ja/todo.txt |
diffstat | 3 files changed, 220 insertions(+), 112 deletions(-) [+] |
line wrap: on
line diff
--- 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$B$K$h$kJ,;6%j%S%8%g%s4IM}(B} +\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.} + $B$3$NJ8=q$O(B Open Publication License $B%P!<%8%g%s(B 1.0 $B$NDj$a$k>r7o(B + $B$K$N$_=>$C$FG[I[$5$l$k!%%i%$%;%s%9$NFbMF$K$D$$$F$OIUO?(B~\ref{cha:opl}$B$r(B + $B;2>H$5$l$?$$!%(B\\ + $B$3$N=q@R$O(BMercurial + \href{http://www.selenic.com/hg/}{rev~\input{hg_id}} + $B$K$h$C$F4IM}$5$l$k(B + \href{http://freehg.org/u/honeyplanet/hgbook/}{rev~\input{build_id}} + $B$+$i@=HG$5$l$?!%(B} \makeindex @@ -70,7 +80,7 @@ \end{document} -%%% Local Variables: +%%% Local Variables: %%% mode: yatex %%% TeX-master: t -%%% End: +%%% End:
--- 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{$BB>$N?M!9$H$N6&F1:n6H(B} \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} +$B40A4$JJ,;67?%D!<%k$H$7$F!$(BMercurial$B$O%f!<%6$,B>$N%f!<%6$H$I$N$h$&$K:n6H$9(B +$B$k$+$N%]%j%7!<$r6/MW$9$k$3$H$O$J$$!%$7$+$7=i$a$FJ,;6%j%S%8%g%s%3%s%H%m!<(B +$B%k%D!<%k$r;H$&$N$G$"$l$P!$$$$/$D$+$N%D!<%k$N;HMQK!$H;HMQNc$rCN$k$3$H$,(B +$B<h$jF@$k%o!<%/%U%m!<%b%G%k$r9M$($k:]$K=u$1$H$J$k$G$"$m$&!%(B + +%\section{Mercurial's web interface} +\section{Mercurial$B$N%&%'%V%$%s%?%U%'!<%9(B} -Mercurial has a powerful web interface that provides several -useful capabilities. +%Mercurial has a powerful web interface that provides several +%useful capabilities. + +Mercurial$B$O$$$/$D$+$NM-MQ$J5!G=$r;}$D6/NO$J%&%'%V%$%s%?%U%'!<%9$rHw$($F(B +$B$$$k!%(B -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. + +$BBPOCE*$JMxMQ$G$O!$%&%'%V%$%s%?%U%'!<%9$K$h$j(B1$B$D$N%j%]%8%H%j$^$?$O$$$/$D$+(B +$B$N%j%]%8%H%j$N%3%l%/%7%g%s$r1\Mw$9$k$3$H$,$G$-$k!%%j%]%8%H%j$NMzNr$r8+$?(B +$B$j!$3F!9$NJQ99!J%3%a%s%H$d:9J,$r4^$`!K$rD4$Y$?$j!$%G%#%l%/%H%j$d%U%!%$%k(B +$B$NFbMF$r8+$k$3$H$,$G$-$k!%(B -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. + +$B%&%'%V%$%s%?%U%'!<%9$O1\MwMQ$K%j%]%8%H%j$NJQ99$N(BRSS$B%U%#!<%I$rDs6!$9$k!%$3(B +$B$l$r;H$($P!$%j%]%8%H%j$NJQ2=$r9%$_$N%U%#!<%I%j!<%@$K$h$C$F(B``$B9XFI(B''$B$9$k$3(B +$B$H$,$G$-!$%j%]%8%H%j$G$N3hF0$,5/$3$k$H$9$0$5$^DLCN$r<u$1$i$l$k!%$3$N5!G=(B +$B$OC/$,%j%]%8%H%j$N%5!<%S%9$r9T$C$F$bDI2C$N@_Dj$rI,MW$H$7$J$$$?$a!$%a!<%j(B +$B%s%0%j%9%H$r9XFI$7$FDLCN$r<u$1$k%b%G%k$h$j$b$:$C$HJXMx$G$"$k!%(B -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}. +$B%j%b!<%H%f!<%6$O%&%'%V%$%s%?%U%'!<%9$rMQ$$$F%j%]%8%H%j$r%/%m!<%s$9$k$3$H(B +$B$b$G$-$k!%JQ99$r(Bpull$B$7$F!$!J%5!<%P$,5v2D$9$k@_Dj$K$J$C$F$$$l$P!K2C$($?JQ(B +$B99$r:F$S(Bpush$B$9$k$3$H$b$G$-$k!%(BMercurial$B$N(BHTTP$B%H%s%M%k%W%m%H%3%k$O%G!<%?$r(B +$B@Q6KE*$K05=L$9$k$?$a!$%P%s%II}$NDc$$%M%C%H%o!<%/%3%M%/%7%g%s$G$bM-8z$K5!(B +$BG=$9$k!%(B + +%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}. + +$B%&%'%V%$%s%?%U%'!<%9$N:G$b4JC1$J;O$aJ}$O%&%'%V%V%i%&%6$r;H$C$F(BMercurial$B$N(B +$B%^%9%?%j%]%8%H%j(B\url{http://www.selenic.com/repo/hg?style=gitweb}$B$N$h$&$J(B +$B4{B8$N%j%]%8%H%j$r;2>H$9$k$3$H$G$"$k!%(B -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. + +$B<+J,$N%j%]%8%H%j$K%&%'%V%$%s%?%U%'!<%9$rMQ0U$9$k>l9g!$(B2$BDL$j$N$d$jJ}$,$"(B +$B$k!%(B 1$B$DL\$NJ}K!$O(B\hgcmd{serve}$B%3%^%s%I$r;H$&J}K!$G!$$3$l$OC;4|4V$N(B``$B<j7Z(B +$B$J(B''$B%5!<%S%9$KE*$7$F$$$k!%$3$N%3%^%s%I$N>\:Y$J;HMQK!$K$D$$$F$O2<5-(B +$B$N(B~\ref{sec:collab:serve}$B@a$r;2>H$N$3$H!%%j%]%8%H%j$rD94|4V$K$o$?$j1JB3E*(B +$B$K%5!<%S%9$7$?$$>l9g$O!$(BMercurial$B$KFbB"$N(BCGI(Common Gateway Interface)$B%5(B +$B%]!<%H$rMxMQ$9$k$3$H$,$G$-$k!%(B CGI$B$N@_Dj$K$D$$$F$O(B~\ref{sec:collab:cgi}$B@a(B +$B$r;2>H$N$3$H!%(B -\section{Collaboration models} +%\section{Collaboration models} +\section{$B6&F1:n6H%b%G%k(B} + +%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. +$BE,@Z$G=@Fp$J%D!<%k$r$b$C$F$7$F$b!$%o!<%/%U%m!<$K4X$9$k7hDj$r$9$k$3$H$O5;(B +$B=QE*$H$$$&$h$j$O<R2q9)3XE*$J%A%c%l%s%8$G$"$k!%(B Mercurial$B$,%W%m%8%'%/%H$N(B +$B%o!<%/%U%m!<$K2]$9@)8B$O$[$H$s$I$J$$$?$a!$$3$l$r$$$+$K9=C[$9$k$+$O$"$J$?(B +$B$H$=$N6&F1:n6H<T$KG$$5$l$F$*$j!$8GM-$NMW5a%^%C%A$9$k%b%G%k$r:n$k$3$H$,$G(B +$B$-$k!%(B -\subsection{Factors to keep in mind} +%\subsection{Factors to keep in mind} +\subsection{$B9MN8$9$Y$-MWAG(B} + +%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. +$B$I$N$h$&$J%b%G%k$r;H$&>l9g$G$b!$$=$l$,:n6H$9$k?M!9$NMW5a$HG=NO$KE,$C$?$b(B +$B$N$G$"$k$+$r>o$KG0F,$KCV$/$3$H$,:G$b=EMW$G$"$k!%(B +$B$3$l$O<+L@$N$3$H$N$h$&$K;W$($k$+$b$7$l$J$$$,!$JR;~$bK:$l$F$O$J$i$J$$!%(B + +%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. + +$B<+J,$K$H$C$F40A4$H;W$($k%o!<%/%U%m!<%b%G%k$r9=C[$7$?$D$b$j$,!$6&F13+H/%A!<(B +$B%`$K$H$C$F$OBg$-$J6C$-$H3kF#$rM?$($F$7$^$C$?$3$H$,$"$k!%J#;($J%V%i%s%A$N(B +$B=89g$,$J$<I,MW$J$N$+JQ99$,%V%i%s%A4V$G$I$N$h$&$KEAGE$9$k$N$+$r@bL@$7$?$K(B +$B$b$+$+$o$i$:!$4v?M$+$N%A!<%`%a%s%P!<$OH?H/$7$?!%H`$i$OAoL@$G$"$C$?$,!$;d(B +$B$,94$C$?%k!<%k$,:n6H$KM?$($k@)8B$d!$%b%G%k$N:YIt$KM?$($k1F6A$KCm0U$rJ'$&(B +$B$3$H$OK>$^$J$+$C$?!%(B -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. +$B>-Mh5/$3$jF@$k<R2qE*$^$?$$$O5;=QE*LdBj$KL\$rbT$C$F$O$J$i$J$$!%$I$N$h$&$J(B +$BJ}K!$r$H$k$K;V<j$b!$4V0c$$$dLdBj$,5/$-$?>l9g$KHw$($F$*$/I,MW$,$"$k!%A[A|(B +$B$7F@$k%H%i%V%k$rKI;_$7$?$j!$%H%i%V%k$+$iAGAa$/2sI|$5$;$k$?$a$N<+F02=$5$l(B +$B$?J}K!$r9M$($F$*$/I,MW$,$"$k!%$?$H$($P!$%j%j!<%9$K4^$a$J$$JQ99$r9T$C$?%V(B +$B%i%s%A$,$"$k$H$7$?$i!$C/$+$,8m$C$F$=$3$+$i%j%j!<%9%V%i%s%A$KJQ99$r%^!<%8(B +$B$7$F$7$^$&2DG=@-$K$D$$$F8!F$$7$F$*$/$Y$-$G$"$k!%$3$N>l9g$G$"$l$P!$ITE,@Z(B +$B$J%V%i%s%A$+$i$N%^!<%8$r6X;_$9$k%U%C%/$rMQ0U$9$k$3$H$GLdBj$r2sHr$9$k$3$H(B +$B$,$G$-$k!%(B -\subsection{Informal anarchy} +%\subsection{Informal anarchy} +\subsection{$BHs8x<0$J:.Mp(B} 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$B$D$N=8Cf%j%]%8%H%j(B} 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{$BJ#?t$N%V%i%s%A$G$N:n6H(B} 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{$B5!G=$K$h$k%V%i%s%A(B} 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{$B%j%j!<%9$N7R$,$j(B} 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$B%+!<%M%k%b%G%k(B} 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$B$N$_BP6&M-(Bpush$B%3%i%\%l!<%7%g%s(B} 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{$B6&F1:n6H$,%V%i%s%A4IM}$HD>LL$9$k$H$3$m(B} 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{$B6&M-$N5;=QE*B&LL(B} 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}$B$K$h$kHs8x<0$J6&M-(B} \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{$B3P$($F$*$/$Y$-(B2, 3$B$NE@(B} 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)$B%W%m%H%3%k$N;HMQ(B} \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$B$N(BURL$B$r$I$N$h$&$KFI$`$+(B} 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{$BMxMQCf$N%7%9%F%`8~$1$N(Bssh client$B$r8+$D$1$k(B} 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{$B%-!<%Z%"$N:n@.(B} 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{$BG'>Z%(!<%8%'%s%H$N;HMQ(B} 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{$B%5!<%P$N@5$7$$@_Dj(B} 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$B$G$N05=L$NMxMQ(B} 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$B$r;HMQ$7$?(BHTTP$B$G$N%5!<%S%9(B} \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$B%5!<%P@_Dj$N%A%'%C%/%j%9%H(B} 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$B$N4pK\E*$J@_Dj(B} 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{$B$I$3$,LdBj$H@.$jF@$k$+(B?} \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$B$N@_Dj(B} 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$B$D$N(BCGI$B%9%/%j%W%H$GJ#?t$N%j%]%8%H%j$r6&M-$9$k(B} 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{$B$I$N%j%]%8%H%j$rI=<($9$k$+L@<(E*$K;XDj$9$k(B} 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{$B%=!<%9%"!<%+%$%V$N%@%&%s%m!<%I(B} 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$B@_Dj%*%W%7%g%s(B} 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{$B8D!9$N%j%]%8%H%j$KFCM-$N%*%W%7%g%s(B} 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}$B%3%^%s%IFCM-$N%*%W%7%g%s(B} 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}$B%"%$%F%`$rDI2C$9$k@5$7$$(B\hgrc $B%U%!%$%k$rA*$V(B} 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: