hgbook

annotate ja/collab.tex @ 890:2887b61fa4fe

Change fields to fieldsets in the Comment admin model. The 'date'
field isn't working properly for an unknown reason, so it has been
removed from the interface temporarily.
author dukebody <dukebody@gmail.com>
date Sun Oct 11 21:12:46 2009 +0200 (2009-10-11)
parents
children
rev   line source
foozy@708 1 \chapter{Collaborating with other people}
foozy@708 2 \label{cha:collab}
foozy@708 3
foozy@708 4 Mercurial $B$O40A4$KHsCf1{=8LsE*$J%D!<%k$G$"$k$?$a!"(B
foozy@708 5 $BMxMQ<TAj8_$NO"7H$K4X$7$F$O2?$i@)Ls$r2]$9$3$H$r$7$^$;$s!#(B
foozy@708 6 $B$G$9$,!"(B
foozy@708 7 $BJ,;69=@.4IM}$KFk@w$_$,L5$$$N$G$"$l$P!"(B
foozy@708 8 $B$$$/$D$+$N%D!<%k$d;HMQNc$rCN$C$F$*$/$3$H$O!"(B
foozy@708 9 $BBEEv$J:n6H<j=g$N%b%G%k$r9M$($k:]$KLr$KN)$A$^$9!#(B
foozy@708 10
foozy@708 11 \section{Mercurial's web interface}
foozy@708 12
foozy@708 13 Mercurial $B$O!"(B
foozy@708 14 $B$$$/$D$+$NM-MQ$J5!G=$rDs6!$9$k!"(B
foozy@708 15 $B6/NO$J%&%'%V%$%s%?%U%'!<%9$r;}$C$F$$$^$9!#(B
foozy@708 16
foozy@708 17 $BBPOCE*$JMxMQ$N>l9g!"(B
foozy@708 18 $B%&%'%V%$%s%?%U%'!<%97PM3$G#1$D$J$$$7J#?t$N%j%]%8%H%j$N1\Mw$,$G$-$^$9!#(B
foozy@708 19 $B%j%]%8%H%jMzNr$N;2>H$d!"(B
foozy@708 20 $B8D!9$NJQ99!J%3%_%C%H%a%C%;!<%8$d:9J,!K$N8!>Z!"(B
foozy@708 21 $B$*$h$S3F%G%#%l%/%H%j$d%U%!%$%k$NFbMF$N;2>H!"(B
foozy@708 22 $B$H$$$C$?$3$H$,$G$-$^$9!#(B
foozy@708 23
foozy@708 24 $BDLCN$K4X$7$F$b!"(B
foozy@708 25 $B%&%'%V%$%s%?%U%'!<%9$O!"(B
foozy@708 26 $B%j%]%8%H%j$K$*$1$kJQ99$K4X$9$k(B RSS $BG[?.5!G=$rDs6!$7$^$9!#(B
foozy@708 27 $B$*5$$KF~$j$N%D!<%k$r;H$C$F%j%]%8%H%j$r(B``$B9XFI(B''$B$9$k$3$H$b$G$-$^$9$7!"(B
foozy@708 28 $B%j%]%8%H%j$K$*$1$k3hF0>u67$N<+F0DLCN$rB(:B$K9T$&$3$H$b$G$-$^$9!#(B
foozy@708 29 $B%j%]%8%H%jDs6!<TB&$K$*$1$kDI2C@_Dj$,ITMW$G$"$k$3$H$+$i!"(B
foozy@708 30 $BI.<T<+?H$O!"(B
foozy@708 31 $BJQ99DLCN$N%a!<%j%s%0%j%9%H$h$j$b!"(B
foozy@708 32 $B!V(BRSS $BG[?.$r9XFI!W$9$k%b%G%k$NJ}$,Hs>o$KJXMx$@$H;W$$$^$9!#(B
foozy@708 33
foozy@708 34 $B%&%'%V%$%s%?%U%'!<%9$K$h$j!"(B
foozy@708 35 $B1s3V%f!<%6$K$h$k%j%]%8%H%j$NJ#@=$dJQ99$N<h$j9~$_!"(B
foozy@708 36 $B$*$h$S!J%5!<%PB&$G$=$l$r5v2D$7$F$$$k$J$i$P!K(B
foozy@708 37 $BJQ99$N<uM}$,2DG=$K$J$j$^$9!#(B
foozy@708 38 Mercurial $B$N(B HTTP $B%H%s%M%j%s%0%W%m%H%3%k$G$O!"(B
foozy@708 39 $B@Q6KE*$K%G!<%?$N05=L$r9T$$$^$9$N$G!"(B
foozy@708 40 $B69$$BS0h$N%M%C%H%o!<%/@\B37PM3$G$b8zN($h$/5!G=$7$^$9!#(B
foozy@708 41
foozy@708 42 $B%&%'%V%$%s%?%U%'!<%9$r?($C$F$_$k:G$b4JC1$JJ}K!$O!"(B
foozy@708 43 Mercurial $B$N%^%9%?%j%]%8%H%j$G$"$k(B
foozy@708 44 \url{http://www.selenic.com/repo/hg?style=gitweb} $B$N$h$&$J!"(B
foozy@708 45 $B4{B8$N%j%]%8%H%j$K%&%'%V%V%i%&%6$G@\B3$7$F$_$k$3$H$G$9!#(B
foozy@708 46
foozy@708 47 $B<+?H$G%j%]%8%H%j$N%&%'%V%$%s%?%U%'!<%9$rDs6!$9$k$3$H$K6=L#$,$"$k>l9g!"(B
foozy@708 48 Mercurial $B$K$O#2$D$NA*Br;h$,$"$j$^$9!#(B
foozy@708 49 $B#1$D$O(B \hgcmd{serve} $B%3%^%s%I$r;HMQ$9$k$b$N$G!"(B
foozy@708 50 $BC;4|4V$N(B``$B7ZNL$J(B''$B2TF0$N>l9g$K:GE,$G$9!#(B
foozy@708 51 $B$3$N%3%^%s%I$NMxMQ$K4X$9$k>\:Y$O!"(B
foozy@708 52 \ref{sec:collab:serve}~$B@a$r;2>H$7$F$/$@$5$$!#(B
foozy@708 53 $BD94|E*3n$D>o;~MxMQ2DG=$J2TF0$rK>$`>l9g$O!"(B
foozy@708 54 Mercurial $B$KAH$_9~$^$l$F$$$k(B
foozy@708 55 CGI $B!J(BCommon Gateway Interface$B!K5!G=$,!"(B
foozy@708 56 $B0lHLE*$JA4$F$N%&%'%V%5!<%P$GMxMQ2DG=$G$9!#(B
foozy@708 57 CGI $B@_Dj$N>\:Y$O!"(B
foozy@708 58 \ref{sec:collab:cgi}~$B@a$r;2>H$7$F$/$@$5$$!#(B
foozy@708 59
foozy@708 60 \section{Collaboration models}
foozy@708 61
foozy@708 62 $BE,@Z$J=@Fp@-$r;}$D%D!<%k$r;H$&$3$H$G!"(B
foozy@708 63 $B:n6H<j=g$N7hDj$O!"(B
foozy@708 64 $B5;=QE*$JLdBj$+$iAH?%9)3XE*!J(Bsocial engineering$B!K$JLdBj$X$HJQ$o$j$^$9!#(B
foozy@708 65 Mercurial $B$O!"(B
foozy@708 66 $B%W%m%8%'%/%H$K$*$1$k:n6H<j=g$N9=@.$K4X$7$FKX$I@)8B$r2]$5$J$$$?$a!"(B
foozy@708 67 $B8DJL$NMWK>$K1h$C$?%b%G%k$N@_Dj$H1?MQ$OMxMQ<T<!Bh$H$J$j$^$9!#(B
foozy@708 68
foozy@708 69 \subsection{Factors to keep in mind}
foozy@708 70
foozy@708 71 $B$$$:$l$N%b%G%k$K$*$$$F$b?4F@$F$*$/$Y$-:G$b=EMW$JE@$O!"(B
foozy@708 72 $B$=$l$rMxMQ$9$k?M!9$NMWK>$HG=NO$K$I$l$@$1E,9g$9$k$+!"(B
foozy@708 73 $B$H$$$&$3$H$G$9!#(B
foozy@708 74 $B$3$l$O<+L@$K8+$($k$+$b$7$l$^$;$s$,!"(B
foozy@708 75 $B$[$s$N>/$7$N4V$G$b$3$N$3$H$rK:$l$F$O$$$1$^$;$s!#(B
foozy@708 76
foozy@708 77 $BI.<T$O0JA0!"40`z$H;W$($k:n6H<j=g%b%G%k$r9=C[$7$?$N$G$9$,!"(B
foozy@708 78 $B3+H/%A!<%`$K>/$J$+$i$LNL$N6C$-$HITOB$r$b$?$i$7$^$7$?!#(B
foozy@708 79 $BJ#;($J%V%i%s%A72$,I,MW$JM}M3$H!"(B
foozy@708 80 $B$=$l$i$N4V$K$*$1$kJQ99$N<h$j07$$$K$D$$$F@bL@$7$h$&$H;n$_$^$7$?$,!"(B
foozy@708 81 $B%A!<%`$N%a%s%P!<$N2??M$+$,0[$r>'$($F$-$?$N$G$9!#(B
foozy@708 82 $BH`$i$OAoL@$J?MC#$G$7$?$,!"(B
foozy@708 83 $B:n6H$K$*$1$k@)Ls$KCm0U$rJ'$&(B\footnote{$BLuCm(B: $B!V%k!<%k$r<i$k!W$N0U$+!)(B}$B$3$H$b!"(B
foozy@708 84 $BI.<T$,>'$($k%b%G%k$N:YIt$K$*$1$k@)Ls$N=EMW@-$K8~$-9g$*$&$H$b$7$^$;$s$G$7$?!#(B
foozy@708 85
foozy@708 86 $B6a$$>-Mh$N<R2qE*!&5;=QE*$JLdBj$+$iL\$rGX$1$J$$$G$/$@$5$$!#(B
foozy@708 87 $B$I$s$J7W2h$r<B;\$7$h$&$H$b!"(B
foozy@708 88 $B4V0c$$$dLdBj$,H/@8$7$?>l9g$KHw$($k$Y$-$G$9!#(B
foozy@708 89 $BM=A[2DG=$JLdBj$KBP$7$F!"(B
foozy@708 90 $B<+F0E*$JKI8f$dB(;~I|5l$N$?$a$N;EAH$_$NDI2C$r9MN8$7$^$7$g$&!#(B
foozy@708 91 $BNc$($P!"(B
foozy@708 92 $B%j%j!<%98~$1$G$O$J$$JQ99$N$?$a$N%V%i%s%A$r:n@.$7$h$&$H$7$?>l9g!"(B
foozy@708 93 $BB>$N:n6H<T$,%j%j!<%9MQ%V%i%s%A$K$&$C$+$j%^!<%8$7$F$7$^$&2DG=@-$K$D$$$F!"(B
foozy@708 94 $BAa$$;~E@$G9MN8$7$?$[$&$,NI$$$G$7$g$&!#(B
foozy@708 95 $BITE,@Z$J%V%i%s%A$+$i%A%'%s%8%;%C%H$r%^!<%8$5$;$J$$%U%C%/$r5-=R$9$k$3$H$G!"(B
foozy@708 96 $B$3$NLdBj$K4X$7$F$O2sHr2DG=$G$9!#(B
foozy@708 97
foozy@708 98 \subsection{Informal anarchy}
foozy@708 99
foozy@708 100 $B;}B32DG=@-$NE@$+$i(B
foozy@708 101 ``$B2?$G$b%"%j(B''$B$J$d$jJ}$O$*A&$a$7$^$;$s$,!"(B
foozy@708 102 $B4JC1$KGD0.$9$k$3$H$,$G$-$k%b%G%k$G$"$j!"(B
foozy@708 103 $B$$$/$D$+$NFC0[$J>u67$G$OHs>o$KNI$/5!G=$7$^$9!#(B
foozy@708 104
foozy@708 105 $B0l$D$NNc$H$7$F!"(B
foozy@708 106 $BB?$/$N%W%m%8%'%/%H$,!"(B
foozy@708 107 $BD>@\2q$&$3$H$N5)$J<e$/$^$H$^$C$?6(NO<T%0%k!<%W$r;}$F$$$k(B
foozy@708 108 As one example, many projects have a loose-knit group of collaborators
foozy@708 109 who rarely physically meet each other.
foozy@708 110 $B;~@^$N(B``$BA4NO<@Av(B''$B!J(Bsprints$B!K(B\footnote{$BLuCm(B:
foozy@708 111 $B%*%U2q$H$+$G$9$M!#(B}$B$r@_$1$k$3$H$G!"(B
foozy@708 112 $B5wN%$K$h$C$F3V$F$i$l$?:n6H$KBG$A>!$D%0%k!<%W$b$"$j$^$9!#(B
foozy@708 113 $BA4NO<@Av$N5!2q$G$O!"(B
foozy@708 114 $BB?$/$N?M$,6&$KF1$8>l=j!J2q<R$N2q5D<<$d%[%F%k$N2q5D<<$NN`!K(B
foozy@708 115 $B$K=8$^$j!"(B
foozy@708 116 $B?tF|DxEY$rJD$8$3$b$C$F2a$4$7!"(B
foozy@708 117 $B>/NL$N%W%m%8%'%/%H$K=8Cf$7$F%O%C%-%s%0$r9T$$$^$9!#(B
foozy@708 118
foozy@708 119 $BA4NO<@Av$O!"(B
foozy@708 120 $BBg3]$+$j$J%5!<%P%$%s%U%i$rI,MW$H$7$J$$(B
foozy@708 121 \hgcmd{serve} $B%3%^%s%I$rMxMQ$9$k$N$K$A$g$&$INI$$5!2q$G$9!#(B
foozy@708 122 $B0J2<$N(B\ref{sec:collab:serve}~$B@a$rFI$`$3$H$G!"(B
foozy@708 123 $B$9$0$K$G$b(B \hgcmd{serve} $B$r;H$$;O$a$k$3$H$,$G$-$^$9!#(B
foozy@708 124 $B$=$&$7$?$J$i!"(B
foozy@708 125 $B<~0O$N?MC#$K%5!<%P$r<B9TCf$G$"$k$3$H$rEA$(!"(B
foozy@708 126 $B%$%s%9%?%s%H%a%C%;%s%8%c!<Ey$r;HMQ$7$F(B URL $B$rAw$l$P!"(B
foozy@708 127 $B6&F1:n6H$9$k>e$G$N@^$jJV$7COE@$^$GC)$jCe$-$^$7$?!#(B
foozy@708 128 $B%V%i%&%6$K65$($i$l$?(B URL $B$rF~NO$9$l$P!"(B
foozy@708 129 $BH`$i$O$9$0$K$G$b$"$J$?$NJQ99$r%l%S%e!<$9$k$3$H$,$G$-$^$9$7!"(B
foozy@708 130 $B$"$J$?$+$i%P%0%U%#%C%/%9$rF~<j$7$F$=$l$r8!>Z$7$?$j!"(B
foozy@708 131 $B?75!G=$,4^$^$l$k%V%i%s%A$rJ#@=$7$F$=$l$r;n$7$F$_$?$j$9$k$3$H$,$G$-$^$9!#(B
foozy@708 132
foozy@708 133 $B$=$N>l8B$j$N$3$N$h$&$J7A<0$G;v$r?J$a$k$3$H$NMxE@$H7gE@$O!"(B
foozy@708 134 $B$"$J$?$K$h$kJQ99$NB8:_$H!"$I$3$G%"%/%;%92DG=$+$rCN$k?M$@$1$,!"(B
foozy@708 135 $B$=$l$r;2>H$9$k$3$H$,$G$-$k!"$H$$$&E@$K$"$j$^$9!#(B
foozy@708 136 $B$3$N$h$&$JHs8x<0$J<jK!$O!"(B
foozy@708 137 $BJ#?t$N0[$J$k%j%]%8%H%j$+$i$N<h$j9~$_$,3F<+$KMW5a$5$l$k$?$a!"(B
foozy@708 138 $B?t?M0J>e$KBP$7$F$OC1=c$K5,LO$N3HBg$,$G$-$^$;$s!#(B
foozy@708 139
foozy@708 140 \subsection{A single central repository}
foozy@708 141
foozy@708 142 $B>.5,LO$J%W%m%8%'%/%H$K$*$$$F!"(B
foozy@708 143 $BCf1{=8LsE*$J9=@.4IM}%D!<%k$+$i$N0\9T$9$k:G$b4JC1$JJ}K!$O!"(B
foozy@708 144 $BC10l$N6&M-%j%]%8%H%j$r7PM3$7$FJQ99$N$d$j<h$j$r$9$k!"(B
foozy@708 145 $B$H$$$&$b$N$G$9!#(B
foozy@708 146 $B$3$NBN@)$O!"(B
foozy@708 147 $B$h$jLn?4E*$J:n6H<j=gBN7O$N$?$a$N:G$b4pK\E*$J(B``$B9=@.MWAG(B''$B$G$b$"$j$^$9!#(B
foozy@708 148
foozy@708 149 $B3+H/<T!J(Bcontributor$B!K$O!"(B
foozy@708 150 $B6&M-%j%]%8%H%j$NJ#@=$r9T$&$3$H$G:n6H$r3+;O$7$^$9!#(B
foozy@708 151 $BI,MW$J;~$K$$$D$G$bJQ99$N<h$j9~$_$r9T$($^$9$7!"(B
foozy@708 152 $B3+H/<T$N2??M$+$O!JA40w$G$b2D!K!"(B
foozy@708 153 $B30It$K8x3+2DG=$K$J$C$?:]$KJQ99$r6&M-%j%]%8%H%j$KH?1G$5$;$k8"8B$r;}$A$^$9!#(B
foozy@708 154
foozy@708 155 $B$3$N%b%G%k$G$"$C$F$b!"(B
foozy@708 156 $B6&M-%j%]%8%H%j$r7PM3$;$:$K$*8_$$$NJQ99$rD>@\(B \hgcmd{pull} $B$9$k$3$H$O!"(B
foozy@708 157 $B3+H/<T$K$H$C$F$O0U5A$N$"$k$3$H$G$9!#(B
foozy@708 158 $BNc$($P!"(B
foozy@708 159 $B;CDjE*$J%P%0=$@5$r9T$C$?$b$N$N!"(B
foozy@708 160 $B6&M-%j%]%8%H%j$K$=$N=$@5$r8x3+$7$?>l9g$K!"(B
foozy@708 161 $B$=$N=$@5$r<h$j9~$s$@B>$N3+H/<T$N:n6H$K;Y>c$r$-$?$962$l$,$"$k!"(B
foozy@708 162 $B$H$$$&>l9g$r9M$($F$_$^$7$g$&!#(B
foozy@708 163 $B%P%0=$@5$r4^$`<+J,$N%j%]%8%H%j$+$i0l;~E*$J%j%]%8%H%j$rJ#@=$7!"(B
foozy@708 164 $BJ#@=@h$G=$@5FbMF$r8!>Z$7$F$b$i$($k$h$&$KB>$N3+H/<T$K$*4j$$$9$k$3$H$G!"(B
foozy@708 165 $B@x:_E*$JB;32$rDc8:$9$k$3$H$,$G$-$^$9!#(B
foozy@708 166 $B$3$N$h$&$K$9$k$3$H$G!"(B
foozy@708 167 $B@x:_E*$J4m81@-$r;}$DJQ99$G$"$C$F$b!"(B
foozy@708 168 $B4JC1$J8!>Z$,:Q$`$^$G$O8x3+$5$l$J$$$h$&$K$9$k$3$H$,$G$-$^$9!#(B
foozy@708 169
foozy@708 170 $B$3$N<o$N$d$j<h$j$N>l9g$O!"(B
foozy@708 171 $B6&M-%j%]%8%H%j$X$N0BA4$JJQ99H?1G$N$?$a$K(B
foozy@708 172 \command{ssh} $B%W%m%H%3%k$r;HMQ$9$k$N$,0lHLE*$G$9(B
foozy@708 173 $B!J(B\ref{sec:collab:ssh}~$B@a;2>H!K!#(B
foozy@708 174 $BFI$_=P$7@lMQ%j%]%8%H%j$r!"(B
foozy@708 175 CGI $B$r;HMQ$7$F(B HTTP $B7PM3$G8x3+$9$k$3$H$b2DG=$G$9(B
foozy@708 176 $B!J(B\ref{sec:collab:cgi}~$B@a;2>H!K!#(B
foozy@708 177 $B%j%]%8%H%j$X$NJQ99H?1G$,I,MW$J$$>l9g$d!"(B
foozy@708 178 $B%j%]%8%H%j$NMzNr$r%&%'%V%V%i%&%67PM3$G;2>H$7$?$$>l9g$K$O!"(B
foozy@708 179 HTTP $B7PM3$G$N8x3+$G==J,%K!<%:$,K~$?$5$l$^$9!#(B
foozy@708 180
foozy@708 181 \subsection{Working with multiple branches}
foozy@708 182
foozy@708 183 $B0lDj0J>e$N5,LO$r;}$D%W%m%8%'%/%H$K$*$$$F$O!"(B
foozy@708 184 $B:n6H$N?JE8$,F1;~$KJ#?t$N!VA0@~!W$G9T$o$l$k$3$H$O<+A3$J@.$j9T$-$G$9!#(B
foozy@708 185 $B%=%U%H%&%'%"3+H/$N>l9g!"(B
foozy@708 186 $B$I$N%W%m%8%'%/%H$G$b!"(B
foozy@708 187 $B0lDj4|4V$4$H$K8x<0%j%j!<%9$r9T$&$N$,0lHLE*$G$9!#(B
foozy@708 188 $B3F%j%j!<%9$O:G=i$N8x3+$N8e$K!"(B
foozy@708 189 $B0lDj4|4V$N(B``$BJ]<i>uBV(B''$B!J(Bmaintenance mode$B!K$H$J$k$3$H$,$"$j$^$9!#(B
foozy@708 190 $BJ]<i%j%j!<%9$G$O%P%0=$@5$N$_$r07$$!"(B
foozy@708 191 $B?75,5!G=$K$D$$$F$O<h$j07$o$J$$$N$,DLNc$G$9!#(B
foozy@708 192 $B$3$l$iJ]<i%j%j!<%9$HJ?9T$7$F!"(B
foozy@708 193 $B!J>l9g$K$h$C$F$OJ#?t$N!K>-Mh$N%j%j!<%9$K8~$1$?3+H/$,?J9T$7$^$9!#(B
foozy@708 194 $BJ}8~@-$N>/$70[$J$k!"$3$l$i?J9TCf$N8D!9$N3+H/$r;X$9$N$K!"(B
foozy@708 195 $B0lHLE*$K(B``$B%V%i%s%A(B''$B$H$$$&I=8=$r;H$$$^$9!#(B
foozy@708 196
foozy@708 197 Mercurial $B$OFC$K!"(B
foozy@708 198 $BJ#?t$N0[$J$k%V%i%s%A$rF1;~$K4IM}$9$k$3$H$KE,$7$F$$$^$9!#(B
foozy@708 199 $B$=$l$>$l$N(B``$B3+H/;X8~(B''$B$4$H$K!"(B
foozy@708 200 $BJL!9$N6&M-MQ%j%]%8%H%j$rMQ0U$9$k$3$H$G!"(B
foozy@708 201 $BI,MW$K$J$kETEY!"(B
foozy@708 202 $B$"$k%j%]%8%H%j$+$iJL$N%j%]%8%H%j$X$N%^!<%8$r9T$($PNI$$$N$G$9!#(B
foozy@708 203 $B3F%j%]%8%H%j$O8_$$$KFHN)$7$F$$$^$9$+$i!"(B
foozy@708 204 $BC/$+$,L@<(E*$K%^!<%8$7$J$$8B$j$O(B
foozy@708 205 $B3+H/%V%i%s%A$K$*$1$kIT0BDj$JJQ99$,!"(B
foozy@708 206 $B0BDjHG$N$?$a$N%V%i%s%A$K1F6A$rM?$($k$3$H$O$"$j$^$;$s!#(B
foozy@708 207
foozy@708 208 $B%V%i%s%A$4$H$K%j%]%8%H%j$rMQ0U$9$k8/$jJ}$N<B:]$NNc$r0J2<$K<($7$^$9!#(B
foozy@708 209 $BCf1{$N%5!<%P$K(B``$B%a%$%s%V%i%s%A(B''$B$,$"$k$b$N$H$7$^$9!#(B
foozy@708 210
foozy@708 211 \interaction{branching.init}
foozy@708 212
foozy@708 213 $B3+H/<T$O%a%$%s%V%i%s%A$+$iJ#@=$7!"(B
foozy@708 214 $BJQ99!"JQ99$N%F%9%H!"%3%_%C%H$N8e$K!"(B
foozy@708 215 $BJQ99$r%a%$%s%V%i%s%A$N%j%]%8%H%j$KH?1G$7$^$9!#(B
foozy@708 216
foozy@708 217 $B%a%$%s%V%i%s%A$,%j%j!<%9$N%^%$%k%9%H!<%s$KC#$7$?$J$i$P!"(B
foozy@708 218 $B%^%$%k%9%H!<%s$H$J$k%j%S%8%g%s$K(B
foozy@708 219 \hgcmd{tag} $B%3%^%s%I$G1JB3E*$JL>A0$rIUM?$7$^$9!#(B
foozy@708 220
foozy@708 221 \interaction{branching.tag}
foozy@708 222
foozy@708 223 $B%a%$%s%V%i%s%A$G$O3+H/$,7QB3$7$F$$$k$H$7$^$9!#(B
foozy@708 224
foozy@708 225 \interaction{branching.main}
foozy@708 226
foozy@708 227 $B%j%j!<%9%^%$%k%9%H!<%s8e$NG$0U$N;~E@$G%j%]%8%H%j$rJ#@=$7$?3+H/<T$O!"(B
foozy@708 228 $B%j%j!<%9%^%$%k%9%H!<%s$G5-O?$5$l$?%?%0$r;H$&$3$H$G!"(B
foozy@708 229 $B%?%0$,IUM?$5$l$?%j%S%8%g%s$,%3%_%C%H$5$l$?;~E@$H(B
foozy@708 230 $B87L)$K0lCW$9$k:n6HNN0h%G%#%l%/%H%j$r(B
foozy@708 231 \hgcmd{update} $B%3%^%s%I$K$h$jJ#@=$9$k$3$H$,$G$-$^$9!#(B
foozy@708 232
foozy@708 233 \interaction{branching.update}
foozy@708 234
foozy@708 235 $B$=$l$K2C$($F!"(B
foozy@708 236 $B%a%$%s%V%i%s%A$G$N%?%0IU$1$N8e$G!"(B
foozy@708 237 $B%5!<%P>e$N%a%$%s%V%i%s%A$r!"(B
foozy@708 238 $B?7$?$J(B``$B0BDjHG(B''$B%V%i%s%A!J$N%j%]%8%H%j!K$X$HJ#@=$9$k$3$H$b$G$-$^$9(B\footnote{
foozy@708 239 $BLuCm(B: $B%a%$%s%V%i%s%A$H0BDjHG%V%i%s%A$N3F%j%]%8%H%j$O!"(B
foozy@708 240 $BI,$:$7$bF10l%5!<%P$G1?MQ$5$l$kI,MW$O$"$j$^$;$s!#(B}$B!#(B
foozy@708 241
foozy@708 242 \interaction{branching.clone}
foozy@708 243
foozy@708 244 $B0BDjHG%V%i%s%A$KBP$7$FJQ99$9$kI,MW$,$"$k>l9g!"(B
foozy@708 245 $B3+H/<T$O(B\emph{$B0BDjHG%V%i%s%A(B}$B$N%j%]%8%H%j$+$iJ#@=$7!"(B
foozy@708 246 $BJQ99!"JQ99$N%F%9%H!"%3%_%C%H$N8e$K!"(B
foozy@708 247 $BJQ99$r0BDjHG%V%i%s%A$N%j%]%8%H%j$KH?1G$7$^$9!#(B
foozy@708 248
foozy@708 249 \interaction{branching.stable}
foozy@708 250
foozy@708 251 Mercurial $B$N%j%]%8%H%j$O$*8_$$$K!JJ*M}E*$K!KFHN)$7$F$*$j!"(B
foozy@708 252 $B%j%]%8%H%j4V$G$NJQ99$N<+F0E*$J$d$j<h$j$O9T$o$l$J$$$?$a!"(B
foozy@708 253 $B0BDjHG%V%i%s%A$H$H%a%$%s%V%i%s$O$*8_$$$K(B\emph{$B3VN%(B}$B$5$l$F$$$^$9!#(B
foozy@708 254 $B%a%$%s%V%i%s%A$K2C$($?JQ99$,0BDjHG%V%i%s%A$K(B``$BO3$l=P$9(B''$B$3$H$O$"$j$^$;$s$7!"(B
foozy@708 255 $B$=$N5U$K4X$7$F$bF1MM$G$9!#(B
foozy@708 256
foozy@708 257 $B0BDjHG%V%i%s%A$K$*$1$kA4$F$N%P%0=$@5$r!"(B
foozy@708 258 $B%a%$%s%V%i%s%A$KH?1G$7$?$$>l9g$b$"$k$G$7$g$&!#(B
foozy@708 259 $B%a%$%s%V%i%s%A$G%P%0=$@5$r:FEY!J<jF0$G!K9T$&Be$o$j$K!"(B
foozy@708 260 $B0BDjHG%V%i%s%A$+$i<h$j9~$s$@JQ99$r%a%$%s%V%i%s$KBP$7$F%^!<%8$9$k$3$H$G!"(B
foozy@708 261 $B0BDjHG%V%i%s%A$K$*$1$kJQ99$r%a%$%s%V%i%s%A$K;}$A9~$`$3$H$,$G$-$^$9!#(B
foozy@708 262
foozy@708 263 \interaction{branching.merge}
foozy@708 264
foozy@708 265 $B$3$N;~E@$G$N%a%$%s%V%i%s%A$O!"(B
foozy@708 266 $B0BDjHG%V%i%s%A$K$OL5$$JQ99$rJ];}$7$F$$$^$9$,!"(B
foozy@708 267 $B0BDjHG%V%i%s%A$K$*$1$kA4$F$N%P%0=$@5$rJ];}$7$F$$$^$9!#(B
foozy@708 268 $B0BDjHG%V%i%s%A$O!"(B
foozy@708 269 $B%a%$%s%V%i%s%A$K$N$_4^$^$l$kJQ99$K$O1F6A$r<u$1$J$$$^$^$G$9!#(B
foozy@708 270
foozy@708 271 \subsection{Feature branches}
foozy@708 272
foozy@708 273 $BBg5,LO%W%m%8%'%/%H$GM-8z$JJQ994IM}J}K!$O!"(B
foozy@708 274 $B3+H/%A!<%`$r>.$5$J%0%k!<%W$KJ,3d$9$k$3$H$G$9!#(B
foozy@708 275 $B%W%m%8%'%/%HA4BN$,;2>H$9$kC10l$N(B``$B%^%9%?!<(B''$B%V%i%s%A$+$iJ#@=$7$?6&M-%V%i%s%A(B
foozy@708 276 $B!J!a(B $B%j%]%8%H%j!K$r!"(B
foozy@708 277 $B3F%0%k!<%W$4$H$K$=$l$>$l;}$A$^$9!#(B
foozy@708 278 $B8D!9$N%V%i%s%A>e$G:n6H$9$k3+H/%a%s%P!<$O!"(B
foozy@708 279 $BB>$N%V%i%s%A$K$*$1$k3+H/:n6H$H$O3VN%$5$l$F$$$^$9!#(B
foozy@708 280
foozy@708 281 \begin{figure}[ht]
foozy@708 282 \centering
foozy@708 283 \grafix[width=\textwidth]{feature-branches}
foozy@708 284 \caption{Feature branches}
foozy@708 285 \label{fig:collab:feature-branches}
foozy@708 286 \end{figure}
foozy@708 287
foozy@708 288 $B$H$"$k5!G=$,E,@Z$J>u67(B\footnote{$BLuCm(B:
foozy@708 289 ``$B%3%s%Q%$%k%(%i!<$,L5$/$J$C$?(B''$B>u67$J$N$+!"(B
foozy@708 290 ``$BC1BN%F%9%H$,40N;$7$?(B''$B>u67$J$N$+$O!"(B
foozy@708 291 $B3F%W%m%8%'%/%H$N9=@.4IM}J}?K<!Bh$H$J$j$^$9!#(B}$B$KE~C#$7$?$HH=CG$5$l$?$J$i!"(B
foozy@708 292 $BEv3:5!G=$NC4Ev%A!<%`$G$O!"(B
foozy@708 293 $B%^%9%?!<%V%i%s%A!J$N%j%]%8%H%j!K(B
foozy@708 294 $B$+$iH?1G$7$?JQ99$r<+%A!<%`$N%V%i%s%A!J$N%j%]%8%H%j!K$X$H%^!<%8$7$F$+$i!"(B
foozy@708 295 $B%^%9%?!<%V%i%s%A$X$H%^!<%87k2L$rH?1G$9$l$PNI$$$N$G$9!#(B
foozy@708 296
foozy@708 297 \subsection{The release train}
foozy@708 298
foozy@708 299 $B%W%m%8%'%/%H$K$h$C$F$O!"(B
foozy@708 300 ``train''$B%b%G%k$G1?MQ$5$l$F$$$k>l9g$b$"$j$^$9!#(B
foozy@708 301 ``train'' $B%b%G%k$G1?MQ$5$l$F$$$k%W%m%8%'%/%H$G$O!"(B
foozy@708 302 $B%j%j!<%9$O?t%v7n$4$H$K@_Dj$5$l$F$*$j!"(B
foozy@708 303 ``train''$B$,=PH/=`Hw40N;$7$?CJ3,(B\footnote{$BLuCm(B:
foozy@708 304 $B!V?t%v7n$4$H$K@_Dj$5$l$?%j%j!<%9%9%1%8%e!<%k!W$r(B
foozy@708 305 $B!V;~9oI=DL$j$NH/<V;~9o!W$KNc$($F$$$kLOMM!#(B
foozy@708 306 }$B$GDs6!2DG=$J5!G=$@$1$,%j%j!<%9$K4^$^$l$^$9!#(B
foozy@708 307
foozy@708 308 $B$3$N%b%G%k$O!"@h$K@bL@$7$?5!G=JL%V%i%s%A$K$h$k:n6H$H;w$F$$$^$9!#(B
foozy@708 309 ``train''$B%b%G%k$N>l9g!"(B
foozy@708 310 $B5!G=JL%V%i%s%A$,Ns<V$K>h$j$=$3$J$C$?>l9g!"(B
foozy@708 311 $BEv3:5!G=$NC4Ev%A!<%`$G$O!"(B
foozy@708 312 $B<+%A!<%`$N5!G=%V%i%s%A!J%j%]%8%H%j!K$KBP$7$F!"(B
foozy@708 313 $B%j%j!<%9Ns<V$K4^$^$l$kJQ99$N<h$j9~$_$*$h$S%^!<%8$r9T$$!"(B
foozy@708 314 $B%^!<%87k2L$KBP$7$F:n6H$r7QB3$9$kI,MW$,$"$kE@$,0[$J$j$^$9!#(B
foozy@708 315 $B$3$N%^!<%8:n6H$r9T$&$3$H$G!"(B
foozy@708 316 $B<!2s%j%j!<%9$N:]$K!"(B
foozy@708 317 $BEv3:5!G=$,@09g@-$rJ]$D$3$H$,$G$-$^$9!#(B
foozy@708 318
foozy@708 319 \subsection{The Linux kernel model}
foozy@708 320
foozy@708 321 Linux $B%+!<%M%k$N3+H/BN@)$O!"(B
foozy@708 322 $B@u$$3,AX9=B$$H!"$=$l$r<h$j0O$`0l8+:.FY$H$7$?72=8$+$i@.$jN)$C$F$$$^$9!#(B
foozy@708 323 $BKX$I$N(B Linux $B3+H/<T$,!"(B
foozy@708 324 Mercurial $B$HF1Ey$N5!G=$r;}$C$?J,;69=@.4IM}%D!<%k$G$"$k(B
foozy@708 325 \command{git} $B%3%^%s%I$r;HMQ$7$F$$$k$N$G!"(B
foozy@708 326 Linux $B%+!<%M%k3+H/$K$*$1$k:n6H<j=g$N@bL@$O(B
foozy@708 327 Mercurial $BMxMQ$K$H$C$F$bM-MQ@-$r;}$C$F$$$^$9!#(B
foozy@708 328 $B5$$KF~$C$?%"%$%G%"$,$"$l$P!"(B
foozy@708 329 $B%D!<%k$rD6$($F<jK!$rMxMQ$9$k$3$H$O2DG=$J$N$G$9$+$i!#(B
foozy@708 330
foozy@708 331 $B%3%_%e%K%F%#$NCf?4$K$O!"(B
foozy@708 332 Linux $B$rAO$j=P$7$?(B Linus Torvalds $B;a$,$$$^$9!#(B
foozy@708 333 $BH`$OC10l$N%=!<%9%j%]%8%H%j$r8x3+$7$F$*$j!"(B
foozy@708 334 $B3+H/%3%_%e%K%F%#A4BN$K$H$C$F$O!"(B
foozy@708 335 $B$3$N%j%]%8%H%j$,(B``$B8"0R$"$k(B''$B8=9T%=!<%9%D%j!<$H$_$J$5$l$^$9!#(B
foozy@708 336 $BC/$b$,(B Torvalds $B;a$N%=!<%9%D%j!<$rJ#@=$G$-$^$9$,!"(B
foozy@708 337 $BC/$N%D%j!<$+$iJQ99$r<h$j9~$`$+$H$$$&E@$K4X$7$F!"(B
foozy@708 338 Torvalds $B;a$OHs>o$K?5=E$JA*Br$r$7$F$$$^$9!#(B
foozy@708 339
foozy@708 340 Torvalds $B;a$K$O(B``$B?.Mj$G$-$kJd:4Lr(B''$B$,2??M$+$$$^$9!#(B
foozy@708 341 $BH`$iJd:4Lr$,8x3+$7$F$$$kJQ99$O!"(B
foozy@708 342 $B%l%S%e!<$,9T$o$l$F$$$J$/$F$b!"(B
foozy@708 343 $BBg35$O(B Torvalds $B;a$K$h$j<h$j9~$^$l$^$9!#(B
foozy@708 344 $BJd:4Lr$N$&$A$N2??M$+$O!"(B
foozy@708 345 ``$BJ]<iC4Ev<T(B''$B$H$7$F>5G'$5$l$F$*$j!"(B
foozy@708 346 $B%+!<%M%k$NFCDj$N%5%V%7%9%F%`$K4X$9$k@UG$$rIi$C$F$$$^$9(B
foozy@708 347 $B$H$"$k%+!<%M%k%O%C%+!<$,%5%V%7%9%F%`$X$NJQ99$r9T$$!"(B
foozy@708 348 $B$=$NJQ99$r:G=*E*$K(B Torvalds $B;a$N%D%j!<$K<h$j9~$s$GM_$7$$$H9M$($?>l9g!"(B
foozy@708 349 $BEv3:%5%V%7%9%F%`$NJ]<iC4Ev<T$,C/$G$"$k$+$rD4$Y$F!"(B
foozy@708 350 $B$=$NC4Ev<T$KJQ99$N:NMQ$r$*4j$$$9$kI,MW$,$"$j$^$9!#(B
foozy@708 351 $BJ]<iC4Ev<T$,JQ99$N%l%S%e!<$N8e$K:NMQ$KF10U$7$?>l9g!"(B
foozy@708 352 $B$=$NJQ99$O<j=g$K=>$$(B Torvalds $B;a$X$HEO$5$l$^$9!#(B
foozy@708 353
foozy@708 354 $B8D!9$NJd:4Lr$O!"(B
foozy@708 355 $BJQ99$N%l%S%e!<!&>5G'$*$h$S8x3+$K4X$9$k$=$l$>$l$N<jK!$r;}$C$F$*$j!"(B
foozy@708 356 Torvalds $B;a$X$NJQ99AwIU;~4|$NH=CG$K4X$7$F$b!"$=$l$OEv$F$O$^$j$^$9!#(B
foozy@708 357 $B$=$l$K2C$($F!"(B
foozy@708 358 $B0[$J$kL\E*8~$1$NNI$/CN$i$l$?%V%i%s%A$,$$$/$D$+B8:_$7$^$9!#(B
foozy@708 359 $BNc$($P!"(B
foozy@708 360 $B8E$$HG$N%+!<%M%k$N(B``$B0BDjHG(B''$B%j%]%8%H%j$,!"(B
foozy@708 361 $BI,MW$K1~$8$F?<9o$J>c32$N=$@5$rE,MQ$9$k$?$a$K!"(B
foozy@708 362 $B>/?t$N?M!9$K$h$jJ]<i$5$l$F$$$^$9!#(B
foozy@708 363 $B2??M$+$NJ]<iC4Ev<T$O!"(B
foozy@708 364 $BJ#?t$N%=!<%9%D%j!<$r8x3+$7$F$$$^$9!#(B
foozy@708 365 $B#1$D$O<B83E*$JJQ99$N$?$a$N$b$N!"(B
foozy@708 366 $B#1$D$O>eN.%j%]%8%H%j$+$iG[I[$7$h$&$H$7$F$$$kJQ99$N$?$a$N$b$N!"(B
foozy@708 367 $B$H$$$C$?0DG[$G$9!#(B
foozy@708 368 $BB>$NJ]<iC4Ev<T$O!"%=!<%9%D%j!<$r#1$D$@$18x3+$7$F$$$^$9!#(B
foozy@708 369
foozy@708 370 Linux $B$K$*$1$k$3$N%b%G%k$O!"(B
foozy@708 371 $B#2$D$NCmL\$KCM$9$kFCD'$r;}$C$F$$$^$9!#(B
foozy@708 372 $B#1$DL\$O(B``$B<h$j9~$_8BDj(B''$B!J(Bpull only$B!K$G$"$kE@$G$9!#(B
foozy@708 373 $BJ]<iC4Ev<T0J30$,JQ99$rH?1G$G$-$k%=!<%9%D%j!<$,KX$IL5$/!"(B
foozy@708 374 $BB>$N?M$,4IM}$7$F$$$k%=!<%9%D%j!<$KJQ99$rH?1G$9$kJ}K!$,L5$$$3$H$+$i!"(B
foozy@708 375 $BJQ99$rH?1G$5$;$?$$%=!<%9%D%j!<$NJ]<iC4Ev<T$KBP$7$F!"(B
foozy@708 376 $BJQ99$N:NMQ$r(B\emph{$B$*4j$$(B}$B$9$kI,MW$,$"$j$^$9!#(B
foozy@708 377
foozy@708 378 $B#2$DL\$NFCD'$O!"(B
foozy@708 379 $BCNL>EY$HI>H=$K4p$E$$$F$$$kE@$G$9!#(B
foozy@708 380 $BL>$NCN$i$l$F$$$J$$3+H/<T$+$i$NJQ990MMj$N>l9g!"(B
foozy@708 381 Torvalds $B;a$,0MMj%a!<%k$r<u$1<h$C$?$N$J$i!"(B
foozy@708 382 $BJV?.$b$;$:$KL5;k$7$F$7$^$&$G$7$g$&!#(B
foozy@708 383 $B$7$+$7!"(B
foozy@708 384 $B%5%V%7%9%F%`$NJ]<iC4Ev<T$,0MMj%a!<%k$r<u$1<h$C$?>l9g!"(B
foozy@708 385 $BFbMF$,%l%S%e!<$5$l$?>e$G!"(B
foozy@708 386 $B$=$l$,J]<iC4Ev<T$N4p=`$rK~$?$7$F$$$l$P!"(B
foozy@708 387 $B$*$=$i$/$=$NJQ99$O:NMQ$5$l$k$G$7$g$&!#(B
foozy@708 388 $B$h$j(B``$BNI$$(B''$BJQ99$G9W8%$9$kDx!"(B
foozy@708 389 $BJ]<iC4Ev<T$O$"$J$?$NH=CG$r?.Mj$9$k$G$7$g$&$7!"(B
foozy@708 390 $B$"$J$?$NJQ990MMj$,<uM}EY$5$l$kEY9g$$$bA}$9$G$7$g$&!#(B
foozy@708 391 $B$"$J$?$,M-L>$K$J$j!"(B
foozy@708 392 Torvalds $B;a$,$^$@<uM}$7$F$$$J$$B)$ND9$$%V%i%s%A$NJ]<i$r9T$&$h$&$K$J$l$P!"(B
foozy@708 393 $B$"$J$?$N:n6HFbMF$KDI=>$9$k$?$a$K!"(B
foozy@708 394 $B;w$?$h$&$J6=L#$r;}$D?M!9$,$"$J$?$NJQ99$rDj4|E*$K<h$j9~$`$h$&$K$J$k$G$7$g$&!#(B
foozy@708 395
foozy@708 396 $BCNL>EY$dI>H=$O!"(B
foozy@708 397 $BI,$:$7$b%5%V%7%9%F%`$d(B``$B?ME*(B''$B6-3&$r1[$($k$o$1$G$O$"$j$^$;$s!#(B
foozy@708 398 $B@l$i%9%H%l!<%87O$GCxL>$J%O%C%+!<$,!"(B
foozy@708 399 $B%M%C%H%o!<%/$N%P%0=$@5$r;n$_$?>l9g!"(B
foozy@708 400 $B%M%C%H%o!<%/%5%V%7%9%F%`$NJ]<iC4Ev<T$K$h$k4F::$O!"(B
foozy@708 401 $BA4$/$NIt30<T$K$h$kJQ99$HF1DxEY$H$J$k$G$7$g$&!#(B
foozy@708 402
foozy@708 403 $B$h$j@0A3$H$7$?%W%m%8%'%/%H=>;v$N7P83$r;}$D?M$K$H$C$F!"(B
foozy@708 404 $BAjEv$KL5Ca=x$J(B Linux $B%+!<%M%k$N3+H/<j=g$O!"(B
foozy@708 405 $BA4$/Hs>o<1$J$b$N$K8+$($k$3$H$G$7$g$&!#(B
foozy@708 406 $B$3$N3+H/7ABV$O!"8D?M$N5$$^$0$l$N1F6A$r<u$1$d$9$$$N$G$9!#(B
foozy@708 407 $B:n6H$O3F<+$NET9g$NNI$$;~$K!"6C$/$Y$-%Z!<%99T$o$l$^$9!#(B
foozy@708 408 $B$=$l$G$b$J$*(B Linux $B$O!"(B
foozy@708 409 $B@.8y$r<}$a$?=EMW$J%=%U%H%&%'%"$N#1$D$H$J$C$F$$$^$9!#(B
foozy@708 410
foozy@708 411 \subsection{Pull-only versus shared-push collaboration}
foozy@708 412
foozy@708 413 $BB>$N?M$N%j%]%8%H%j$+$i$OJQ99$NH?1G$N$_$7$+$7$J$$%b%G%k$H!"(B
foozy@708 414 $BJ#?t$N?M!9$,6&M-%j%]%8%H%j$X$NJQ99H?1G$r9T$&$3$H$,$G$-$k3+H/%b%G%k$N!"(B
foozy@708 415 $B$I$A$i$,(B``$B$h$jNI$$(B''$B%b%G%k$G$"$k$+$O!"(B
foozy@708 416 $B%*!<%W%s%=!<%9%3%_%e%K%F%#$K$*$$$F7QB3E*$J5DO@$NE*$K$J$C$F$$$^$9!#(B
foozy@708 417 $B$G$9!#(B
foozy@708 418
foozy@708 419 $B6&M-%j%]%8%H%j!\H?1G%b%G%k$N;Y;}<T$O!"(B
foozy@708 420 $B$=$N<jK!$r@Q6KE*$K;HMQ$9$k%D!<%k$r;HMQ$9$k798~$K$"$j$^$9!#(B
foozy@708 421 Subversion $B$N$h$&$JCf1{=8LsE*$J9=@.4IM}%D!<%k$r;HMQ$7$F$$$k>l9g!"(B
foozy@708 422 $B:NMQ$9$k%b%G%k$NA*Br;h$O$"$j$^$;$s!#(B
foozy@708 423 $B6&M-%j%]%8%H%j!\H?1G%b%G%k$,%D!<%k$K$h$C$F6/@)$5$l$k$?$a!"(B
foozy@708 424 $BB>$N%b%G%k$r;HMQ$9$k$K$O!"(B
foozy@708 425 $B$=$N%D!<%k>e$GFH<+$N<jK!!JNc$($P!"<jF0$G(B \command{patch}
foozy@708 426 $B$r08$F$k!"$J$I!K$r6n;H$9$kI,MW$,$"$j$^$9!#(B
foozy@708 427
foozy@708 428 Mercurial $B$N$h$&$JE,@Z$JJ,;69=@.4IM}%D!<%k$G$"$l$P!"(B
foozy@708 429 $BN>J}$N%b%G%k$rA*Br2DG=$G$9!#(B
foozy@708 430 $BMxMQ<T4V$NO"7H7ABV$O!"(B
foozy@708 431 $B%D!<%k$K$h$j6/@)$5$l$kOD$s$@$b$N$G$O$J$/!"(B
foozy@708 432 $B8GM-$NMWK>$d9%$_$K4p$E$$$F9=C[$9$k$3$H$,$G$-$^$9!#(B
foozy@708 433
foozy@708 434 \subsection{Where collaboration meets branch management}
foozy@708 435
foozy@708 436 $B6&M-%j%]%8%H%j$r9=C[$7!"(B
foozy@708 437 $B3F:n6H<T$,<j85$N%j%]%8%H%j$H6&M-%j%]%8%H%j$H$N4V$G!"(B
foozy@708 438 $BJQ99$NEAGE$r3+;O$7;O$a$?$J$i!"(B
foozy@708 439 $B%A!<%`Fb$N3+H/$NJ}8~@-$rF1;~$KJ#?t4IM}$9$k$H$$$&!"(B
foozy@708 440 $BO"7H$K4X$9$k$3$H$G$O$"$j$D$D$b!"(B
foozy@708 441 $BHyL/$K0[$J$kFqLd$KD>LL$9$k$3$H$G$7$g$&!#(B
foozy@708 442 $B$3$NLdBj$O3+H/%A!<%`$NO"7HJ}<0$HL)@\$K4XO"$7$F$O$$$k$b$N$N!"(B
foozy@708 443 $B2~$a$F<h$j>e$2$k2ACM$,$"$k$[$IHs>o$K9~$_F~$C$?OC$G$"$k$3$H$+$i!"(B
foozy@708 444 \ref{chap:branch}~$B>O$G2~$a$F@bL@$7$^$9!#(B
foozy@708 445
foozy@708 446 \section{The technical side of sharing}
foozy@708 447
foozy@708 448 $BK\>O$N;D$j$O!"(B
foozy@708 449 $B6&F1:n6H<T$KBP$7$F%G!<%?$NDs6!$r9T$&>e$G$NLdBjE@$K3d$-$?$$$H;W$$$^$9!#(B
foozy@708 450
foozy@708 451 \section{Informal sharing with \hgcmd{serve}}
foozy@708 452 \label{sec:collab:serve}
foozy@708 453
foozy@708 454 Mercurial $B$N(B \hgcmd{serve} $B%3%^%s%I$O!"(B
foozy@708 455 $B>.$5$/6[L)$GB-JB$_$NAa$$=8CD$G$NMxMQ$KBgJQE,$7$F$$$^$9!#(B
foozy@708 456 \hgcmd{serve} $B%3%^%s%I$O$^$?!"(B
foozy@708 457 $B%M%C%H%o!<%/1[$7$G$N(B Mercurial $B%3%^%s%I$NMxMQ46$rDO$`$?$a$N!"(B
foozy@708 458 $BAG@2$i$7$$<jCJ$rDs6!$7$F$$$^$9!#(B
foozy@708 459
foozy@708 460 $B%j%]%8%H%jG[2<$K$*$$$F(B \hgcmd{serve} $B$r<B9T$9$k$3$H$G!"(B
foozy@708 461 $B#1IC$b7P$?$:$KFC@=$N(B HTTP $B%5!<%P$,5/F0$7$^$9!#(B
foozy@708 462 $B<B9T$,Dd;_$5$l$k$^$G$N4V$K$3$N(B HTTP $B%5!<%P$O!"(B
foozy@708 463 $BG$0U$N%/%i%$%"%s%H$+$i$N@\B3$r<uM}$7!"(B
foozy@708 464 $BEv3:%j%]%8%H%jCf$N%G!<%?$NDs6!$r9T$$$^$9!#(B
foozy@708 465 $B$?$C$?:#5/F0$7$?$P$+$j$N%5!<%P$N(B URL $B$rCN$C$F$$$F!"(B
foozy@708 466 $B%M%C%H%o!<%/1[$7$K%5!<%P$,2TF0$7$F$$$k%3%s%T%e!<%?$HDL?.$G$-$k$J$i!"(B
foozy@708 467 $B%&%'%V%V%i%&%6$d(B Mercurial $B$rMxMQ$7$F!"(B
foozy@708 468 $BC/$b$,%j%]%8%H%j$+$i%G!<%?$rFI$_=P$9$3$H$,$G$-$^$9!#(B
foozy@708 469 $B%N!<%H(B PC $B>e$G2TF0$9$k(B \hgcmd{serve} $B%W%m%;%9$N(B URL $B$O!"(B
foozy@708 470 \Verb|http://my-notepc.local:8000/| $B$N$h$&$J7A<0$K$J$j$^$9!#(B
foozy@708 471
foozy@708 472 \hgcmd{serve} $B%3%^%s%I$OHFMQ%&%'%V%5!<%P$G$O(B\emph{$B$"$j$^$;$s(B}$B!#(B
foozy@708 473 $B$3$N%3%^%s%I$r;HMQ$9$k$3$H$G#2$D$N;v$,2DG=$K$J$j$^$9!#(B
foozy@708 474
foozy@708 475 \begin{itemize}
foozy@708 476 \item $B0lHLE*$J%&%'%V%V%i%&%67PM3$G$N%5!<%S%9BP>]%j%]%8%H%j$NMzNr$N1\Mw(B
foozy@708 477
foozy@708 478 \item Mercurial $B%W%m%H%3%k$K$h$kDL?.$r9T$&$3$H$G!"(B
foozy@708 479 $B%j%]%8%H%jFb%A%'%s%8%;%C%H$N(B \hgcmd{clone} $B$J$$$7(B \hgcmd{pull}
foozy@708 480
foozy@708 481 \end{itemize}
foozy@708 482
foozy@708 483 $B$H$j$o$11s3V%f!<%6$K$h$kBP>]%j%]%8%H%j$N(B\emph{$BJQ99(B}$B$r5v2D$7$J$$$3$H$+$i!"(B
foozy@708 484 \hgcmd{serve} $B$OFI$_=P$7@lMQ$H$7$F$NMxMQ$,A[Dj$5$l$F$$$^$9!#(B
foozy@708 485
foozy@708 486 Mercurial $B$r4{$KMxMQ$7;O$a$F$$$k$N$G$"$l$P!"(B
foozy@708 487 $B<+?H$N%3%s%T%e!<%?>e$N%j%]%8%H%j$rBP>]$H$7$F(B
foozy@708 488 \hgcmd{serve} $B$rMxMQ$9$k$3$H$,$G$-$^$9$+$i!"(B
foozy@708 489 $B%M%C%H%o!<%/1[$7$K8x3+$5$l$F$$$k%j%]%8%H%j$N>l9g$HF1MM$K!"(B
foozy@708 490 \hgcmd{clone} $B$d(B \hgcmd{incoming}
foozy@708 491 $B$N$h$&$J%3%^%s%I$r;HMQ$7$F!"(B
foozy@708 492 \hgcmd{serve} $B$K$h$C$F5/F0$5$l$?%5!<%P$HDL?.$7$F$_$^$7$g$&!#(B
foozy@708 493 $B%M%C%H%o!<%/7PM3$G8x3+$5$l$F$$$k%j%]%8%H%j$KBP$9$k%3%^%s%I$N;HMQJ}K!$r!"(B
foozy@708 494 $B<jAa$/=,F@$9$k0l=u$K(B \hgcmd{serve} $B$r;HMQ$9$k$N$bNI$$$G$7$g$&!#(B
foozy@708 495
foozy@708 496 \subsection{A few things to keep in mind}
foozy@708 497
foozy@708 498 \hgcmd{serve} $B$O!"(B
foozy@708 499 $B%M%C%H%o!<%/1[$7$NFI$_=P$7A`:n$rG'>ZL5$7$GA4$F5v2D$7$F$$$k$?$a!"(B
foozy@708 500 $BBP>]%j%]%8%H%j$+$i%G!<%?$rFI$_=P$9$?$a$KC/$,@\B3$7$FMh$k$N$+$r!"(B
foozy@708 501 $B5$$K$7$J$/$FNI$$!J$"$k$$$O40A4$K@)8f$G$-$k!K4D6-$G$N$_(B
foozy@708 502 \hgcmd{serve} $B$r;H$&$h$&$K$9$Y$-$G$9!#(B
foozy@708 503
foozy@708 504 $B%3%s%T%e!<%?$d%M%C%H%o!<%/$X$N%U%!%$%d%&%)!<%k$NF3F~>u67$K$D$$$F!"(B
foozy@708 505 \hgcmd{serve} $B%3%^%s%I$O0l@Z4XCN$7$^$;$s!#(B
foozy@708 506 $B%U%!%$%d%&%)!<%k$N8!=P$b@)8f$b$G$-$^$;$s!#(B
foozy@708 507 $B<B9TCf$N(B \hgcmd{serve} $B%W%m%;%9$H$NDL?.$,$G$-$J$$>l9g$O!"(B
foozy@708 508 $B!JM}>&<R$,@5$7$$(B URL $B$r;HMQ$7$F$$$k$3$H$r3NG'$7$?(B\emph{$B8e(B}$B$G!K(B
foozy@708 509 $B%U%!%$%"%&%)!<%k$N@_Dj$r3NG'$9$Y$-$G$9!#(B
foozy@708 510
foozy@708 511 \hgcmd{serve} $B$K$h$k%M%C%H%o!<%/@\B3$N<u$1IU$1$O!"(B
foozy@708 512 $BDL>o$O(B 8000 $BHV%]!<%H$G9T$o$l$^$9!#(B
foozy@708 513 $BEv3:%]!<%H$,4{$KB>$N%W%m%;%9$K$h$j;HMQ$5$l$F$$$?>l9g$O!"(B
foozy@708 514 \hgopt{serve}{-p} $B%*%W%7%g%s$r;HMQ$9$k$3$H$G!"(B
foozy@708 515 $B@\B3<u$1IU$1%]!<%HHV9f$r;XDj$9$k$3$H$,$G$-$^$9!#(B
foozy@708 516
foozy@708 517 \hgcmd{serve} $B5/F0$N:]$K$ODL>o2?$b=PNO$5$l$^$;$s$N$G!"(B
foozy@708 518 $B>/!9IT0B$K$J$k$+$b$7$l$^$;$s!#(B
foozy@708 519 \hgcmd{serve} $B$,E,@Z$K2TF0$7$F$$$k$3$H$r3NG'$7$?$j!"(B
foozy@708 520 $B6&F1:n6H<T$KAwIU$9$k(B URL $B$rCN$j$?$$$N$G$"$l$P!"(B
foozy@708 521 \hggopt{-v} $B%*%W%7%g%sIU$-$G(B \hgcmd{serve} $B$r5/F0$7$F$/$@$5$$!#(B
foozy@708 522
foozy@708 523 \section{Using the Secure Shell (ssh) protocol}
foozy@708 524 \label{sec:collab:ssh}
foozy@708 525
foozy@708 526 Secure Shell $B!J(B\texttt{ssh}$B!K%W%m%H%3%k$r;HMQ$9$k$3$H$G!"(B
foozy@708 527 $B%M%C%H%o!<%/@\B31[$7$K0BA4$KJQ99FbMF$N<h$j9~$_!&H?1G$r9T$&$3$H$,$G$-$^$9!#(B
foozy@708 528 $B$3$N@\B3J}K!$r@5$7$/5!G=$5$;$k$K$O!"(B
foozy@708 529 $B%/%i%$%"%s%H$"$k$$$O%5!<%PB&$G>/!9@_Dj$,I,MW$+$b$7$l$^$;$s!#(B
foozy@708 530
foozy@708 531 ssh $B$KFk@w$_$,$J$$$N$G$"$l$P!"(B
foozy@708 532 $BB>$N%3%s%T%e!<%?$H0BA4$KDL?.$9$k$?$a$N%M%C%H%o!<%/%W%m%H%3%k$G$"$k!"(B
foozy@708 533 $B$HM}2r$7$F$*$$$F$/$@$5$$!#(B
foozy@708 534 Mercurial $B$G(B ssh $B$rMxMQ$9$k$K$O!"(B
foozy@708 535 $B%5!<%P$X$N%m%0%$%s$*$h$S%3%^%s%I<B9T$,$G$-$k$h$&$K!"(B
foozy@708 536 $B%5!<%PB&$K%f!<%6%"%+%&%s%H$r!JI,MW$G$"$l$PJ#?t!KMQ0U$9$kI,MW$,$"$j$^$9!#(B
foozy@708 537
foozy@708 538 $B!J(Bssh $B$K$D$$$F>\$7$$>l9g!"(B
foozy@708 539 $B0J9_$N@bL@$O$*$=$i$/Hs>o$K=iJbE*$K46$8$k$G$7$g$&!K(B
foozy@708 540
foozy@708 541 \subsection{How to read and write ssh URLs}
foozy@708 542
foozy@708 543 ssh $B%W%m%H%3%k$rMxMQ$9$k>l9g$N(B URL $B$O!"(B
foozy@708 544 $B35$M0J2<$N$h$&$J7A<0$r;}$A$^$9!#(B
foozy@708 545
foozy@708 546 \begin{codesample2}
foozy@708 547 ssh://bos@hg.serpentine.com:22/hg/hgbook
foozy@708 548 \end{codesample2}
foozy@708 549
foozy@708 550 \begin{enumerate}
foozy@708 551 \item ``\texttt{ssh://}' $BItJ,$,(B Mercurial $B$K(B ssh $B%W%m%H%3%k$NMxMQ$r;X<($7$^$9(B
foozy@708 552
foozy@708 553 \item ``\texttt{bos@}''$BItJ,$,%5!<%P$X$N%m%0%$%s$K$*$1$k%f!<%6L>$rI=$7$^$9!#(B
foozy@708 554 $B%5!<%P$G$N%f!<%6L>$,%m!<%+%k%^%7%s>e$N%f!<%6L>$H0lCW$9$k>l9g$O!"(B
foozy@708 555 $B$3$NItJ,$r>JN,$G$-$^$9!#(B
foozy@708 556
foozy@708 557 \item ``\texttt{hg.serpentine.com}''
foozy@708 558 $BItJ,$O%m%0%$%s@h%5!<%P$N%[%9%HL>$rI=$7$^$9!#(B
foozy@708 559
foozy@708 560 \item ``:22'' $BItJ,$O%5!<%P$K@\B3$9$k:]$N%]!<%HHV9f$rI=$7$^$9!#(B
foozy@708 561 ssh $B@\B3$K$*$1$k4{Dj%]!<%HHV9f$O(B 22 $BHV$G$9$N$G!"(B
foozy@708 562 22 $BHV(B\emph{$B0J30(B}$B$N%]!<%H$r;HMQ$9$k>l9g$N$_;XDj$,I,MW$G$9!#(B
foozy@708 563
foozy@708 564 \item URL $B$N;D$j$NItJ,$O%5!<%P>e$K$*$1$k%j%]%8%H%j$N%Q%9$rI=$7$^$9!#(B
foozy@708 565
foozy@708 566 \end{enumerate}
foozy@708 567
foozy@708 568 ssh $B%W%m%H%3%k$K$*$1$k(B URL $BI=5-$N%Q%9MWAGItJ,$K$O!"(B
foozy@708 569 $BCM$N2r<a$K4X$9$kI8=`E*$J<jK!$,$J$$$?$a$K!"(B
foozy@708 570 $B:.Mp$NM>CO$,B?!9$"$j$^$9!#(B
foozy@708 571 $B0l72$N%W%m%0%i%`$O!"(B
foozy@708 572 $B%Q%9MWAGItJ,$K4X$7$FB>$N%W%m%0%i%`$H0[$J$k?6$kIq$$$r$7$^$9!#(B
foozy@708 573 $B$3$N$h$&$J>u67$OM}A[E*$G$O$"$j$^$;$s$,!"(B
foozy@708 574 $B>u67$,JQ$o$j$=$&$K$O$"$j$^$;$s!#(B
foozy@708 575 $B$G$9$+$i0J9_$N@bL@$OCm0U?<$/FI$s$G$/$@$5$$!#(B
foozy@708 576
foozy@708 577 Mercurial $B$O%Q%9ItJ,$r!"(B
foozy@708 578 $B%5!<%P$K%m%0%$%s$9$k%f!<%6$N!"(B
foozy@708 579 $B%[!<%`%G%#%l%/%H%j$KBP$9$kAjBP%Q%9$H$_$J$7$^$9!#(B
foozy@708 580 $BNc$($P!"(B
foozy@708 581 $B%5!<%P$K$*$1$k(B \texttt{foo} $B%f!<%6$N%[!<%`%G%#%l%/%H%j$,(B
foozy@708 582 \dirname{/home/foo} $B$G$"$k>l9g!"(B
foozy@708 583 ssh $B%W%m%H%3%k$K$*$1$k(B URL $B$N%Q%9MWAG$,(B \dirname{bar} $B$G$"$l$P!"(B
foozy@708 584 $B$=$N(B URL $B$K$h$j(B\emph{$B<B:]$K(B}$B;2>H$5$l$k$N$O(B
foozy@708 585 \dirname{/home/foo/bar} $B%G%#%l%/%H%j$G$9!#(B
foozy@708 586
foozy@708 587 $BB>$N%f!<%6$N%[!<%`%G%#%l%/%H%j$KBP$9$kAjBP%Q%9$r;XDj$9$k>l9g$O!"(B
foozy@708 588 $B%A%k%@J8;z!J(B\texttt{~}$B!K$K%f!<%6L>!J$3$3$G$O(B
foozy@708 589 \texttt{otheruser} $B$H$7$^$9!K$rB3$1$?%Q%9$G;O$^$k!"(B
foozy@708 590 $B0J2<$N$h$&$JI=5-$K$J$j$^$9!#(B
foozy@708 591
foozy@708 592 \begin{codesample2}
foozy@708 593 ssh://server/~otheruser/hg/repo
foozy@708 594 \end{codesample2}
foozy@708 595
foozy@708 596 \emph{$B@dBP(B}$B%Q%9$K$h$k;XDj$r9T$&>l9g$O!"(B
foozy@708 597 $B0J2<$N$h$&$K%Q%9MWAG$r%@%V%k%9%i%C%7%e$G;O$a$^$9!#(B
foozy@708 598
foozy@708 599 \begin{codesample2}
foozy@708 600 ssh://server//absolute/path
foozy@708 601 \end{codesample2}
foozy@708 602
foozy@708 603 \subsection{Finding an ssh client for your system}
foozy@708 604
foozy@708 605 $BKX$IA4$F$N(B Unix $B%i%$%/$J%7%9%F%`$K$O(B
foozy@708 606 OpenSSH $B$,;vA0F3F~$5$l$F$$$^$9!#(B
foozy@708 607 Unix $B%i%$%/$J%7%9%F%`$r;HMQ$7$F$$$k>l9g!"(B
foozy@708 608 \Verb|which ssh| $B$HF~NO$9$k$3$H$G(B
foozy@708 609 \command{ssh} $B%3%^%s%I!JDL>o$O(B \dirname{/usr/bin} $B$K%$%s%9%H!<%k$5$l$F$$$^$9!K(B
foozy@708 610 $B$N%$%s%9%H!<%k$NM-L5$r3NG'$9$k$3$H$,$G$-$^$9!#(B
foozy@708 611 $BM=A[$KH?$7$F%$%s%9%H!<%k$5$l$F$$$J$+$C$?>l9g$K$O!"(B
foozy@708 612 $B%7%9%F%`E:IU$N%I%-%e%a%s%H$r;2>H$7$F%$%s%9%H!<%kJ}K!$rD4$Y$F$/$@$5$$!#(B
foozy@708 613
foozy@708 614 Windows $B$N>l9g!"(B
foozy@708 615 $BBEEv$J(B ssh $B%/%i%$%"%s%H$rA*Br$7$F%@%&%s%m!<%I$9$kI,MW$,$"$j$^$9!#(B
foozy@708 616 $B<g$JA*Br;h$O#2$D$"$j$^$9!#(B
foozy@708 617
foozy@708 618 \begin{itemize}
foozy@708 619 \item Simon Tatham $B;a$K$h$k(B PuTTY~\cite{web:putty} $B$O!"(B
foozy@708 620 ssh $B%/%i%$%"%s%H%3%^%s%I0l<0$rDs6!$7$F$$$^$9!#(B
foozy@708 621
foozy@708 622 \item $BLLE]$J;v$X$NBQ@-$,9b$$J}$J$i!"(B
foozy@708 623 Cygwin $B>e$N(B OpenSSH $B$r;H$&$N$bNI$$$G$7$g$&!#(B
foozy@708 624
foozy@708 625 \end{itemize}
foozy@708 626
foozy@708 627 $B$I$A$i$N>l9g$G$b!"(B
foozy@708 628 Mercurial $B$,(B ssh $B%/%i%$%"%s%H%3%^%s%I$rC5$7=P$;$k$h$&$K(B
foozy@708 629 \hgini\ $B%U%!%$%k$rJT=8$9$kI,MW$,$"$k$G$7$g$&!#(B
foozy@708 630 $BNc$($P(B PuTTY $B$r;HMQ$9$k$J$i!"(B
foozy@708 631 $B%3%^%s%I9T$G<B9T$9$k(B ssh $B%/%i%$%"%s%H$H$7$F(B
foozy@708 632 \command{plink} $B$r<B9T$9$k$3$H$K$J$j$^$9!#(B
foozy@708 633
foozy@708 634 \begin{codesample2}
foozy@708 635 [ui]
foozy@708 636 ssh = C:/path/to/plink.exe -ssh -i "C:/path/to/my/private/key"
foozy@708 637 \end{codesample2}
foozy@708 638
foozy@708 639 \begin{note}
foozy@708 640 \command{plink} $B$X$N%Q%9$,6uGrJ8;z$r4^$`>l9g!"(B
foozy@708 641 Mercurial $B$O(B \command{plink} $B%3%^%s%I$r@5$7$/5/F0$G$-$^$;$s(B
foozy@708 642 $B!J$G$9$N$G(B \dirname{C:\\Program Files} $B$K%$%s%9%H!<%k$9$k$N$O!"(B
foozy@708 643 $B$h$/$"$j$^$;$s!K!#(B
foozy@708 644 \end{note}
foozy@708 645
foozy@708 646 \subsection{Generating a key pair}
foozy@708 647
foozy@708 648 ssh $B%/%i%$%"%s%H$r;HMQ$9$kEY$K!"(B
foozy@708 649 $BKh2s%Q%9%o!<%IF~NO$r7+$jJV$5$J$/$F$bNI$$MM$K!"(B
foozy@708 650 $B80BP!J(Bkey pair$B!K(B\footnote{$BLuCm(B:
foozy@708 651 $B!V8x3+80!W!J(Bpublic key$B!K$H(B
foozy@708 652 $B!VHkL)80!W!J(Bprivate key$B!K$NBP$,@8@.$5$l$^$9!#(B
foozy@708 653 }$B$r@8@.$9$k$3$H$r$*$9$9$a$7$^$9!#(B
foozy@708 654 Unix $B%i%$%/$J%7%9%F%`(B\footnote{$BLuCm(B: Windows $B$N(B Cygwin $B4D6-4^$`(B}$B$G$O!"(B
foozy@708 655 \command{ssh-keygen} $B%3%^%s%I$G80BP$r@8@.$7$^$9!#(B
foozy@708 656 Windows $B>e$G(B PuTTY $B$r;HMQ$7$F$$$k>l9g$O!"(B
foozy@708 657 \command{puttygen} $B%3%^%s%I$G80BP$r@8@.$7$^$9!#(B
foozy@708 658
foozy@708 659 $B80BP$r@8@.$9$k>l9g!"(B
foozy@708 660 $B%Q%9%U%l!<%:$G80$r<i$k$h$&$K$9$k$N$,!"(B
foozy@708 661 $B0lHL$K$O(B\emph{$BHs>o$K(B}$B8-L@$H$5$l$F$$$^$9(B
foozy@708 662 $B!J(Bssh $B%W%m%H%3%k$K$h$k0BA4$J%M%C%H%o!<%/$r!"(B
foozy@708 663 $B<+F02=$5$l$?=hM}$K$*$$$F;HMQ$9$k>l9g$r=|$/!K!#(B
foozy@708 664
foozy@708 665 $B$7$+$7!"C1$K80BP$r@8@.$7$?$@$1$G$OIT==J,$G$9!#(B
foozy@708 666 $B%M%C%H%o!<%/7PM3$G%m%0%$%s$9$k%5!<%PB&%"%+%&%s%H$K$*$$$F!"(B
foozy@708 667 $B>5G'800lMw$K8x3+80$rDI2CEPO?$9$kI,MW$,$"$j$^$9!#(B
foozy@708 668 OpenSSH $B$,F3F~$5$l$F$$$k%5!<%P$G$N8x3+80$NDI2C$O!"(B
foozy@708 669 $BEv3:%"%+%&%s%H$N(B \sdirname{.ssh} $B%G%#%l%/%H%jG[2<$N(B
foozy@708 670 \sfilename{authorized\_keys}
foozy@708 671 $B%U%!%$%k$K8x3+80$NFbMF$rDI2C$9$k$3$H$G9T$o$l$^$9!#(B
foozy@708 672
foozy@708 673 Unix $B%i%$%/L>%7%9%F%`$G$O!"(B
foozy@708 674 $B8x3+80$ODL>o(B \filename{.pub} $B3HD%;R$r;}$C$F$$$^$9!#(B
foozy@708 675 Windows $B>e$G(B \command{puttygen} $B$r;HMQ$9$k>l9g$O!"(B
foozy@708 676 $BG$0U$N%U%!%$%kL>$GJ]B82DG=$G$9$7!"(B
foozy@708 677 $B8x3+80$NFbMF$,I=<($5$l$F$$$k%&%#%s%I%&$+$i(B
foozy@708 678 \sfilename{authorized\_keys} $B$XD>@\E=$jIU$1!J(Bpaste$B!K$k$3$H$b2DG=$G$9(B
foozy@708 679
foozy@708 680 \subsection{Using an authentication agent}
foozy@708 681
foozy@708 682 $BG'>Z%(!<%8%'%s%H$O!"(B
foozy@708 683 $B%Q%9%U%l!<%:$r%a%b%j>e$K3JG<$9$k%G!<%b%s%W%m%;%9$G$9(B
foozy@708 684 $B!J$=$N$?$a!"%m%0%"%&%H8e$K:FEY%m%0%$%s$7$?>l9g!"(B
foozy@708 685 $B%Q%9%U%l!<%:$O<:$o$l$^$9!K!#(B
foozy@708 686 $BG'>Z%(!<%8%'%s%H$N2TF0$r8!CN$9$k$H!"(B
foozy@708 687 ssh $B%/%i%$%"%s%H$OG'>Z%(!<%8%'%s%H$K%Q%9%U%l!<%:$NLd$$9g$o$;$r9T$$$^$9!#(B
foozy@708 688 $BG'>Z%(!<%8%'%s%H$,2TF0$7$F$$$J$$$+!"(B
foozy@708 689 $B$"$k$$$OI,MW$J%Q%9%U%l!<%:$r5-21$7$F$$$J$$>l9g$O!"(B
foozy@708 690 Mercurial $B$K$h$k%5!<%PO"7H!JNc(B: \hgcmd{push} $B$d(B \hgcmd{pull}$B!K$NETEY!"(B
foozy@708 691 $B%Q%9%U%l!<%:$NF~NO$,I,MW$G$9!#(B
foozy@708 692
foozy@708 693 $BG'>Z%(!<%8%'%s%H$K$h$k%Q%9%U%l!<%:J]B8$N7gE@$O!"(B
foozy@708 694 $BF~G0$K=`Hw$7$?967b<T$K$H$C$F$O!"(B
foozy@708 695 $B$?$H$(Dj4|E*$K:F5/F0$7$F$$$k%7%9%F%`$G$"$C$F$b(B XXXXXX power-cycled XXXX
foozy@708 696 $B%Q%9%U%l!<%:$NJ?J,$rI|852DG=$G$"$kE@$G$9!#(B
foozy@708 697 $B$3$NLdBj$,5vMF2DG=$J$b$N$+H]$+$O!"3F<+$GH=CG$9$kI,MW$,$"$j$^$9!#(B
foozy@708 698 $BG'>Z%(!<%8%'%s%H$r;HMQ$9$k$3$H$G!"(B
foozy@708 699 $B7+$jJV$7%Q%9%U%l!<%:$rF~NO$9$k<j4V$rBgI}$KDc8:$9$k$3$H$,$G$-$^$9!#(B
foozy@708 700
foozy@708 701 Unix $B%i%$%/L>%7%9%F%`$G$O!"(B
foozy@708 702 $BG'>Z%(!<%8%'%s%H$O(B \command{ssh-agent} $B$H$$$&L>A0$G!"(B
foozy@708 703 \command{ssh-add}
foozy@708 704 $B%3%^%s%I$r;H$C$F%(!<%8%'%s%H$N5-21NN0h$K%Q%9%U%l!<%:$rJ]B8$7$^$9!#(B
foozy@708 705 Windows $B>e$G(B PuTTY $B$r;HMQ$9$k>l9g$O!"(B
foozy@708 706 \command{pageant} $B%3%^%s%I$,G'>Z%(!<%8%'%s%H$7$F?6Iq$$$^$9!#(B
foozy@708 707 $B%7%9%F%`%H%l%$$KDI2C$5$l$?%"%$%3%s$r%/%j%C%/$9$k$3$H$G!"(B
foozy@708 708 $B3JG<$5$l$?%Q%9%U%l!<%:$N4IM}$r9T$&$3$H$,$G$-$^$9!#(B
foozy@708 709
foozy@708 710 \subsection{Configuring the server side properly}
foozy@708 711
foozy@708 712 $B=i?4<T$K$H$C$F(B ssh $B$N@_Dj$OLLE]$J$N$G!"(B
foozy@708 713 $BLdBj$,H/@8$9$k>u67$bB?4t$KEO$j$^$9!#(B
foozy@708 714 Add Mercurial on top, and
foozy@708 715 there's plenty more scope for head-scratching. XXXXX
foozy@708 716 $BLdBjH/@8$N2DG=@-$O!"(B
foozy@708 717 $B%/%i%$%"%s%HB&$G$O$J$/%5!<%PB&$NJ}$,9b$$$G$9!#(B
foozy@708 718 $B$"$j$,$?$$$3$H$K!"(B
foozy@708 719 $B0lC6@5$7$/F0:n$9$k@_Dj$,$G$-$F$7$^$($P!"(B
foozy@708 720 $BDL>o$OL54|8B$K@5$7$/F0:n$7B3$1$^$9!#(B
foozy@708 721
foozy@708 722 Mercurial $B$G(B ssh $B%5!<%P$HDL?.$r$7$F$_$kA0$K!"(B
foozy@708 723 $BDL>o$N(B \command{ssh} $B$J$$$7(B
foozy@708 724 \command{putty} $B%3%^%s%I$K$h$k%5!<%P$H$NDL?.$r3NG'$9$k$N$,L5Fq$G$9!#(B
foozy@708 725 $BD>@\%3%^%s%I$r;HMQ$7$?:]$KLdBj$,H/@8$7$?$J$i$P!"(B
foozy@708 726 Mercurial $B$,5!G=$7$J$$$3$H$O3N<B$G$9!#(B
foozy@708 727 $B99$K0-$$$3$H$K!"(B
foozy@708 728 Mercurial $B$r2p$7$F$N(B ssh $B%5!<%P$H$NO"7H$O!"(B
foozy@708 729 $B:,K\E*$J860x$,1#$l$F$7$^$$$^$9!#(B
foozy@708 730 ssh $B$K4XO"$9$k(B Mercurial $B$NLdBj$r2r7h$9$k>l9g$O!"(B
foozy@708 731 Mercurial $B$NIT6q9g$r5?$&(B\emph{$BA0$K(B}$B!"(B
foozy@708 732 ssh $B%/%i%$%"%s%H%3%^%s%I$ND>@\<B9T$,5!G=$9$k$3$H$r3NG'$7$F$/$@$5$$!#(B
foozy@708 733
foozy@708 734 $B%5!<%PB&$G:G=i$K3NG'$9$Y$-;v$O!"(B
foozy@708 735 $B$"$k%^%7%s$+$i%5!<%P%^%7%s$X$N<B:]$N%m%0%$%s$N2DH]$G$9!#(B
foozy@708 736 \command{ssh} $B$J$$$7(B \command{putty} $B$G%m%0%$%s$G$-$J$$>l9g!"(B
foozy@708 737 $BI=<($5$l$k%(%i!<%a%C%;!<%8$+$iLdBjFCDj$N%R%s%H$,F@$i$l$k$+$b$7$l$^$;$s!#(B
foozy@708 738 $B$h$/$"$kLdBj$K$O0J2<$N$h$&$J$b$N$,$"$j$^$9!#(B
foozy@708 739
foozy@708 740 \begin{itemize}
foozy@708 741 \item ``connection refused'' $B$,I=<($5$l$k>l9g$O!"(B
foozy@708 742 ssh $B%5!<%P%W%m%;%9$,5/F0$5$l$F$$$J$$$+!"(B
foozy@708 743 $B%U%!%$%d!<%&%)!<%k@_Dj$K$h$j%M%C%H%o!<%/@\B3$G$-$J$$$3$H$,860x$G$9!#(B
foozy@708 744
foozy@708 745 \item ``no route to host'' $B$,I=<($5$l$k>l9g$O!"(B
foozy@708 746 $B@\B3@h$N%5!<%P%"%I%l%9$,4V0c$C$F$$$k$+!"(B
foozy@708 747 $B%U%!%$%d!<%&%)!<%k$K$h$C$F@\B3$,87=E$K6X;_$5$l$F$$$k$3$H$,860x$G$9!#(B
foozy@708 748
foozy@708 749 \item ``permission denied'' $B$,I=<($5$l$k>l9g$O!"(B
foozy@708 750 $B%5!<%P@\B3$N:]$N%f!<%6L>!"%Q%9%U%l!<%:!"(B
foozy@708 751 $B$J$$$7%5!<%PB&%f!<%6$N%Q%9%o!<%I$NF~NO$r4V0c$($F$$$k$3$H$,860x$G$9!#(B
foozy@708 752
foozy@708 753 \end{itemize}
foozy@708 754
foozy@708 755 $B$3$l$^$G$NOC$r$^$H$a$k$H!"(B
foozy@708 756 $B%5!<%P%^%7%s>e$N(B ssh $B%5!<%P%W%m%;%9$H$NDL?.$KLdBj$,$"$k>l9g!"(B
foozy@708 757 $B$^$:$O%5!<%P%W%m%;%9$N2TF0>u67$r3NG'$7$F$/$@$5$$!#(B
foozy@708 758 $BB?$/$N%7%9%F%`$G$O!"(B
foozy@708 759 ssh $B<+BN$O%$%s%9%H!<%k$5$l$F$$$^$9$,!"(B
foozy@708 760 $B=i4|>uBV$G$OL58z2=$5$l$F$$$k>l9g$,$"$j$^$9!#(B
foozy@708 761 $B$3$N3NG'$,:Q$s$@$J$i!"(B
foozy@708 762 $B<!$K3NG'$9$k$N$O!"(B
foozy@708 763 ssh $B%5!<%P%W%m%;%9$,30It$+$i$N@\B3$r<u$1IU$1$k%]!<%H!JDL>o$O(B 22 $BHV!K(B
foozy@708 764 $B$KBP$9$k30It$+$i$N@\B3$r!"(B
foozy@708 765 $B%5!<%P$N%U%!%$%d!<%&%)!<%k@_Dj$,5v2D$7$F$$$k$+H]$+$G$9!#(B
foozy@708 766 $B$3$l$i#2$D$N3NG'$r:Q$^$;$k$^$G$O!"(B
foozy@708 767 $BFMGo;R$b$J$$@_Dj%_%9$N2DG=@-$K4X$7$F?4G[$9$kI,MW$O$"$j$^$;$s!#(B
foozy@708 768
foozy@708 769 $BHkL)80MQ%Q%9%U%l!<%:$NJ];}$N$?$a$K!"(B
foozy@708 770 $B%/%i%$%"%s%HB&$GG'>Z%(!<%8%'%s%H$r;HMQ$7$F$$$k>l9g$O!"(B
foozy@708 771 $B%Q%9%U%l!<%:$d%Q%9%o!<%I$NLd$$9g$o$;$r<u$1$k;vL5$/!"(B
foozy@708 772 $B%5!<%P$K%m%0%$%s$G$-$F$$$J$1$l$P$J$j$^$;$s!#(B
foozy@708 773 $B%Q%9%U%l!<%:$rLd$$9g$o$;$k%W%m%s%W%H$,I=<($5$l$k>l9g!"(B
foozy@708 774 $BLdBj$N2DG=@-$N$"$k$b$N$,4v$D$+$"$j$^$9!#(B
foozy@708 775
foozy@708 776 \begin{itemize}
foozy@708 777 \item \command{ssh-add} $B$J$$$7(B \command{pageant}
foozy@708 778 $B$K$h$k%Q%9%U%l!<%:$N3JG<$rK:$l$F$$$k$N$+$b$7$l$^$;$s!#(B
foozy@708 779
foozy@708 780 \item $BA[Dj$7$F$$$k$b$N$H$OJL$J80$N%Q%9%U%l!<%:$r3JG<$7$F$$$k$N$+$b$7$l$^$;$s!#(B
foozy@708 781
foozy@708 782 \end{itemize}
foozy@708 783
foozy@708 784 $B%5!<%PB&%f!<%6$N%Q%9%o!<%I$NLd$$9g$o$;$,$"$C$?>l9g!"(B
foozy@708 785 $BJL$JLdBj$N2DG=@-$r8!F$$9$kI,MW$,$"$j$^$9!#(B
foozy@708 786
foozy@708 787 \begin{itemize}
foozy@708 788 \item $B%5!<%PB&%f!<%6$N!"%[!<%`%G%#%l%/%H%j$J$$$7(B
foozy@708 789 \sdirname{.ssh} $B%G%#%l%/%H%j$N8"8B@_Dj$,!"(B
foozy@708 790 $B2aEY$K4K$/@_Dj$5$l$F$$$k$N$+$b$7$l$^$;$s!#(B
foozy@708 791 ssh $B%5!<%P%W%m%;%9$O$=$N>l9g!"(B
foozy@708 792 \sfilename{authorized\_keys}
foozy@708 793 $B%U%!%$%k$N?.Mj@-$,Dc$$$b$N$H$7$FFI$_9~$_$r9T$$$^$;$s!#(B
foozy@708 794 $BNc$($P!"(B
foozy@708 795 $B%[!<%`%G%#%l%/%H%j$J$$$7(B \sdirname{.ssh} $B%G%#%l%/%H%j$,!"(B
foozy@708 796 $B%0%k!<%W$KBP$9$k=q$-9~$_8"8B$r@_Dj$5$l$F$$$k>l9g!"(B
foozy@708 797 $B%Q%9%o!<%ILd$$9g$o$;$,9T$o$l$k!"$H$$$C$?>I>u$,8+$i$l$^$9!#(B
foozy@708 798
foozy@708 799 \item \sfilename{authorized\_keys}
foozy@708 800 $B%U%!%$%k$=$N$b$N$KLdBj$,$"$k2DG=@-$b$"$j$^$9!#(B
foozy@708 801 $B$3$N%U%!%$%k$X$N=q$-9~$_8"8B$,=jM-<T0J30$K$b@_Dj$5$l$F$$$k>l9g!"(B
foozy@708 802 ssh $B%5!<%P%W%m%;%9$O%U%!%$%k$N?.Mj@-$,Dc$$$b$N$H$7$FFI$_9~$_$r9T$$$^$;$s!#(B
foozy@708 803
foozy@708 804 \end{itemize}
foozy@708 805
foozy@708 806 $B0J2<$N%3%^%s%I<B9T$KBP$7$F!"(B
foozy@708 807 $B!J%5!<%PB&$N!K8=:_;~9o$rI=<($9$k#19T$@$1$,=PNO$5$l$k!"(B
foozy@708 808 $B$H$$$&>uBV$,M}A[E*$G$9!#(B
foozy@708 809
foozy@708 810 \begin{codesample2}
foozy@708 811 ssh myserver date
foozy@708 812 \end{codesample2}
foozy@708 813
foozy@708 814 $B>e5-$N$h$&$JHsBPOCE*$J%3%^%s%I<B9T$N>l9g$K$b!"(B
foozy@708 815 $B%P%J!<I=<($d$=$l$KN`$9$kI=<($,9T$o$l$k$h$&$J@_Dj$,!"(B
foozy@708 816 $BO"7H@h%5!<%PB&$G9T$o$l$F$$$k>l9g$K$O!"(B
foozy@708 817 $B$3$N@h$N<j=g$K?J$`A0$K!"(B
foozy@708 818 $BBPOCE*$J<B9T(B\footnote{$BLuCm(B: $B!V(Bssh $B$K$h$k%m%0%$%s;~!W$N0U(B}$B$N;~$K$N$_!"(B
foozy@708 819 $B$3$l$i$,I=<($5$l$k$h$&$K@_DjJQ99$7$F$/$@$5$$!#(B
foozy@708 820 $B$3$l$rBU$k$H!"(B
foozy@708 821 $B%P%J!<Ey$NI=<($,(B Mercurial $B$N=PNO$r:.Mp$5$;$F$7$^$$$^$9!#(B
foozy@708 822 $B99$KLdBj$J$3$H$K!"(B
foozy@708 823 $B%P%J!<Ey$NI=<($O(B Mercurial $B%3%^%s%I$N1s3V<B9T$K$*$1$k@x:_E*$JLdBj$H@.$jF@$^$9!#(B
foozy@708 824 $BHsBPOCE*$J(B \command{ssh} $BO"7H$K$*$$$F!"(B
foozy@708 825 Mercurial $B$O6KNO%P%J!<Ey$NI=<($N8!CN$J$i$S$KL5;k$KEX$a$^$9$,!"(B
foozy@708 826 $BI,$:$7$bA4$F$,L5;k$G$-$k$o$1$G$O$"$j$^$;$s(B
foozy@708 827 $B!J%5!<%PB&$G%m%0%$%s;~<B9T%9%/%j%W%H$r%+%9%?%^%$%:$9$k>l9g!"(B
foozy@708 828 \Verb|tty -s| $B%3%^%s%I$NLa$jCM$rH=Dj$9$k$3$H$G!"(B
foozy@708 829 $BEv3:%9%/%j%W%H$,8=:_BPOC%7%'%k$G<B9T$5$l$F$$$k$+H]$+$rH=Dj$9$k$3$H$,$G$-$^$9!K(B
foozy@708 830 \footnote{$BLuCm(B: $B%m%0%$%s%9%/%j%W%H$G$N=PNO0J30$G$b!"(B
foozy@708 831 $B%U%C%/<B9T;~$KI8=`=PNO$KBP$7$F2?$i$+$NI=<($,$"$C$?>l9g!"(B
foozy@708 832 Mercurial $B$O!VO"7H$K$*$1$kA[Dj30$N%G!<%?<x<u!W$H$_$J$9$?$a!"(B
foozy@708 833 $BCm0U$,I,MW$G$9!#(B}$B!#(B
foozy@708 834
foozy@708 835 $BAG$N(B ssh $B$K$h$k%5!<%PO"7H$,5!G=$9$k$3$H$r3NG'$7$?$J$i$P!"(B
foozy@708 836 $B<!$K3NG'$9$k$N$O!"(B
foozy@708 837 $B%5!<%PB&$G$N(B Mercurial $B<B9T$N2DH]$G$9!#(B
foozy@708 838 $B0J2<$N%3%^%s%I<B9T$,@5$7$/5!G=$9$k$3$H$r3NG'$7$F$/$@$5$$!#(B
foozy@708 839
foozy@708 840 \begin{codesample2}
foozy@708 841 ssh myserver hg version
foozy@708 842 \end{codesample2}
foozy@708 843
foozy@708 844 $BDL>o$N(B \hgcmd{version} $B=PNO$G$O$J$/%(%i!<%a%C%;!<%8$,I=<($5$l$k>l9g!"(B
foozy@708 845 $BBg35$O(B \dirname{/usr/bin} $B$K(B
foozy@708 846 Mercurial $B$,%$%s%9%H!<%k$5$l$F$$$J$$$3$H$,860x$G$9!#(B
foozy@708 847 $B$=$N>l9g$G$b!"(B
foozy@708 848 $BI,$:$7$b(B \dirname{/usr/bin} $B$K%$%s%9%H!<%k$9$kI,MW$O$"$j$^$;$s!#(B
foozy@708 849 $B$7$+$7!"9M$(F@$k0J2<$N4v$D$+$N860x$K4X$7$F3NG'$,I,MW$G$9!#(B
foozy@708 850
foozy@708 851 \begin{itemize}
foozy@708 852 \item Mercurial $B$OK\Ev$K%5!<%P$K%$%s%9%H!<%k$5$l$F$$$^$9$+!)(B
foozy@708 853 $BJQ$J<ALd$H;W$o$l$k$+$b$7$l$^$;$s$,!"$3$l$OHs>o$K=EMW$J3NG';v9`$G$9!#(B
foozy@708 854
foozy@708 855 \item $B%7%'%k$N%3%^%s%I%5!<%A%Q%9!JDL>o$O(B \envar{PATH} $B4D6-JQ?t$G@_Dj!K(B
foozy@708 856 $B$N@_Dj$,C1$KITE,@Z$J$N$+$b$7$l$^$;$s!#(B
foozy@708 857
foozy@708 858 \item $B$R$g$C$H$7$?$i!"(B\envar{PATH} $B4D6-JQ?t$,(B
foozy@708 859 \command{hg}
foozy@708 860 $B%3%^%s%I$N3JG<>l=j$r;X$9$h$&$K@_Dj$5$l$k$N$OBPOCE*$J%m%0%$%s;~$K$N$_!"(B
foozy@708 861 $B$H$$$&2DG=@-$b$"$j$^$9!#(B
foozy@708 862 \envar{PATH} $B4D6-JQ?t$N@_Dj$rITE,Ev$J5/F0%9%/%j%W%H$G9T$C$F$$$k>l9g$K!"(B
foozy@708 863 $B$3$N$h$&$J8=>]$,H/@8$7$^$9!#(B
foozy@708 864 $B3F<+$N;HMQ$7$F$$$k%7%'%k$N%I%-%e%a%s%H$r3NG'$7$F$_$^$7$g$&(B\footnote{$BLuCm(B:
foozy@708 865 $BNc$($P(B bash $B$N>l9g!"BPOCE*%m%0%$%s$+H]$+$G(B
foozy@708 866 \sfilename{.bashrc}$B!"(B
foozy@708 867 \sfilename{.bash\_profile}$B!"(B
foozy@708 868 \sfilename{.profile} $B$*$h$S(B
foozy@708 869 \sfilename{.login} $B$H$$$C$?3F%U%!%$%k$NFI$_9~$_$NM-L5$,JQ2=$7$^$9!#(B
foozy@708 870 $B$^$?!"%G%#%9%H%j%S%e!<%7%g%s$K$h$C$F$O!"(B
foozy@708 871 $BHsBPOCE*$J<B9T$N:]$K$O!"(B
foozy@708 872 \dirname{/etc/bashrc} $B$K$h$k(B
foozy@708 873 \dirname{/etc/profile.d}
foozy@708 874 $BG[2<$N@_Dj%U%!%$%kFI$_9~$_$,9T$o$l$J$$>l9g$,$"$j$^$9(B
foozy@708 875 $B!J(B2.6.x $B7O%+!<%M%k%Y!<%9$N$b$N$OFI$_9~$^$J$$J}?K$NLOMM!K$N$G!"(B
foozy@708 876 \envar{PYTHONPATH} $B$N7o$b4^$a$F!"(B
foozy@708 877 $B%7%9%F%`%o%$%I$J@_Dj$r9T$&J}$OCm0U$,I,MW$G$9!#(B
foozy@708 878 \Verb|ssh myserver env|
foozy@708 879 $B<B9T$G=PNO$5$l$k4D6-JQ?t0lMw$r3NG'$7$F$_$^$7$g$&!#(B
foozy@708 880 }$B!#(B
foozy@708 881
foozy@708 882 \item \envar{PYTHONPATH} $B4D6-JQ?t$K$h$k(B
foozy@708 883 Mercurial $B$N(B Python
foozy@708 884 $B%b%8%e!<%k3JG<%G%#%l%/%H%j$N;2>H$,I,MW$G$"$k%1!<%9$b$"$j$^$9!#(B
foozy@708 885 $BITE,@Z$J@_Dj$@$C$?$j!"BPOCE*%m%0%$%s;~$K$N$_@_Dj$5$l$F$$$k2DG=@-$,$"$j$^$9!#(B
foozy@708 886
foozy@708 887 \end{itemize}
foozy@708 888
foozy@708 889 ssh $B7PM3$G$N(B \hgcmd{version} $B%3%^%s%I<B9T$,@.8y$7$?$J$i=`Hw$O40N;$G$9!#(B
foozy@708 890 $B%5!<%P!&%/%i%$%"%s%H$O6&$KLdBj2r7h:Q$_$H$J$j$^$7$?!#(B
foozy@708 891 $B%5!<%P>e$G8x3+$5$l$F$$$k(B $B%j%]%8%H%j$K!"(B
foozy@708 892 $BEv3:%f!<%6L>$K$h$k(B Mercurial $B$G$N%"%/%;%9$,2DG=$K$J$C$F$$$kH&$G$9!#(B
foozy@708 893 $B$3$3$^$G$N3NG'$r%/%j%"$7$?>e$G!"(B
foozy@708 894 Mercurial $B$H(B ssh $B$NO"7H$K$*$$$FLdBj$,H/@8$7$?>l9g!"(B
foozy@708 895 $BLdBjH/@8$N>u67$r$h$jL@3N$K$9$k$?$a$K!"(B
foozy@708 896 \hggopt{--debug} $B%*%W%7%g%s$rIU$1$F$N<B9T$r;n$7$F$_$F$/$@$5$$!#(B
foozy@708 897
foozy@708 898 \subsection{Using compression with ssh}
foozy@708 899
foozy@708 900 ssh $B%W%m%H%3%k$r;HMQ$9$k>l9g!"(B
foozy@708 901 ssh $B%W%m%H%3%k<+?H$,DL?.;~$K%G!<%?05=L$r9T$&$?$a!"(B
foozy@708 902 Mercurial $B$O05=L$r9T$$$^$;$s!#(B
foozy@708 903 $B$7$+$7!"(Bssh $B%/%i%$%"%s%H$N!JDL>o$N!K4pDlF0:n$G$O!"(B
foozy@708 904 $B05=L$r(B\emph{$B9T$$$^$;$s(B}$B!#(B
foozy@708 905
foozy@708 906 $B9bB.$J(B LAN $B$N>l9g$r=|$1$P!JL5@~%M%C%H%o!<%/$G$"$C$F$b!K!"(B
foozy@708 907 $BDL?.;~$N05=L$O(B Mercurial
foozy@708 908 $B$N%M%C%H%o!<%/7PM3$N=hM}$r82Cx$K9bB.2=$7$^$9!#(B
foozy@708 909 $BNc$($P(B WAN $B7PM3$G$NO"7H$N>l9g!"(B
foozy@708 910 $B$+$J$jBg$-$J%j%]%8%H%j$NJ#@=$KMW$9$k;~4V$,(B 51 $BJ,$+$i(B 17 $BJ,$KDc8:$7$?!"(B
foozy@708 911 $B$H$N@-G=7WB,Js9p$b$"$j$^$9!#(B
foozy@708 912
foozy@708 913 \command{ssh} $B$H(B \command{plink} $B$NN>J}$H$b!"(B
foozy@708 914 $BDL?.;~05=L$rM-8z2=$9$k(B
foozy@708 915 \cmdopt{ssh}{-C} $B%*%W%7%g%s$r<u$1IU$1$^$9!#(B
foozy@708 916 \hgrc\ $B%U%!%$%k$r0J2<$N$h$&$KJT=8$9$k$3$H$G!"(B
foozy@708 917 ssh $B%W%m%H%3%kMxMQ$N:]$K>o$K05=L$r9T$&$h$&$K(B Mercurial $B$KBP$7$F;XDj$G$-$^$9!#(B
foozy@708 918
foozy@708 919 \begin{codesample2}
foozy@708 920 [ui]
foozy@708 921 ssh = ssh -C
foozy@708 922 \end{codesample2}
foozy@708 923
foozy@708 924 \command{ssh} $B$r;HMQ$7$F$$$k>l9g$O!"(B
foozy@708 925 $BO"7H@h%5!<%P$H$NDL?.$N:]$K$O>o$K05=L$r9T$&$h$&$K@_Dj$9$k$3$H$b$G$-$^$9!#(B
foozy@708 926 $B$3$N@_Dj$r9T$&$K$O!"(B
foozy@708 927 $B%[!<%`%G%#%l%/%H%jG[2<$N(B
foozy@708 928 \sfilename{.ssh/config} $B%U%!%$%k(B
foozy@708 929 $B!JL5$$>l9g$O?75,$K:n@.$7$^$9!K$K0J2<$N$h$&$K5-=R$7$^$9!#(B
foozy@708 930
foozy@708 931 \begin{codesample2}
foozy@708 932 Host hg
foozy@708 933 Compression yes
foozy@708 934 HostName hg.example.com
foozy@708 935 \end{codesample2}
foozy@708 936
foozy@708 937 $B>e5-$N5-=R$O!"(B
foozy@708 938 \texttt{hg} $B$H$$$&JLL>!J(Balias$B!K$r:n@.$7$^$9!#(B
foozy@708 939 \command{ssh} $B<B9T$N:]$N%3%^%s%I9T5-=R$d!"(B
foozy@708 940 Mercurial $B$N(B \texttt{ssh} $B%W%m%H%3%k$K$*$1$k(B URL $B$H$7$F!"(B
foozy@708 941 \texttt{hg} $B$r!J%[%9%HL>$H$7$F!K;HMQ$7$?>l9g!"(B
foozy@708 942 \command{ssh} $B$ODL?.;~05=L$r9T$$$D$D(B \texttt{hg.example.com} $B$K@\B3$7$^$9!#(B
foozy@708 943 $B$3$N@_Dj$K$h$j!"(B
foozy@708 944 $BF~NO$NJXMx$J>JN,L>$H!"05=L;XDj$NN>J}$r<j$K$9$k$3$H$,$G$-$^$9!#(B
foozy@708 945
foozy@708 946 \section{Serving over HTTP using CGI}
foozy@708 947 \label{sec:collab:cgi}
foozy@708 948
foozy@708 949 $B0U5$9~$_<!Bh$G$O!"(B
foozy@708 950 Mercurial $B$N(B CGI $B%$%s%?%U%'!<%9$N@_Dj$O!"(B
foozy@708 951 $B?tJ,$N$b$N$r?t;~4V$K$7$F$7$^$&2DG=@-$,$"$j$^$9!#(B
foozy@708 952
foozy@708 953 $B:G$bC1=c$JNc$+$i=i$a$F!"(B
foozy@708 954 $B$h$jJ#;($J@_Dj$X$H8~$1$F?J$a$F$f$-$^$7$g$&!#(B
foozy@708 955 $B:G$b4pK\E*$J%1!<%9$G$9$i!"(B
foozy@708 956 $B%&%'%V%5!<%P$N@_Dj%U%!%&%k$NFI$_=q$-$r9T$&I,MW$,=P$F$/$k$3$H$G$7$g$&!#(B
foozy@708 957
foozy@708 958 \begin{note}
foozy@708 959 $B%&%'%V%5!<%P$N@_Dj$OJ#;($G!"07$$$K$/$/!"3n$D%7%9%F%`0MB8@-$N9b$$:n6H$G$9!#(B
foozy@708 960 $B$=$N$?$aK\=q$G$O!"(B
foozy@708 961 $BH/@8$9$k$G$"$m$&LdBj$N%1!<%9$rA4$FLVMe$9$k$h$&$J<j=g$r<($9$3$H$,$G$-$^$;$s!#(B
foozy@708 962 $B0J9_$N5-=R$O!"?5=E$5$H3F<+$NH=CG$r$b$C$FFI$_?J$a$k$h$&$K$7$F$/$@$5$$!#(B
foozy@708 963 $BBt;34V0c$($?$j!"%5!<%P$N%(%i!<%m%02r@O$K;~4V$rHq$d$93P8g$,I,MW$G$7$g$&!#(B
foozy@708 964 \end{note}
foozy@708 965
foozy@708 966 \subsection{Web server configuration checklist}
foozy@708 967
foozy@708 968 $BFI$_?J$a$kA0$K!"(B
foozy@708 969 $B%7%9%F%`$N@_Dj>u67$K4X$9$k4v$D$+$N3NG'$r9T$$$^$7$g$&!#(B
foozy@708 970
foozy@708 971 \begin{enumerate}
foozy@708 972 \item $B%&%'%V%5!<%P$O%$%s%9%H!<%k$5$l$F$$$^$9$+!)(B
foozy@708 973 Mac OS X $B$O(B Apache $B$,%$%s%9%H!<%k$5$l$?>uBV$G=P2Y$5$l$^$9$,!"(B
foozy@708 974 $BB?$/$N%7%9%F%`$G$O%&%'%V%5!<%P$O%$%s%9%H!<%k$5$l$F$$$^$;$s!#(B
foozy@708 975
foozy@708 976 \item $B%&%'%V%5!<%P$,%$%s%9%H!<%k$5$l$F$$$k>l9g!"(B
foozy@708 977 $B$=$l$O<B:]$K2TF0$7$F$$$^$9$+!)(B
foozy@708 978 $B%&%'%V%5!<%P$,%$%s%9%H!<%k$5$l$F$$$?>l9g$G$b!"(B
foozy@708 979 $BB?$/$N%7%9%F%`$N4pDl>uBV$O!"%&%'%V%5!<%P$,L58z2=$5$l$F$$$^$9!#(B
foozy@708 980
foozy@708 981 \item CGI $B$r2TF0$5$;$h$&$H$7$F$$$k%G%#%l%/%H%j$O!"(B
foozy@708 982 $B%&%'%V%5!<%P$N@_Dj$G(B CGI $B$N<B9T$,5v2D$5$l$F$$$^$9$+!)(B
foozy@708 983 $BB?$/$N%&%'%V%5!<%P$N4pDl>uBV$O!"(B
foozy@708 984 CGI $B%W%m%0%i%`$N<B9T5!G=$,L@<(E*$KL58z2=$5$l$F$$$^$9!#(B
foozy@708 985
foozy@708 986 \end{enumerate}
foozy@708 987
foozy@708 988 $B%&%'%V%5!<%P$,%$%s%9%H!<%k$5$l$F$$$J$$>l9g$d!"(B
foozy@708 989 Apache $B%&%'%V%5!<%P$N@_Dj7P83$,$"$^$jL5$$>l9g$K$O!"(B
foozy@708 990 Apache $B%&%'%V%5!<%P$NBe$o$j$K(B
foozy@708 991 \texttt{lighttpd} $B%&%'%V%5!<%P$NMxMQ$r$*A&$a$7$^$9!#(B
foozy@708 992 Apache $B%&%'%V%5!<%P$N@_Dj$O!"(B
foozy@708 993 $B6E$C$F$$$F3n$D$o$+$j$K$/$$$H$$$&I>H=$K8+9g$&$b$N$,$"$j$^$9!#(B
foozy@708 994 \texttt{lighttpd} $B$O(B Apache $B%&%'%V%5!<%PDx$N5!G=$OL5$$$b$N$N!"(B
foozy@708 995 $BB-$j$J$$5!G=$NKX$I$,(B Mercurial $B%j%]%8%H%j$N1?MQ$K$O4X78$J$$$b$N$G$9!#(B
foozy@708 996 $B$=$l$K2C$($F!"(B
foozy@708 997 $BL@$i$+$K(B \texttt{lighttpd} $B$O(B
foozy@708 998 Apache $B%&%'%V%5!<%P$h$j$b4JC1$KMxMQ$,3+;O$G$-$^$9!#(B
foozy@708 999
foozy@708 1000 \subsection{Basic CGI configuration}
foozy@708 1001
foozy@708 1002 Unix $BE*$J%7%9%F%`$rMxMQ$7$F$$$k>l9g!"(B
foozy@708 1003 $B%&%'%V%Z!<%8$H$7$F8x3+$9$k$?$a$N(B
foozy@708 1004 \dirname{public\_html} $B$N$h$&$J%G%#%l%/%H%j$r!"(B
foozy@708 1005 $B%[!<%`%G%#%l%/%H%jG[2<$K;}$D$N$,6&DLG'<1$H$J$C$F$$$^$9!#(B
foozy@708 1006 $B$3$N%G%#%l%/%H%jD>2<$KCV$$$?(B
foozy@708 1007 \filename{foo} $B$H$$$&L>A0$N%U%!%$%k$O!"(B
foozy@708 1008 \texttt{http://www.example.com/\~username/foo} $B$H$$$&(B
foozy@708 1009 URL $B$G;2>H2DG=$K$J$j$^$9!#(B
foozy@708 1010
foozy@708 1011 $B@_Dj$r;O$a$k$KEv$?$C$F!"(B
foozy@708 1012 Mercurial $B$N%$%s%9%H!<%k@h$K3JG<$5$l$F$$$k(B
foozy@708 1013 \sfilename{hgweb.cgi} $B%9%/%j%W%H$N=j:_$r3NG'$7$F$/$@$5$$!#(B
foozy@708 1014 $B%7%9%F%`>e$N=j:_$,$9$0$K$O$o$+$i$J$+$C$?>l9g$O!"(B
foozy@708 1015 Mercurial $B$N%^%9%?!<%j%]%8%H%j$+$i(B
foozy@708 1016 \url{http://www.selenic.com/repo/hg/raw-file/tip/hgweb.cgi}
foozy@708 1017 $B$rD>@\%@%&%s%m!<%I$7$F$/$@$5$$!#(B
foozy@708 1018
foozy@708 1019 $B>e5-%9%/%j%W%H$r(B
foozy@708 1020 \dirname{public\_html} $BG[2<$KG[CV$7!"(B
foozy@708 1021 $B<B9T2DG=$H$J$k$h$&$K8"8B@_Dj$r9T$$$^$9!#(B
foozy@708 1022
foozy@708 1023 \begin{codesample2}
foozy@708 1024 cp .../hgweb.cgi ~/public_html
foozy@708 1025 chmod 755 ~/public_html/hgweb.cgi
foozy@708 1026 \end{codesample2}
foozy@708 1027
foozy@708 1028 \command{chmod} $B%3%^%s%I$X$N(B \texttt{755} $B0z?t;XDj$O!"(B
foozy@708 1029 $B%9%/%j%W%H$K<B9T2DG=8"8B$rIUM?$9$k0J>e$NIU2CE*$J;XDj$r0UL#$7$^$9!#(B
foozy@708 1030 $B$3$N@_Dj$K$h$j!"%9%/%j%W%H$,C/$+$i$b<B9T2DG=$K$J$k$HF1;~$K!"(B
foozy@708 1031 ``group'' $B$*$h$S(B ``other'' $B$K$h$k=q$-9~$_8"8B$,(B\emph{$BGmC%(B}$B$5$l$^$9!#(B
foozy@708 1032 $B$3$l$i$N=q$-9~$_8"8B$rM-8z$J$^$^$K$7$?>l9g!"(B
foozy@708 1033 Apache $B$N(B \texttt{suexec} $B%5%V%7%9%F%`$O!"(B
foozy@708 1034 $B$*$=$i$/%9%/%j%W%H$N<B9T$r5qH]$9$k$G$7$g$&!#(B
foozy@708 1035 $B<B$N$H$3$m(B \texttt{suexec} $B$O!"(B
foozy@708 1036 $B%9%/%j%W%H$,G[CV$5$l$F$$$k(B\emph{$B%G%#%l%/%H%j(B}$B$KBP$9$k(B
foozy@708 1037 ``group'' $B$*$h$S(B ``other'' $B$K$h$k=q$-9~$_8"8B$,GmC%$5$l$F$$$k$3$H$bMW5a$7$^$9!#(B
foozy@708 1038
foozy@708 1039 \begin{codesample2}
foozy@708 1040 chmod 755 ~/public_html
foozy@708 1041 \end{codesample2}
foozy@708 1042
foozy@708 1043 \subsubsection{What could \emph{possibly} go wrong?}
foozy@708 1044 \label{sec:collab:wtf}
foozy@708 1045
foozy@708 1046 CGI $B$rG[CV$7$?$J$i$P!"(B
foozy@708 1047 $B%&%'%V%V%i%&%6$r5/F0$7$F(B
foozy@708 1048 \url{http://myhostname/~myuser/hgweb.cgi} $B$KAjEv$9$k(B
foozy@708 1049 URL $B$K%"%/%;%9$7$F$_$^$7$g$&!#(B
foozy@708 1050 $BC"$7!"$A$g$C$H$7$?<:GT$K$O(B\emph{$B?H9=$($F$*$$$F$/$@$5$$(B}$B!#(B
foozy@708 1051 $B=jK>$N(B URL $B$X$N%"%/%;%9$,<:GT$9$k8x;;$OHs>o$K9b$/!"(B
foozy@708 1052 $B$=$NM}M3$OB?4t$KEO$j$^$9!#(B
foozy@708 1053 $B<B:]$N$H$3$m!"(B
foozy@708 1054 $B0J2<$N5/$3$jF@$k%(%i!<MW0x$NA4$F$Gm5$/2DG=@-$,$"$j$^$9$+$i!"(B
foozy@708 1055 $B$3$N@h$OCm0U?<$/FI$_?J$a$F$/$@$5$$!#(B
foozy@708 1056 $B0J2<$G=R$Y$kLdBj$O!"(B
foozy@708 1057 $B$^$C$5$i$J>uBV$+$i%$%s%9%H!<%k$7$?(B Apache $B$r;H$$!"(B
foozy@708 1058 $B$3$N<BNc$r9T$&$?$a$K?7$?$K@8@.$7$?%f!<%6%"%+%&%s%H$G!"(B
foozy@708 1059 Fedora~7 $B>e$G:n6H$r<B;\$7$?:]$K!"(B
foozy@708 1060 $BI.<T$,<B:]$KD>LL$7$?A4$F$NLdBj$G$9!#(B
foozy@708 1061
foozy@708 1062 $B;HMQ$7$F$$$k%&%'%V%5!<%P$O!"(B
foozy@708 1063 $B%f!<%6Kh$N%G%#%l%/%H%j$rL58z2=$7$F$$$k$+$b$7$l$^$;$s!#(B
foozy@708 1064 Apache $B$r;HMQ$7$F$$$k>l9g$O!"(B
foozy@708 1065 $B@_Dj%U%!%$%kCf$K(B \texttt{UserDir} $B;XDj$NM-L5$r3NG'$7$F$/$@$5$$!#(B
foozy@708 1066 $B$3$N;XDj$,L5$$>l9g!"%f!<%6Kh%G%#%l%/%H%j$OL58z$K$J$j$^$9!#(B
foozy@708 1067 $B;XDj$,M-$C$F$b(B\texttt{$BL58z2=$5$l$F$$$k(B}$B>l9g$b!"(B
foozy@708 1068 $B%f!<%6Kh%G%#%l%/%H%j$OL58z$K$J$j$^$9!#(B
foozy@708 1069 $BM-8z$J(B \texttt{UserDir} $B;XDj$,$"$k>l9g!"(B
foozy@708 1070 \texttt{UserDir} $B;XDj$G5-=R$5$l$F$$$kJ8;zNs(B
foozy@708 1071 $B!JNc$($P(B \dirname{public\_html}$B!K$,!"(B
foozy@708 1072 $B%[!<%`%G%#%l%/%H%jD>2<$G(B Apache $B$,;2>H$9$k%5%V%G%#%l%/%H%jL>$K$J$j$^$9!#(B
foozy@708 1073
foozy@708 1074 $B%U%!%$%k$N%"%/%;%98"8B$,87$7$9$.$k2DG=@-$b$"$j$^$9!#(B
foozy@708 1075 $B%&%'%V%5!<%P$O!"(B
foozy@708 1076 $BBP>]$H$J$k%f!<%6$N%[!<%`%G%#%l%/%H%j!"(B
foozy@708 1077 $B$*$h$S(B \dirname{public\_html}
foozy@708 1078 $BG[2<$N%U%!%$%k!&%G%#%l%/%H%j$NFI$_9~$_$,$G$-$J$1$l$P$J$j$^$;$s!#(B
foozy@708 1079 $BE,@Z$J8"8B@_Dj$r9T$&$?$a$N4JC1$J<j=g$r0J2<$K<($7$^$9!#(B
foozy@708 1080
foozy@708 1081 \begin{codesample2}
foozy@708 1082 chmod 755 ~
foozy@708 1083 find ~/public_html -type d -print0 | xargs -0r chmod 755
foozy@708 1084 find ~/public_html -type f -print0 | xargs -0r chmod 644
foozy@708 1085 \end{codesample2}
foozy@708 1086
foozy@708 1087 $B8"8B@_Dj$K4X$9$kB>$NMW0x$N2DG=@-$,$"$k>l9g$O!"(B
foozy@708 1088 $B%V%i%&%6$G$N=jK>$N(B URL $B%"%/%;%9;~$K!"(B
foozy@708 1089 $B40A4$K6u$N2hLL$,I=<($5$l$k$3$H$G$7$g$&!#(B
foozy@708 1090 $B$3$N>l9g$O!"$*$=$i$/%"%/%;%98"8B$,(B\emph{$B4K$9$.$k(B}$B$N$G$7$g$&!#(B
foozy@708 1091 $BNc$($P(B Apache $B$N(B \texttt{suexec} $B%5%V%7%9%F%`$O!"(B
foozy@708 1092 group $B$J$$$7(B other $B$K=q$-9~$_8"8B$,IUM?$5$l$?%9%/%j%W%H$O<B9T$7$^$;$s!#(B
foozy@708 1093
foozy@708 1094 $B;HMQ$7$F$$$k%&%'%V%5!<%P$,!"(B
foozy@708 1095 $B%f!<%6Kh%G%#%l%/%H%jG[2<$N(B CGI $B%W%m%0%i%`$N<B9T$r!"(B
foozy@708 1096 $B6X;_$9$k$h$&$K@_Dj$5$l$F$$$k2DG=@-$bM-$j$^$9!#(B
foozy@708 1097 $BI.<T$N(B Fedora~7 $B%7%9%F%`$K$*$1$k(B Apache $B$N!"(B
foozy@708 1098 $B=i4|>uBV$N%f!<%6Kh@_Dj$r0J2<$K<($7$^$9!#(B
foozy@708 1099
foozy@708 1100 \begin{codesample2}
foozy@708 1101 <Directory /home/*/public_html>
foozy@708 1102 AllowOverride FileInfo AuthConfig Limit
foozy@708 1103 Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
foozy@708 1104 <Limit GET POST OPTIONS>
foozy@708 1105 Order allow,deny
foozy@708 1106 Allow from all
foozy@708 1107 </Limit>
foozy@708 1108 <LimitExcept GET POST OPTIONS>
foozy@708 1109 Order deny,allow
foozy@708 1110 Deny from all
foozy@708 1111 </LimitExcept>
foozy@708 1112 </Directory>
foozy@708 1113 \end{codesample2}
foozy@708 1114
foozy@708 1115 $BBP>]$H$J$k(B Apache $B@_Dj%U%!%$%kCf$K;w$?$h$&$J(B
foozy@708 1116 \texttt{Directory} $B@_Dj$,$"$k>l9g!"(B
foozy@708 1117 \texttt{Options} $B;XDj$KCmL\$7$F$/$@$5$$!#(B
foozy@708 1118 \texttt{ExecCGI} $B$,;XDj$5$l$F$$$J$$>l9g$O0lMwKvHx$K$3$l$rDI2C$7!"(B
foozy@708 1119 $B%&%'%V%5!<%P$r:F5/F0$7$F$/$@$5$$!#(B
foozy@708 1120
foozy@708 1121 Apache $B$,(B CGI $B$r<B9T$9$k$N$G$O$J$/!"(B
foozy@708 1122 CGI $B%9%/%j%W%H$NFbMF$=$N$b$N$rJV5Q$7$F$-$?>l9g$O!"(B
foozy@708 1123 $B0J2<$N5-=R$r!J4{$K5-=R$,$"$k$J$i$P!KM-8z2=$9$k$J$jDI2C$9$k$J$j$7$F$/$@$5$$!#(B
foozy@708 1124
foozy@708 1125 \begin{codesample2}
foozy@708 1126 AddHandler cgi-script .cgi
foozy@708 1127 \end{codesample2}
foozy@708 1128
foozy@708 1129 $B<!$KLdBj$NH/@8$7F@$k%1!<%9$G$O!"(B
foozy@708 1130 Python $B$N%P%C%/%H%l!<%9$,I=<($5$l!"(B
foozy@708 1131 \texttt{mercurial} $B4XO"%b%8%e!<%k$,%$%s%]!<%H(B
foozy@708 1132 $B!J(Bimport$B!K$G$-$J$$;]$rEA$($F$$$k$3$H$G$7$g$&!#(B
foozy@708 1133 $B=jK>$N7k2L$OF@$i$l$F$$$^$;$s$,!"(B
foozy@708 1134 $B%&%'%V%5!<%P$O(B CGI $B%9%/%j%W%H$N<B9T$r9T$&$h$&$K$J$C$?$N$G!"(B
foozy@708 1135 $B@hDx$N>uBV$+$i$OA0?J$7$F$$$^$9!*(B
foozy@708 1136 $B%$%s%]!<%H$,$G$-$J$$;]$N%(%i!<$O!"(B
foozy@708 1137 $B%7%9%F%`%o%$%I$GMxMQ2DG=$J(B Mercurial $B$G$O$J$/!"(B
foozy@708 1138 $B$*$=$i$/8D?ME*$K%$%s%9%H!<%k$7$?(B Mercurial
foozy@708 1139 $B$r<B9T$7$F$$$k>l9g$K$N$_H/@8$7$^$9!#(B
foozy@708 1140 $B%&%'%V%5!<%P$,(B CGI $B%W%m%0%i%`$r<B9T$9$k>l9g!"(B
foozy@708 1141 $B3F8D?M$NBPOCE*%m%0%$%s%;%C%7%g%s$G<B;\$5$l$F$$$k4D6-JQ?t;XDj$,L5$$!"(B
foozy@708 1142 $B$H$$$&$3$H$rK:$l$J$$$G$/$@$5$$!#(B
foozy@708 1143 $B$3$N%(%i!<$,H/@8$7$?>l9g$O!"(B
foozy@708 1144 \envar{PYTHONPATH} $B4D6-JQ?t@_Dj$,E,@Z$K$J$k$h$&$K(B
foozy@708 1145 \sfilename{hgweb.cgi} $B$N5-=R$rJT=8$7$F$/$@$5$$!#(B
foozy@708 1146
foozy@708 1147 $B:G=*E*$K!"(B
foozy@708 1148 \dirname{/path/to/repository} $B$,8+$D$+$i$J$$;]$rEA$($k(B
foozy@708 1149 Python $B$N%P%C%/%H%l!<%9$,(B\emph{$B3N<B$K(B}$BI=<($5$l$k$3$H$G$7$g$&!#(B
foozy@708 1150 \sfilename{hgweb.cgi} $B%9%/%j%W%H$rJT=8$7$F!"(B
foozy@708 1151 $BJ8;zNs(B \dirname{/path/to/repository}
foozy@708 1152 $B$r<B:]$K8x3+$7$?$$%j%]%8%H%j$X$N@dBP%Q%9$GCV$-49$($F$/$@$5$$!#(B
foozy@708 1153
foozy@708 1154 $B$3$3$^$GMh$l$P!"(B
foozy@708 1155 $B%&%'%V%V%i%&%6$G%Z!<%8$r%j%m!<%I$7$?:]$K!"(B
foozy@708 1156 $Be:No$K(B HTML $B$G@07A$5$l$?%j%]%8%H%jMzNr$NI=<($r8+$k$3$H$,$G$-$kH&$G$9!#(B
foozy@708 1157 $B$*Hh$lMM$G$9!#(B
foozy@708 1158
foozy@708 1159 \subsubsection{Configuring lighttpd}
foozy@708 1160
foozy@708 1161 $BE0DlE*$K<B83$9$k$?$a$K!"(B
foozy@708 1162 $B$3$l$^$G(B Apache $B$K4X$7$F@bL@$7$?$N$HF1MM$K!"(B
foozy@708 1163 $B6aG/?M5$$,9b$^$C$F$$$k(B \texttt{lighttpd} $B%&%'%V%5!<%P$G!"(B
foozy@708 1164 $BF1$8%j%]%8%H%j$r8x3+$9$k$?$a$N@_Dj5-=R$KD)@o$7$F$_$^$7$?!#(B
foozy@708 1165 Apache $B$K$D$$$F$3$l$^$G35@b$7$F$-$?A4$F$NLdBj$O4{$K9nI~:Q$_$G$9$7!"(B
foozy@708 1166 $B$=$NKX$I$O%&%'%V%5!<%P<BAu$K0MB8$7$^$;$s!#(B
foozy@708 1167 $B7k2L$H$7$F!"(B
foozy@708 1168 $B%U%!%$%k!&%G%#%l%/%H%j$N8"8B@_Dj$,BEEv$G$"$k$3$H$H!"(B
foozy@708 1169 \sfilename{hgweb.cgi} $B%9%/%j%W%H$,E,@Z$K2~JQ:Q$_$G$"$k$3$H$O!"(B
foozy@708 1170 $B$"$kDxEY3N?.$G$-$^$9!#(B
foozy@708 1171
foozy@708 1172 $B0lC6(B Apache $B$G$N8x3+$K@.8y$7$F$$$l$P!"(B
foozy@708 1173 \texttt{lighttpd} $B$G$N%j%]%8%H%j8x3+$O4JC1(B
foozy@708 1174 $B!J8@$$49$($k$J$i!"(B
foozy@708 1175 \texttt{lighttpd} $B$r;HMQ$9$k>l9g$G$b!"(B
foozy@708 1176 $BA0=R$N(B Apache $B$K4X$9$k@bL@$rFI$`$Y$-$H8@$($^$9(B
foozy@708 1177 $B!K$G$9!#(B
foozy@708 1178 $B=i4|>uBV$G(B
foozy@708 1179 \texttt{mod\_cgi} $B$*$h$S(B \texttt{mod\_userdir} $B$,L58z2=$5$l$F$$$?>l9g!"(B
foozy@708 1180 $B$3$l$i$rM-8z2=$9$k$?$a$K!"(B
foozy@708 1181 $B$^$:$O!"(B
foozy@708 1182 $B@_Dj%U%!%$%k$N(B \texttt{mod\_access} $B%;%/%7%g%s$rJT=8$9$kI,MW$,$"$j$^$9!#(B
foozy@708 1183 $B$=$N8e!"$3$l$i$N%b%8%e!<%k$r@_Dj$9$k$?$a$K!"(B
foozy@708 1184 $B@_Dj%U%!%$%kKvHx$K?t9T$[$IDI2C$7$^$9!#(B
foozy@708 1185
foozy@708 1186 \begin{codesample2}
foozy@708 1187 userdir.path = "public_html"
foozy@708 1188 cgi.assign = ( ".cgi" => "" )
foozy@708 1189 \end{codesample2}
foozy@708 1190
foozy@708 1191 $B$3$N5-=R$K$h$j!"(B
foozy@708 1192 \texttt{lighttpd} $B$O%f!<%6Kh$N%G%#%l%/%H%j$*$h$S(B CGI $B$rG'<1$7$^$9!#(B
foozy@708 1193 Apache $B$h$j$bA0$K(B
foozy@708 1194 \texttt{lighttpd} $B$N@_Dj$r$7$?$H$7$?$i!"(B
foozy@708 1195 $BKX$I4V0c$$$J$/!"(B
foozy@708 1196 Apache
foozy@708 1197 $B$N@_Dj$N:]$K7P83$7$?$N$HF1$8%7%9%F%`%l%Y%k$N@_Dj%_%9$rHH$7$?$3$H$G$7$g$&!#(B
foozy@708 1198 $B$7$+$7(B
foozy@708 1199 Apache $B$N;HMQ7P83$,#1#0G/0J>e$"$j!"(B
foozy@708 1200 $B3n$D=i$a$F$N(B \texttt{lighttpd} $B;HMQ$G$O$"$k$b$N$N!"(B
foozy@708 1201 Apache $B$N@_Dj$h$j$b(B \texttt{lighttpd} $B$N$=$l$OCx$7$/MF0W$G$"$k$H;W$o$l$^$9!#(B
foozy@708 1202
foozy@708 1203 \subsection{Sharing multiple repositories with one CGI script}
foozy@708 1204
foozy@708 1205 $BC10l$N%j%]%8%H%j$N$_$7$+8x3+$G$-$J$$$H$$$&$N$O!"(B
foozy@708 1206 \sfilename{hgweb.cgi} $B%9%/%j%W%H$NG:$^$7$$@)Ls$G$9!#(B
foozy@708 1207 $BF1$8%9%/%j%W%H(B\footnote{$BLuCm(B: $B87L)$K$O!"(B
foozy@708 1208 $B8x3+BP>]%j%]%8%H%j$N%Q%9$,0[$J$k$N$G$9$,!"(B
foozy@708 1209 $B35$M!VF1$8!W$H8@$C$FNI$$$G$7$g$&!#(B
foozy@708 1210 }$B$r0[$J$kL>A0$GJ#@=$9$k!"(B
foozy@708 1211 $B$H$$$&LLE]$JJ}K!$h$j$O!"(B
foozy@708 1212 \sfilename{hgwebdir.cgi} $B%9%/%j%W%H$N;HMQ$,$*A&$a$G$9!#(B
foozy@708 1213
foozy@708 1214 \sfilename{hgwebdir.cgi} $B$N@_Dj<j=g$O!"(B
foozy@708 1215 \sfilename{hgweb.cgi} $B$h$j$bB?>/9~$_F~$C$F$$$^$9!#(B
foozy@708 1216 $B$^$:;O$a$K(B
foozy@708 1217 $B%9%/%j%W%H$N%3%T!<$rF~<j$7$^$9!#(B
foozy@708 1218 $B<j6a$KL5$$>l9g$O(B
foozy@708 1219 Mercurial $B$N%^%9%?!<%j%]%8%H%j$+$i(B
foozy@708 1220 \url{http://www.selenic.com/repo/hg/raw-file/tip/hgwebdir.cgi}
foozy@708 1221 $B$rD>@\%@%&%s%m!<%I$7$F$/$@$5$$!#(B
foozy@708 1222
foozy@708 1223 \dirname{public\_html} $BG[2<$K>e5-%9%/%j%W%H$rG[CV$7!"(B
foozy@708 1224 $B<B9T2DG=$H$J$k$h$&$K8"8B@_Dj$r9T$$$^$9!#(B
foozy@708 1225
foozy@708 1226 \begin{codesample2}
foozy@708 1227 cp .../hgwebdir.cgi ~/public_html
foozy@708 1228 chmod 755 ~/public_html ~/public_html/hgwebdir.cgi
foozy@708 1229 \end{codesample2}
foozy@708 1230
foozy@708 1231 $B4pK\E*$J@_Dj$,:Q$s$@$J$i!"(B
foozy@708 1232 $B%V%i%&%6$G(B \url{http://myhostname/~myuser/hgwebdir.cgi}
foozy@708 1233 $B$K%"%/%;%9$7$F$_$^$7$g$&!#(B
foozy@708 1234 $B6u$N%j%]%8%H%j%j%9%H$,I=<($5$l$kH&$G$9!#(B
foozy@708 1235 $B2?$bI=<($5$l$J$$$+!"%(%i!<%a%C%;!<%8$,I=<($5$l$k>l9g$O!"(B
foozy@708 1236 \ref{sec:collab:wtf}~$B@a$G@bL@$7$?@x:_E*LdBj0lMw$r0lDL$j3NG'$7$F$/$@$5$$!#(B
foozy@708 1237
foozy@708 1238 \sfilename{hgwebdir.cgi} $B%9%/%j%W%H$O30It@_Dj%U%!%$%k$rI,MW$H$7$^$9!#(B
foozy@708 1239 $B4pDl>uBV$N(B
foozy@708 1240 \sfilename{hgwebdir.cgi} $B%9%/%j%W%H$O!"(B
foozy@708 1241 $B<+?H$HF1$8%G%#%l%/%H%j$K3JG<$5$l$?(B
foozy@708 1242 \sfilename{hgweb.config} $B%U%!%$%k$rFI$_9~$b$&$H$7$^$9!#(B
foozy@708 1243 $B$3$N%U%!%$%k$r@8@.$7!"(B
foozy@708 1244 $BC/$KBP$7$F$bFI$_=P$78"8B$rIUM?$7$J$1$l$P$J$j$^$;$s!#(B
foozy@708 1245 $B$3$N%U%!%$%k$N5-=R7A<0$O!"(B
foozy@708 1246 Windows $B$K$*$1$k(B ``ini'' $B%U%!%$%k$N$=$l$HF1$8$G!"(B
foozy@708 1247 Python $B$N(B
foozy@708 1248 \texttt{ConfigParser}~\cite{web:configparser}
foozy@708 1249 $B$K$h$j2r@O2DG=$J7A<0$G$9!#(B
foozy@708 1250
foozy@708 1251 $B:G$b4JC1$K(B \sfilename{hgwebdir.cgi} $B$r@_Dj$9$k$K$O!"(B
foozy@708 1252 \texttt{collections} $B$H$$$&L>A0$N%;%/%7%g%s$r@_Dj$7$F$/$@$5$$!#(B
foozy@708 1253 $B$3$N%;%/%7%g%s$r5-=R$9$k$3$H$G!"(B
foozy@708 1254 $BL>IU$1$?%G%#%l%/%H%jG[2<$N(B\emph{$BA4$F$N(B}$B%j%]%8%H%j$r<+F0E*$K8x3+$7$^$9!#(B
foozy@708 1255 $B$3$N%;%/%7%g%s$N5-=R$O0J2<$N$h$&$K$J$j$^$9!#(B
foozy@708 1256
foozy@708 1257 \begin{codesample2}
foozy@708 1258 [collections]
foozy@708 1259 /my/root = /my/root
foozy@708 1260 \end{codesample2}
foozy@708 1261
foozy@708 1262 Mercurial $B$O$3$N5-=R$r2r<a$9$k$KEv$?$j!"(B
foozy@708 1263 ``\texttt{=}''
foozy@708 1264 $B5-9f$N(B\emph{$B1&JU(B}$B$K5-=R$5$l$?%G%#%l%/%H%j3,AX2<$G%j%]%8%H%j$rC5$7!"(B
foozy@708 1265 ``\texttt{=}'' $B5-9f$N(B\emph{$B:8JU(B}$B$N%F%-%9%H$K9gCW$9$kItJ,$r!"(B
foozy@708 1266 $B%&%'%V%$%s%?%U%'!<%9$G$N0lMwI=<($G<B:]$K8x3+$5$l$kL>A0$+$i=|30$7$^$9!#(B
foozy@708 1267 $B=|30=hM}$N8e$K;D$C$?%Q%9MWAG$O!"(B``$B2>A[%Q%9(B''$B$H8F$P$l$^$9!#(B
foozy@708 1268
foozy@708 1269 $BNc$H$7$F(B
foozy@708 1270 \dirname{/my/root/this/repo} $B$K%j%]%8%H%j$,$"$k$H$7$?>l9g!"(B
foozy@708 1271 CGI $B%9%/%j%W%H$OKAF,$N(B
foozy@708 1272 \dirname{/my/root} $BItJ,$rL>A0$+$i=|30$7!"(B
foozy@708 1273 $B2>A[%Q%9$H$7$F(B \dirname{this/repo} $B$r;}$D%j%]%8%H%j$H$7$F8x3+$7$^$9!#(B
foozy@708 1274 CGI $B%9%/%j%W%H$N4pDl(B URL $B$r(B
foozy@708 1275 \url{http://myhostname/~myuser/hgwebdir.cgi} $B$H$9$k$H!"(B
foozy@708 1276 $B$3$N%j%]%8%H%j$N40A4$J(B URL $B$O!"(B
foozy@708 1277 \url{http://myhostname/~myuser/hgwebdir.cgi/this/repo} $B$H$J$j$^$9!#(B
foozy@708 1278
foozy@708 1279 $B$3$N@_Dj5-=RNc$G$N:8JU$r(B \dirname{/my/root} $B$+$i(B
foozy@708 1280 \dirname{/my} $B$KJQ99$7$?>l9g!"(B
foozy@708 1281 \sfilename{hgwebdir.cgi} $B$O%j%]%8%H%jL>$+$i(B
foozy@708 1282 \dirname{/my} $B$N$_$r#z#yJb30$9$k$N$G!"(B
foozy@708 1283 $B2>A[%Q%9$O(B \dirname{this/repo} $B$G$O$J$/(B
foozy@708 1284 \dirname{root/this/repo} $B$H$J$j$^$9!#(B
foozy@708 1285
foozy@708 1286 \sfilename{hgwebdir.cgi} $B$O!"(B
foozy@708 1287 $B@_Dj%U%!%$%kCf$N(B \texttt{collections}
foozy@708 1288 $B%;%/%7%g%s$GNs5s$5$l$?8D!9$N%G%#%l%/%H%j$KBP$7$F!"(B
foozy@708 1289 $B:F5"E*$K%j%]%8%H%j$rC5$7$^$9$,!"(B
foozy@708 1290 $B8+$D$+$C$?%j%]%8%H%j$+$i99$K2<$X$N:F5"E*C5:w$O(B\texttt{$B9T$$$^$;$s(B}$B!#(B
foozy@708 1291
foozy@708 1292 \texttt{collections} $B$N5!9=$O!"(B
foozy@708 1293 $BB?$/$N%j%]%8%H%j$r(B``fire and forget''$B:nK!$G8x3+$9$k$N$KE,$7$F$$$^$9!#(B
foozy@708 1294 CGI $B$d@_Dj%U%!%$%k$N5-=R$O0lEY$G;vB-$j$^$9!#(B
foozy@708 1295 $B@_Dj$,:Q$s$@$J$i!"(B
foozy@708 1296 \sfilename{hgwebdir.cgi}
foozy@708 1297 $B$KC5:w$r;X<($7$?%G%#%l%/%H%j3,AXG[2<$H$N4V$G%j%]%8%H%j$N0\F0$r9T$&$@$1$G!"(B
foozy@708 1298 $B%j%]%8%H%j$N8x3+!&Hs8x3+$rG$0U$N;~E@$G9T$&$3$H$,$G$-$^$9!#(B
foozy@708 1299
foozy@708 1300 \subsubsection{Explicitly specifying which repositories to publish}
foozy@708 1301
foozy@708 1302 \sfilename{hgwebdir.cgi} $B%9%/%j%W%H$O(B
foozy@708 1303 \texttt{collections} $B$K$h$k8x3+$N;EAH$_$K2C$($F!"(B
foozy@708 1304 $BFCDj$N0lMw;XDj$K$h$k%j%]%8%H%j8x3+$r$9$k$3$H$b$G$-$^$9!#(B
foozy@708 1305 $B$3$NJ}K!$G$N8x3+$r$9$k$K$O!"(B
foozy@708 1306 $B0J2<$N$h$&$J7A<0$NFbMF$r;}$D(B
foozy@708 1307 \texttt{paths} $B%;%/%7%g%s$r5-=R$9$kI,MW$,$"$j$^$9!#(B
foozy@708 1308
foozy@708 1309 \begin{codesample2}
foozy@708 1310 [paths]
foozy@708 1311 repo1 = /my/path/to/some/repo
foozy@708 1312 repo2 = /some/path/to/another
foozy@708 1313 \end{codesample2}
foozy@708 1314
foozy@708 1315 $B>e5-$NNc$G$O!"8D!9$NDj5A$N:8JU$,2>A[%Q%9!J(BURL $BCf$K8=$l$k%Q%9MWAG!K!"(B
foozy@708 1316 $B1&JU$,%j%]%8%H%j$X$N%Q%9$H$J$j$^$9!#(B
foozy@708 1317 $B2>A[%Q%9$N;XDj$H!"(B
foozy@708 1318 $B%U%!%$%k%7%9%F%`>e$N%j%]%8%H%j0LCV$K$O!"(B
foozy@708 1319 $B2?$N4XO"@-$bL5$$E@$KCm0U$7$F$/$@$5$$!#(B
foozy@708 1320
foozy@708 1321 $BC10l$N@_Dj%U%!%$%kCf$G(B
foozy@708 1322 \texttt{collections} $B$H(B
foozy@708 1323 \texttt{paths} $B$NN>J}$rF1;~$K;HMQ$9$k$3$H$b2DG=$G$9!#(B
foozy@708 1324
foozy@708 1325 \begin{note}
foozy@708 1326 $BF10l$N2>A[%Q%9$KJ#?t$N%j%]%8%H%j$,4XO"IU$1$i$l$F$$$k>l9g!"(B
foozy@708 1327 \sfilename{hgwebdir.cgi} $B$O%(%i!<$rDLCN$7$^$;$s!#(B
foozy@708 1328 $B$=$NBe$o$j$K!"(B
foozy@708 1329 \sfilename{hgwebdir.cgi} $B$N?6$kIq$$$OM=A[$G$-$J$$$b$N$H$J$j$^$9!#(B
foozy@708 1330 \end{note}
foozy@708 1331
foozy@708 1332 \subsection{Downloading source archives}
foozy@708 1333
foozy@708 1334 Mercurial $B$N%&%'%V%$%s%?%U%'!<%97PM3$G!"(B
foozy@708 1335 $BG$0U$N%j%S%8%g%s$N%"!<%+%$%V$r%@%&%s%m!<%I$9$k$3$H$,2DG=$G$9!#(B
foozy@708 1336 $B$3$N%"!<%+%$%V$K$O!"(B
foozy@708 1337 $BEv3:%j%S%8%g%s$K$*$1$k:n6HNN0h%G%#%l%/%H%j$N%9%J%C%W%7%g%C%H$,3JG<$5$l$^$9$,!"(B
foozy@708 1338 $B%j%]%8%H%j%G!<%?ItJ,$O4^$^$l$^$;$s!#(B
foozy@708 1339
foozy@708 1340 $B$3$N5!G=$O4{Dj>uBV$G$OL58z2=$5$l$F$$$^$9!#(B
foozy@708 1341 $B$3$N5!G=$rM-8z2=$9$k$K$O!"(B
foozy@708 1342 \rcitem{web}{allow\_archive} $B9`L\$r(B
foozy@708 1343 \hgrc $B%U%!%$%k$N(B \rcsection{web} $B%;%/%7%g%s$KDI2C$7$F$/$@$5$$(B\footnote{$BLuCm(B:
foozy@708 1344 $B$3$N$3$H$+$i!"(B
foozy@708 1345 $B%"!<%+%$%V%@%&%s%m!<%I$NM-8z2=!&L58z2=@_Dj$,!"(B
foozy@708 1346 \sfilename{hgwebdir.cgi} $BC10L$G$O$J$/!"(B
foozy@708 1347 $B%j%]%8%H%jC10L$G$N@_Dj$G$"$k$3$H$,$o$+$j$^$9!#(B}$B!#(B
foozy@708 1348
foozy@708 1349 \subsection{Web configuration options}
foozy@708 1350
foozy@708 1351 Mercurial $B$N%&%'%V%$%s%?%U%'!<%9(B
foozy@708 1352 $B!J(B\hgcmd{serve} $B%3%^%s%I$*$h$S(B
foozy@708 1353 \sfilename{hgweb.cgi} $B$J$$$7(B \sfilename{hgwebdir.cgi} $B%9%/%j%W%H!K(B
foozy@708 1354 $B$K$OJQ992DG=$J@_Dj9`L\$,B??t$"$j$^$9!#(B
foozy@708 1355 $B$3$l$i$N@_Dj9`L\$O(B
foozy@708 1356 \rcsection{web} $B%;%/%7%g%s$KB0$7$F$$$^$9!#(B
foozy@708 1357
foozy@708 1358 \begin{description}
foozy@708 1359
foozy@708 1360 \item[\rcitem{web}{allow\_archive}]
foozy@708 1361 Mercurial $B$N%"!<%+%$%V%@%&%s%m!<%I5!G=$rM-8z2=$9$k$+H]$+$r;XDj!#(B
foozy@708 1362 $B$3$N5!G=$rM-8z2=$7$?>l9g%&%'%V%$%s%?%U%'!<%9$NMxMQ<T$O!"(B
foozy@708 1363 $B%j%]%8%H%jCf$N;2>H2DG=$JG$0U$N%j%S%8%g%s$N%"!<%+%$%V$r%@%&%s%m!<%I$G$-$^$9!#(B
foozy@708 1364 $B$3$N5!G=$rM-8z2=$9$k$K$O!"(B
foozy@708 1365 $B0J2<$KNs5s$5$l$k%-!<%o!<%I$NJB$S$r(B
foozy@708 1366 \rcitem{web}{allow\_archive} $B9`L\$K;XDj$9$kI,MW$,$"$j$^$9!#(B
foozy@708 1367
foozy@708 1368 \begin{description}
foozy@708 1369 \item[\texttt{bz2}] \texttt{bzip2} $B05=L$5$l$?(B \command{tar} $B%"!<%+%$%V7A<0!#(B
foozy@708 1370 $B$3$N7A<0$O:G$b9b$$05=LN($rF@$i$l$^$9$,!"(B
foozy@708 1371 $B%5!<%PB&$N(B CPU $B$r:G$b9s;H$7$^$9!#(B
foozy@708 1372
foozy@708 1373 \item[\texttt{gz}] \texttt{gzip} $B05=L$5$l$?(B \command{tar} $B%"!<%+%$%V7A<0!#(B
foozy@708 1374
foozy@708 1375 \item[\texttt{zip}] LZW $B05=L$5$l$?(B \command{zip} $B%"!<%+%$%V7A<0!#(B
foozy@708 1376 $B$3$N7A<0$O05=LN($,:G$bNt$j$^$9$,!"(BWindows $B4D6-$G$O9-$/;HMQ$5$l$F$$$^$9!#(B
foozy@708 1377
foozy@708 1378 \end{description}
foozy@708 1379
foozy@708 1380 $BCM$r;XDj$7$J$+$C$?$j!"(B
foozy@708 1381 \rcitem{web}{allow\_archive} $B9`L\$=$N$b$N$r;XDj$7$J$+$C$?>l9g!"(B
foozy@708 1382 $B%"!<%+%$%V%@%&%s%m!<%I5!G=$OL58z2=$5$l$^$9!#(B
foozy@708 1383 $BMxMQ2DG=$JA4$F$N%"!<%+%$%V7A<0$rM-8z2=$9$k5-=RNc$r0J2<$K<($7$^$9!#(B
foozy@708 1384
foozy@708 1385 \begin{codesample4}
foozy@708 1386 [web]
foozy@708 1387 allow_archive = bz2 gz zip
foozy@708 1388 \end{codesample4}
foozy@708 1389
foozy@708 1390 \item[\rcitem{web}{allowpull}]
foozy@708 1391 $B%&%'%V%$%s%?%U%'!<%97PM3$G$N(B HTTP $B1[$7$N(B
foozy@708 1392 \hgcmd{pull} $B$*$h$S(B \hgcmd{clone} $B$r5v2D$9$k$+H]$+$r;XDj$9$k??56CM!#(B
foozy@708 1393 \texttt{no} $B$J$$$7(B \texttt{false} $B$,;XDj$5$l$?>l9g!"(B
foozy@708 1394 $B%&%'%V%$%s%?%U%'!<%9$N(B``$B?M4V8~$1(B''$BItJ,$N$_$,M-8z2=$5$l$^$9!#(B
foozy@708 1395
foozy@708 1396 \item[\rcitem{web}{contact}]
foozy@708 1397 $B%j%]%8%H%j$N4IM}$r9T$&?MJ*!&AH?%$rFCDj$9$k$?$a$NG$0U$N(B
foozy@708 1398 $B!JC"$76KNO4J7i$J!KJ8;zNs!#(B
foozy@708 1399 $BDL>o$3$NCM$O!"4IM}<T$J$$$7%a!<%j%s%0%j%9%H$NL>A0$HEE;R%a!<%k%"%I%l%9$G$9!#(B
foozy@708 1400 $BB?$/$N>l9g!"(B
foozy@708 1401 $B$3$N>pJs$O%j%]%8%H%jKh$N(B \sfilename{.hg/hgrc} $B%U%!%$%k$K5-=R$7$^$9$,!"(B
foozy@708 1402 $BA4$F$N%j%]%8%H%j$,F10l$NJ]<iC4Ev$K$h$jJ]<i$5$l$F$$$k>l9g!"(B
foozy@708 1403 $BBg0hE*$J(B \hgrc $B%U%!%$%k$K5-=R$9$k$N$bNI$$$G$7$g$&!#(B
foozy@708 1404
foozy@708 1405 \item[\rcitem{web}{maxchanges}]
foozy@708 1406 $B%Z!<%8Kh$KI=<($5$l$k%A%'%s%8%;%C%H$N:GBg?t!J4{DjCM!K$rI=$9?tCM!#(B
foozy@708 1407
foozy@708 1408 \item[\rcitem{web}{maxfiles}]
foozy@708 1409 $B%Z!<%8Kh$KI=<($5$l$kJQ99%U%!%$%k$N:GBg?t!J4{DjCM!K$rI=$9?tCM!#(B
foozy@708 1410
foozy@708 1411 \item[\rcitem{web}{stripes}]
foozy@708 1412 $B%F!<%V%kI=<($K$*$1$k2DFI@-8~>e$N$?$a$K!"(B
foozy@708 1413 $B3F9T$N?'$r8_$$0c$$$K(B``$B<JLOMM(B''$B$H$9$k:]$K!"(B
foozy@708 1414 $B2?9TKh$K?'$rJQ99$9$k$+$N?tCM!#(B
foozy@708 1415
foozy@708 1416 \item[\rcitem{web}{style}]
foozy@708 1417 Mercurial $B$,%&%'%V%$%s%?%U%'!<%9$rI=<($9$k:]$K;HMQ$9$k%F%s%W%l!<%H!#(B
foozy@708 1418 Mercurial $B$O(B \texttt{default} $B$*$h$S(B
foozy@708 1419 \texttt{gitweb} $B$N#2$D$N%&%'%V%$%s%?%U%'!<%9MQ%F%s%W%l!<%H$rF1:-$7$F$$$^$9(B
foozy@708 1420 $B!J8e<T$NJ}$,8+1I$($,NI$$$G$9!K!#(B
foozy@708 1421 $B<+A0$G%+%9%?%^%$%:$7$?%F%s%W%l!<%H$r;XDj$9$k$3$H$b$G$-$^$9!#(B
foozy@708 1422 $B>\:Y$O(B\ref{chap:template}~$B@a$r;2>H$7$F$/$@$5$$!#(B
foozy@708 1423 \texttt{gitweb} $B%9%?%$%k$NMxMQJ}K!$r0J2<$K<($7$^$9!#(B
foozy@708 1424
foozy@708 1425 \begin{codesample4}
foozy@708 1426 [web]
foozy@708 1427 style = gitweb
foozy@708 1428 \end{codesample4}
foozy@708 1429
foozy@708 1430 \item[\rcitem{web}{templates}]
foozy@708 1431 $B%F%s%W%l!<%H%U%!%$%k$N;2>H@h%G%#%l%/%H%j$r<($9%Q%9!#(B
foozy@708 1432 Mercurial $B$N4{DjCM$G$O!"%$%s%9%H!<%k@h%G%#%l%/%H%j$r;2>H$7$^$9!#(B
foozy@708 1433
foozy@708 1434 \end{description}
foozy@708 1435
foozy@708 1436 \sfilename{hgwebdir.cgi} $B$r;HMQ$9$k>l9g!"(B
foozy@708 1437 $B4v$D$+$N@_Dj9`L\$K4X$7$F$OMxJX@->e!"(B
foozy@708 1438 \hgrc $B%U%!%$%k$K5-=R$9$kBe$o$j$K!"(B
foozy@708 1439 \sfilename{hgweb.config} $B%U%!%$%k$N(B
foozy@708 1440 \rcsection{web} $B%;%/%7%g%s$K5-=R$9$k$3$H$,$G$-$^$9!#(B
foozy@708 1441 $B5-=R2DG=$J@_Dj9`L\$O!"(B
foozy@708 1442 \rcitem{web}{motd} $B$*$h$S(B \rcitem{web}{style} $B$G$9!#(B
foozy@708 1443
foozy@708 1444 \subsubsection{Options specific to an individual repository}
foozy@708 1445
foozy@708 1446 $B%f!<%6Kh$J$$$7Bg0hE*$J(B \hgrc $B%U%!%$%k$G$O$J$/!"(B
foozy@708 1447 $B%j%]%8%H%jKh$N(B \sfilename{.hg/hgrc} $B$G5-=R$9$Y$-(B
foozy@708 1448 \rcsection{web} $B%;%/%7%g%s$N@_Dj9`L\$,4v$D$+$"$j$^$9!#(B
foozy@708 1449
foozy@708 1450 \begin{description}
foozy@708 1451 \item[\rcitem{web}{description}]
foozy@708 1452 $B%j%]%8%H%j$NFbMF$J$$$7L\E*$r5-=R$7$?G$0U$N(B
foozy@708 1453 $B!JC"$76KNO4J7i$J!KJ8;zNs!#(B
foozy@708 1454
foozy@708 1455 \item[\rcitem{web}{name}]
foozy@708 1456 $B%&%'%V%$%s%?%U%'!<%9$K$*$1$k%j%]%8%H%j;2>HL>$r<($9J8;zNs!#(B
foozy@708 1457 $B$3$NCM$O!"(B
foozy@708 1458 $B%j%]%8%H%j$N%Q%9(B\footnote{$BLuCm(B: $B2>A[%Q%9!)(B
foozy@708 1459 }$B$NKvHxMWAG$rMQ$$$?4{DjL>$r>e=q$-$7$^$9!#(B
foozy@708 1460
foozy@708 1461 \end{description}
foozy@708 1462
foozy@708 1463 \subsubsection{Options specific to the \hgcmd{serve} command}
foozy@708 1464
foozy@708 1465 \hgrc $B%U%!%$%k$N(B
foozy@708 1466 \rcsection{web} $B%;%/%7%g%s$K$*$1$k@_Dj9`L\$N4v$D$+$O!"(B
foozy@708 1467 \hgcmd{serve} $B%3%^%s%I@lMQ$N9`L\$G$9!#(B
foozy@708 1468
foozy@708 1469 \begin{description}
foozy@708 1470
foozy@708 1471 \item[\rcitem{web}{accesslog}]
foozy@708 1472 $B%"%/%;%9%m%0$r=q$-=P$9%U%!%$%k$N%Q%9!#(B
foozy@708 1473 \hgcmd{serve} $B%3%^%s%I$N4pDlF0:n$G$N%"%/%;%9%m%0=PNO@h$O!"(B
foozy@708 1474 $B%U%!%$%k$G$O$J$/I8=`=PNO$G$9!#(B
foozy@708 1475 $B%m%0MWAG$O!"(B
foozy@708 1476 $BB?$/$N%&%'%V%5!<%P$K$*$$$FMxMQ$5$l$kI8=`E*$J(B``$BJ#9g(B''$B!J(Bcombined$B!K(B
foozy@708 1477 $B%U%!%$%k7A<0$G=PNO$5$l$^$9!#(B
foozy@708 1478
foozy@708 1479 \item[\rcitem{web}{address}]
foozy@708 1480 $B30It$+$i$N@\B3$r<u$1IU$1$k%"%I%l%9$r;XDj$9$kJ8;zNs!#(B
foozy@708 1481 $B4pDlF0:n$G$O!"(B\hgcmd{serve} $B%3%^%s%I$OA4$F$N%"%I%l%9$G@\B3$r<u$1IU$1$^$9!#(B
foozy@708 1482
foozy@708 1483 \item[\rcitem{web}{errorlog}]
foozy@708 1484 $B%(%i!<%m%0$r=q$-=P$9%U%!%$%k$N%Q%9!#(B
foozy@708 1485 \hgcmd{serve} $B%3%^%s%I$N4pDlF0:n$G$N%(%i!<%m%0=PNO@h$O!"(B
foozy@708 1486 $B%U%!%$%k$G$O$J$/I8=`%(%i!<=PNO$G$9!#(B
foozy@708 1487
foozy@708 1488 \item[\rcitem{web}{ipv6}]
foozy@708 1489 IPv6 $B%W%m%H%3%kMxMQ$NM-L5$r;XDj$9$k??56CM!#(B
foozy@708 1490 $B4pDlF0:n$G$O(B IPv6 $B$O%5%]!<%H$5$l$^$;$s!#(B
foozy@708 1491
foozy@708 1492 \item[\rcitem{web}{port}]
foozy@708 1493 \hgcmd{serve} $B%3%^%s%I$,@\B3$r<u$1IU$1$k(B TCP $B%]!<%H$NHV9f$r;XDj$9$k?tCM!#(B
foozy@708 1494 $B4pDlF0:n$G$O!"(B8000 $BHV%]!<%H$,;HMQ$5$l$^$9!#(B
foozy@708 1495
foozy@708 1496 \end{description}
foozy@708 1497
foozy@708 1498 \subsubsection{Choosing the right \hgrc\ file to add \rcsection{web}
foozy@708 1499 items to}
foozy@708 1500
foozy@708 1501 Apache $B$d(B \texttt{lighttpd} $B$N$h$&$J%&%'%V%5!<%P$O!"(B
foozy@708 1502 $B%j%]%8%H%j=jM-<T$H$O0[$J$k%f!<%68"8B$G2TF0$9$k2DG=@-$,$"$k!"(B
foozy@708 1503 $B$H$$$&E@$O=EMW$G$9$N$GK:$l$J$$$h$&$K$7$F$/$@$5$$!#(B
foozy@708 1504 $B%&%'%V%5!<%P$K$h$C$F5/F0$5$l$k(B
foozy@708 1505 \sfilename{hgweb.cgi} $B$N$h$&$J(B
foozy@708 1506 CGI $B%9%/%j%W%H$ODL>o!"(B
foozy@708 1507 $B%&%'%V%5!<%P$HF10l$N%f!<%68"8B$G2TF0$7$^$9!#(B
foozy@708 1508
foozy@708 1509 $B8D?M$N(B \hgrc $B%U%!%$%k$K(B
foozy@708 1510 \rcsection{web} $B%;%/%7%g%s$r5-=R$7$F$b!"(B
foozy@708 1511 CGI $B%9%/%j%W%H$O$=$N@_Dj$rFI$_9~$_$^$;$s!#(B
foozy@708 1512 $B8D?M$N(B \hgrc $B%U%!%$%k$K5-=R$7$?@_Dj$O!"(B
foozy@708 1513 $BEv3:%f!<%6<+?H$G(B \hgcmd{serve}
foozy@708 1514 $B%3%^%s%I$r<B9T$7$?>l9g$K$N$_8zNO$rH/4x$7$^$9!#(B
foozy@708 1515 CGI $B%9%/%j%W%H$N5sF0$K=jK>$N@_Dj$rH?1G$9$k$K$O!"(B
foozy@708 1516 $B%&%'%V%5!<%P$,2TF0$5$l$k:]$N%f!<%6$N%[!<%`%G%#%l%/%H%j$K(B
foozy@708 1517 \hgrc $B%U%!%$%k$r:n@.$7$F=jK>$N@_Dj$r5-=R$9$k$+!"(B
foozy@708 1518 $B$"$k$$$O%7%9%F%`%o%$%I$J(B \hgrc $B%U%!%$%k$K=jK>$N@_Dj$rDI2C$7$F$/$@$5$$!#(B
foozy@708 1519
foozy@708 1520
foozy@708 1521 %%% Local Variables:
foozy@708 1522 %%% mode: latex
foozy@708 1523 %%% TeX-master: "00book"
foozy@708 1524 %%% End: