Mercurial > hgbook
changeset 373:250ae1785828
finished collab.tex
author | Yoshiki Yazawa <yaz@honeyplanet.jp> |
---|---|
date | Wed, 17 Dec 2008 20:17:55 +0900 |
parents | bc32663d557e |
children | 32c932f185ed |
files | ja/collab.tex |
diffstat | 1 files changed, 136 insertions(+), 75 deletions(-) [+] |
line wrap: on
line diff
--- a/ja/collab.tex Mon Dec 08 18:19:04 2008 +0900 +++ b/ja/collab.tex Wed Dec 17 20:17:55 2008 +0900 @@ -1486,105 +1486,167 @@ %\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 -repository as I described with Apache above. I had already overcome -all of the problems I outlined with Apache, many of which are not -server-specific. As a result, I was fairly sure that my file and -directory permissions were good, and that my \sfilename{hgweb.cgi} -script was properly edited. +%To be exhaustive in my experiments, I tried configuring the +%increasingly popular \texttt{lighttpd} web server to serve the same +%repository as I described with Apache above. I had already overcome +%all of the problems I outlined with Apache, many of which are not +%server-specific. As a result, I was fairly sure that my file and +%directory permissions were good, and that my \sfilename{hgweb.cgi} +%script was properly edited. + +$BI.<T$N<B83$NCf$G$O!$(BApache$B$r;H$C$F%5!<%S%9$7$?$N$HF1$8%j%]%8%H%j$r?M5$$r(B +$B3MF@$7$D$D$"$k%&%'%V%5!<%P$G$"$k(B\texttt{lighttpd}$B$rMQ$$$F%5!<%S%9$9$k$3$H(B +$B$b;n$_$?!%(B Apache$B$K4X$9$kA4$F$NLdBjE@$r4{$K2r7h$7$F$$$?$,!$$=$NCf$NB?$/$O(B +$B%5!<%PFCM-$H$$$&$o$1$G$O$J$+$C$?!%7k2L$H$7$F!$%U%!%$%k$H%G%#%l%/%H%j$N%Q!<(B +$B%_%C%7%g%s@_Dj$,@5$7$$$3$H!$(B \sfilename{hgweb.cgi}$B%9%/%j%W%H$,@5$7$/@_Dj(B +$B$5$l$F$$$k$3$H$r3N?.$7$?!%(B -Once I had Apache running, getting \texttt{lighttpd} to serve the -repository was a snap (in other words, even if you're trying to use -\texttt{lighttpd}, you should read the Apache section). I first had -to edit the \texttt{mod\_access} section of its config file to enable -\texttt{mod\_cgi} and \texttt{mod\_userdir}, both of which were -disabled by default on my system. I then added a few lines to the end -of the config file, to configure these modules. +%Once I had Apache running, getting \texttt{lighttpd} to serve the +%repository was a snap (in other words, even if you're trying to use +%\texttt{lighttpd}, you should read the Apache section). I first had +%to edit the \texttt{mod\_access} section of its config file to enable +%\texttt{mod\_cgi} and \texttt{mod\_userdir}, both of which were +%disabled by default on my system. I then added a few lines to the end +%of the config file, to configure these modules. +$B$9$G$K(BApache$B$r;H$C$F$$$?$N$G!$(B\texttt{lighttpd}$B$G%j%]%8%H%j$N%5!<%S%9$r9T(B +$B$&$3$H$O$?$d$9$+$C$?!%!J$3$l$O(B\texttt{lighttpd}$B$r;H$C$F%5!<%S%9$r;n$_$k>l(B +$B9g$b(BApache$B$N%;%/%7%g%s$rFI$`I,MW$,$"$k$H$$$&$3$H$G$b$"$k!%!KI.<T$N%7%9%F(B +$B%`$G$O(B\texttt{mod\_cgi}$B$H(B\texttt{mod\_userdir}$B$,6&$KL58z$K@_Dj$5$l$F$$$?(B +$B$N$G!$$3$l$i$rM-8z$K$9$k$?$a$K!$$^$:@_Dj%U%!%$%k$N(B\texttt{mod\_access}$B%;(B +$B%/%7%g%s$rJT=8$9$kI,MW$,$"$C$?!%$=$N8e$G!$2<5-$N%b%8%e!<%k$rM-8z$K$9$k$?(B +$B$a$K!$@_Dj%U%!%$%k$NKvHx$K?t9T$rDI2C$7$?!%(B \begin{codesample2} userdir.path = "public_html" cgi.assign = ( ".cgi" => "" ) \end{codesample2} -With this done, \texttt{lighttpd} ran immediately for me. If I had -configured \texttt{lighttpd} before Apache, I'd almost certainly have -run into many of the same system-level configuration problems as I did -with Apache. However, I found \texttt{lighttpd} to be noticeably -easier to configure than Apache, even though I've used Apache for over -a decade, and this was my first exposure to \texttt{lighttpd}. +%With this done, \texttt{lighttpd} ran immediately for me. If I had +%configured \texttt{lighttpd} before Apache, I'd almost certainly have +%run into many of the same system-level configuration problems as I did +%with Apache. However, I found \texttt{lighttpd} to be noticeably +%easier to configure than Apache, even though I've used Apache for over +%a decade, and this was my first exposure to \texttt{lighttpd}. +$B$3$l$i$N@_Dj$r$9$k$@$1$G(B\texttt{lighttpd}$B$O$9$0$KF0:n$7$?!%(B Apache$B$h$jA0(B +$B$K(B\texttt{lighttpd}$B$r;n$7$F$$$?$i!$(BApache$B$GD>LL$7$?$h$&$JMM!9$J%7%9%F%`%l(B +$B%Y%k$N@_DjLdBj$KAx6x$7$F$$$?$K0c$$$J$$$,!$=i$a$F;H$&(B\texttt{lighttpd}$B$N@_(B +$BDj$NJ}$,!$$3$l$^$G(B10$BG/0J>e$K$o$?$C$F;H$C$F$-$?(BApache$B$N$=$l$h$j$bL@$i$+$K(B +$B4JC1$G$"$k$3$H$,J,$+$C$?!%(B %\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 -more than one without wracking yourself with multiple copies of the -same script, each with different names, a better choice is to use the -\sfilename{hgwebdir.cgi} script. +%The \sfilename{hgweb.cgi} script only lets you publish a single +%repository, which is an annoying restriction. If you want to publish +%more than one without wracking yourself with multiple copies of the +%same script, each with different names, a better choice is to use the +%\sfilename{hgwebdir.cgi} script. +\sfilename{hgweb.cgi}$B%9%/%j%W%H$K$O!$(B1$B$D$N%j%]%8%H%j$7$+8x3+$G$-$J$$$H$$(B +$B$&Lq2p$J@)8B$,$"$k!%(B 2$B$D0J>e$N%j%]%8%H%j$r8x3+$7$?$$>l9g$O!$F1$8%9%/%j%W(B +$B%H$rJL$NL>A0$G$$$/$D$bF0$+$9$N$G$O$J$/!$(B \sfilename{hgwebdir.cgi}$B%9%/%j%W(B +$B%H$r;H$&$N$,NI$$$@$m$&!%(B -The procedure to configure \sfilename{hgwebdir.cgi} is only a little -more involved than for \sfilename{hgweb.cgi}. First, you must obtain -a copy of the script. If you don't have one handy, you can download a -copy from the master Mercurial repository at -\url{http://www.selenic.com/repo/hg/raw-file/tip/hgwebdir.cgi}. +%The procedure to configure \sfilename{hgwebdir.cgi} is only a little +%more involved than for \sfilename{hgweb.cgi}. First, you must obtain +%a copy of the script. If you don't have one handy, you can download a +%copy from the master Mercurial repository at +%\url{http://www.selenic.com/repo/hg/raw-file/tip/hgwebdir.cgi}. +\sfilename{hgwebdir.cgi}$B$N@_Dj$N<j=g$O(B\sfilename{hgweb.cgi}$B$h$j$b$o$:$+$K(B +$B9~$_F~$C$F$$$k$@$1$@!%<j6a$J$H$3$m$K%9%/%j%W%H$,$J$1$l$P!$(BMercurial$B$N%^%9(B +$B%?!<%j%]%8%H%j(B +\url{http://www.selenic.com/repo/hg/raw-file/tip/hgwebdir.cgi}$B$+$i%9%/%j(B +$B%W%H$rF~<j$G$-$k!%(B -You'll need to copy this script into your \dirname{public\_html} -directory, and ensure that it's executable. +%You'll need to copy this script into your \dirname{public\_html} +%directory, and ensure that it's executable. +$B$3$N%9%/%j%W%H$r(B\dirname{public\_html}$B%G%#%l%/%H%j$K%3%T!<$7!$<B9T%Q!<%_%C(B +$B%7%g%s$rM?$($k!%(B \begin{codesample2} cp .../hgwebdir.cgi ~/public_html chmod 755 ~/public_html ~/public_html/hgwebdir.cgi \end{codesample2} -With basic configuration out of the way, try to visit -\url{http://myhostname/~myuser/hgwebdir.cgi} in your browser. It -should display an empty list of repositories. If you get a blank -window or error message, try walking through the list of potential -problems in section~\ref{sec:collab:wtf}. +%With basic configuration out of the way, try to visit +%\url{http://myhostname/~myuser/hgwebdir.cgi} in your browser. It +%should display an empty list of repositories. If you get a blank +%window or error message, try walking through the list of potential +%problems in section~\ref{sec:collab:wtf}. +$BDL>o$N@_Dj$N>l9g!$%V%i%&%6$G(B\url{http://myhostname/~myuser/hgwebdir.cgi} +$B$r3+$/$H!$Cf?H$,6u$N%j%]%8%H%j$rI=<($9$k$O$:$@!%%&%#%s%I%&<+BN$,6u$@$C$?(B +$B$j!$%(%i!<%a%C%;!<%8$,I=<($5$l$k>l9g$O!$%;%/%7%g%s(B~\ref{sec:collab:wtf} +$B$NLdBj%j%9%H$r;2>H$7$F$[$7$$!%(B -The \sfilename{hgwebdir.cgi} script relies on an external -configuration file. By default, it searches for a file named -\sfilename{hgweb.config} in the same directory as itself. You'll need -to create this file, and make it world-readable. The format of the -file is similar to a Windows ``ini'' file, as understood by Python's -\texttt{ConfigParser}~\cite{web:configparser} module. +%The \sfilename{hgwebdir.cgi} script relies on an external +%configuration file. By default, it searches for a file named +%\sfilename{hgweb.config} in the same directory as itself. You'll need +%to create this file, and make it world-readable. The format of the +%file is similar to a Windows ``ini'' file, as understood by Python's +%\texttt{ConfigParser}~\cite{web:configparser} module. +\sfilename{hgwebdir.cgi}$B$O30It$N@_Dj%U%!%$%k$r;HMQ$7$F$$$k!%%G%U%)%k%H$G(B +$B$OF1$8%G%#%l%/%H%jFb$N(B\sfilename{hgweb.config}$B$H$$$&%U%!%$%k$r;2>H$9$k!%(B +$B$3$N%U%!%$%k$r:n@.$7!$A4$F$N%f!<%6$+$iFI$a$k$h$&$K@_Dj$9$k!%(B +$B$3$N%U%!%$%k$O(BPython$B$N(B\texttt{ConfigParser}~\cite{web:configparser}$B$G=h(B +$BM}$G$-$k$h$&(BWindows$B$N(B``ini''$B%U%!%$%k$H;w$?7A<0$K$J$C$F$$$k!%(B -The easiest way to configure \sfilename{hgwebdir.cgi} is with a -section named \texttt{collections}. This will automatically publish -\emph{every} repository under the directories you name. The section -should look like this: +%The easiest way to configure \sfilename{hgwebdir.cgi} is with a +%section named \texttt{collections}. This will automatically publish +%\emph{every} repository under the directories you name. The section +%should look like this: +\sfilename{hgwebdir.cgi}$B$N:G$b4JC1$J@_DjJ}K!$O!$(B\texttt{collections}$B%;%/(B +$B%7%g%s$rJT=8$9$k$3$H$G$"$k!%$3$l$O<+F0E*$K;XDj$7$?%G%#%l%/%H%j0J2<$N(B +\emph{$BA4$F$N(B}$B%j%]%8%H%j$r8x3+$9$k!%$3$N%;%/%7%g%s$O<!$N$h$&$K$J$C$F$$$k!'(B \begin{codesample2} [collections] /my/root = /my/root \end{codesample2} -Mercurial interprets this by looking at the directory name on the -\emph{right} hand side of the ``\texttt{=}'' sign; finding -repositories in that directory hierarchy; and using the text on the -\emph{left} to strip off matching text from the names it will actually -list in the web interface. The remaining component of a path after -this stripping has occurred is called a ``virtual path''. +%Mercurial interprets this by looking at the directory name on the +%\emph{right} hand side of the ``\texttt{=}'' sign; finding +%repositories in that directory hierarchy; and using the text on the +%\emph{left} to strip off matching text from the names it will actually +%list in the web interface. The remaining component of a path after +%this stripping has occurred is called a ``virtual path''. +Mercurial$B$O(B``\texttt{=}''$B5-9f$N(B\emph{$B1&B&(B}$B$N%G%#%l%/%H%jL>$r;2>H$7$F!$%G%#(B +$B%l%/%H%j3,AXFb$N%j%]%8%H%j$rC5$9!%8+$D$+$C$?;~$O!$%j%]%8%H%j$N%Q%9$+$i(B +\emph{$B:8B&(B}$B$NJ8;zNs$H%^%C%A$9$kItJ,$r:o$j!$<B:]$K%&%'%V%$%s%?%U%'!<%9$KI=(B +$B<($5$l$k%Q%9J8;zNs$r:n$k!%:o=|8e$N%Q%9$r(B``$B2>A[%Q%9(B''$B$H8F$V!%(B -Given the example above, if we have a repository whose local path is -\dirname{/my/root/this/repo}, the CGI script will strip the leading -\dirname{/my/root} from the name, and publish the repository with a -virtual path of \dirname{this/repo}. If the base URL for our CGI -script is \url{http://myhostname/~myuser/hgwebdir.cgi}, the complete -URL for that repository will be -\url{http://myhostname/~myuser/hgwebdir.cgi/this/repo}. +%Given the example above, if we have a repository whose local path is +%\dirname{/my/root/this/repo}, the CGI script will strip the leading +%\dirname{/my/root} from the name, and publish the repository with a +%virtual path of \dirname{this/repo}. If the base URL for our CGI +%script is \url{http://myhostname/~myuser/hgwebdir.cgi}, the complete +%URL for that repository will be +%\url{http://myhostname/~myuser/hgwebdir.cgi/this/repo}. +$B>e$NNc$G!$(BCGI$B%9%/%j%W%H$O!$%m!<%+%k%Q%9$,(B\dirname{/my/root/this/repo}$B$G$"(B +$B$k%j%]%8%H%j$KBP$7$F(B\dirname{/my/root}$B$r<h$j=|$-!$(B\dirname{this/repo}$B$H$$(B +$B$&2>A[%Q%9$r:n@.$7!$8x3+$9$k!%$b$7(BCGI$B%9%/%j%W%H$N%Y!<%9(BURL$B$,(B +\url{http://myhostname/~myuser/hgwebdir.cgi}$B$@$H$9$k$H!$%j%]%8%H%j$N40A4(B +$B$J(BURL$B$O(B\url{http://myhostname/~myuser/hgwebdir.cgi/this/repo}$B$H$J$k!%(B -If we replace \dirname{/my/root} on the left hand side of this example -with \dirname{/my}, then \sfilename{hgwebdir.cgi} will only strip off -\dirname{/my} from the repository name, and will give us a virtual -path of \dirname{root/this/repo} instead of \dirname{this/repo}. +%If we replace \dirname{/my/root} on the left hand side of this example +%with \dirname{/my}, then \sfilename{hgwebdir.cgi} will only strip off +%\dirname{/my} from the repository name, and will give us a virtual +%path of \dirname{root/this/repo} instead of \dirname{this/repo}. +$B$3$NNc$N:8JU$N(B\dirname{/my/root}$B$r(B\dirname{/my}$B$GCV$-49$($k$H(B +\sfilename{hgwebdir.cgi}$B$O(B\dirname{/my}$B$@$1$r%j%]%8%H%jL>$+$i<h$j=|$-!$2>(B +$BA[%Q%9$H$7$F(B\dirname{this/repo}$B$G$O$J$/(B\dirname{root/this/repo}$B$r:n$k!%(B -The \sfilename{hgwebdir.cgi} script will recursively search each -directory listed in the \texttt{collections} section of its -configuration file, but it will \texttt{not} recurse into the -repositories it finds. +%The \sfilename{hgwebdir.cgi} script will recursively search each +%directory listed in the \texttt{collections} section of its +%configuration file, but it will \texttt{not} recurse into the +%repositories it finds. +\sfilename{hgwebdir.cgi}$B%9%/%j%W%H$O!$@_Dj%U%!%$%k$N(B\texttt{collections} +$B%;%/%7%g%s$K=q$+$l$?%G%#%l%/%H%j$r:F5"E*$K%5!<%A$9$k!%$3$N%9%/%j%W%H$O8+(B +$B$D$1$?%j%]%8%H%j$NCf$O%5!<%A(B\texttt{$B$7$J$$(B}$B!%(B -The \texttt{collections} mechanism makes it easy to publish many -repositories in a ``fire and forget'' manner. You only need to set up -the CGI script and configuration file one time. Afterwards, you can -publish or unpublish a repository at any time by simply moving it -into, or out of, the directory hierarchy in which you've configured -\sfilename{hgwebdir.cgi} to look. +%The \texttt{collections} mechanism makes it easy to publish many +%repositories in a ``fire and forget'' manner. You only need to set up +%the CGI script and configuration file one time. Afterwards, you can +%publish or unpublish a repository at any time by simply moving it +%into, or out of, the directory hierarchy in which you've configured +%\sfilename{hgwebdir.cgi} to look. +\texttt{collections}$B%a%+%K%:%`$K$h$C$FJ#?t$N%j%]%8%H%j$r4JC1$K8x3+$9$k$3(B +$B$H$,$G$-$k!%(BCGI$B%9%/%j%W%H$H@_Dj%U%!%$%k$rJT=8$9$k$N$O:G=i$N0l2s$@$1$G$h(B +$B$/!$%j%]%8%H%j$r(B\sfilename{hgwebdir.cgi}$B$NC5:w$9$k%G%#%l%/%H%j3,AXFb$K0\(B +$BF0$9$l$P8x3+$K!$3,AXFb$+$i30$;$PHs8x3+$K@_Dj$G$-$k!%(B + %\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} @@ -1799,7 +1861,6 @@ %Some of the items in the \rcsection{web} section of a \hgrc\ file are %only for use with the \hgcmd{serve} command. - \hgrc\ $B%U%!%$%k$N(B\rcsection{web}$B%;%/%7%g%s$N9`L\$O(B\hgcmd{serve}$B%3%^%s%I(B $B$G$N$_MQ$$$i$l$k!%(B