Kernel hacker$B$N$?$a$N(Bcvs$BF~Lg(B ($B=i?4 Copyright(c) 1997 and 1998 by Jun-ichiro itojun Itoh <itojun@itojun.org>. All rights reserved.
Freely redistributable. Absolutely no warranty.
$Id: tut-kernel.html,v 1.32 2001$BG/(B10$B7n(B29$BF|(B 09:23:37 itojun Exp $
$BCm0U(B: $B$3$N(Btutorial$B$G$OHs>o$KHs0lHLE*$J(B branch$B$N@Z$jJ}$r$7$F$$$k$N$G!";29M$K$7$J$$$G$/$@$5$$!#(B $B$=$N$&$A=q$-D>$7$?$$$s$G$9$,;~4V$,$J$$$N!#(B(2001/10 itojun)

$B35MW(B

$B$H$j$"$($:!"(B
  • $B$R$H$j$G(Bhack$B$7$F$$$F$b(B
  • $B$A$g$C$H$7$?(Bkernel hack$B$G$b(B
cvs$B$OJXMx$@!$BCm0U(B: $B$3$N(Btutorial$B$G;H$C$F$$$k(Bimport$B$N$7$+$?$O$H$C$F$bHsI8=`E*$G!"(B $BIaDL$N3+H/%W%m%8%'%/%H$G$O;H$$$K$/$$2DG=@-$,9b$$$G$9!#(B cvs$B$N(Binfo file$B$H$+8+$?J}$,$$$$$s$G$O$J$$$+$H;W$$$^$9!#(B

$B$^$($,$-(B

hack$B$H$+8&5f$H$+$7$F$$$k>l9g!"(BFreeBSD ($BCp(B: $BI,MW$K1~$8$FE,Ev$K(BBSD/OS$B$H$+$KFI$_JQ$($F$/$@$5$$(B)$B$N(B $B%+!<%m%k$k/sbin/ifconfig$B$r2~B$$7$?$j!"(B $B$J!<$s$f$3$h$r$h$/$d$k!#(b
$B$G!"$?$^$K$"$k$N$,$3$s$JHa$7$$%9%H!<%j!<(b:
  • FreeBSD$B$N%P!<%8%g%s$o$i$s$i$s$"$,$k(b
  • $B$D$$$F$$$/$N$,BgJQ(B
  • $B$+$H$$$C$F!"$"$^$j$K(B
  • $B%P!<%8%g%s4im}$gf,$,dk$$(b
  • $BG[I[$7$?$/$F$b%Q%C%A%-%C%H$N:n@.$,BgJQ(B
  • $B%Q%C%A%-%C%H:n@.$r$5$\$C$A$c$&(B
  • $BG[I[$7$J$$$H;H$C$F$b$i$($J$$$+$i!"%F%s%7%g%s$5$,$k!"$d$k$-$,Mn$A$k(B
  • $B$;$C$+$/:n$C$?$b$N$,$4$_$K$J$C$A$c$&(B
$B$;$C$+$/$,$s$P$C$F$k$N$K!"$3$s$J$N$OHa$7$9$.$^$9!#(B $B$H$$$&$o$1$G!"$h$$F;6q$r;H$C$F$A$g$C$H$G$b3Z$K$J$m$&!#(B

$B$=$3$G!"(Bcvs$B$r;H$$$^$7$g$&!#(B cvs$B$,0RNO$rH/4x$9$k$N$O!"(B

  • $BJ#?t?M$G$NJB9T3+H/(B
  • $B%G%#%l%/%H%j%D%j!<$^$k$4$h$n%p!<%8%g%s4im}(b
  • $BJ#?t$N%^%7%s$r;H$$J,$1$F$N3+H/(B
$B$G$9!#(B $Bl9g$G$b!"$R$H$N%=!<%9$n2~b$$r$7$f$$$k(b $B>l9g$K$O!"(BFreeBSD$B%A!<%`b&$g>!$G3+H/$7$F$k$N$H$[$H$s$IEy$7$$$o$1$G$9$M(B ($B%P!<%8%g%s$n;^$o$+$l$n$7$+$?$,$a$g$c$h0c$$$^$9$,!"$^$"$=$l$ok:$l$h$&(b)$b!#(b

$B0J2<$n@bl@$k$o!"4jc1$n$?$a$k>JN,$7$F$$$k$3$H$d!"$o$?$7$,8m2r$7$F$$$k$3$H$,(B $B$"$k$H;W$$$^$9!#(B $B$^$"!"$H$j$"$($:F~Lg=q$C$F$/$i$$$J$N$G!"B?$a$K$_$F$/$@$5$$!#(B $B$[$s$H$N$3$H$O(Bman page$B$H$+(Binfo file$B$H$+$K=q$$$F$"$j$^$9!#(B $B!V$3$l$O$R$I$$!W$C$F$N$,$"$C$?$i(B $B65$($F$/$@$5$$(B$B!#D>$7$^$9!#(B


cvs$BF~Lg(B

$B$A$g$C$H;~4V$,$J$$$N$G3d0&!#(B

$B$H$j$"$($:!"(Bcvs$B$O(B(beta version$B$G$9$,(B)1.9.10$B$+$=$l0J9_$r;H$C$F$/$@$5$$!#(B 1.8$B$@$H(Bdiff$B$N@8@.$K$A$g$C$HCn$5$s$,$$$k$h$&$K;W$$$^$9!#(B 1.9$B$@$H%U%!%$%k$NDI2C$d(Bsticky tag$B$N=hM}$KCn$5$s$,$$$k$h$&$J5$$,$7$^$9!#(B


$B$=$N(B1: $B%+!<%m%k$n2~b$:n6h$r$9$k(b

$B!VFH<+$j%+!<%m%k$n2~b$$r$7$d$d!"(bfreebsd$bk\2h$n%p!<%8%g%s$r$*$c$+$1b3$1$k!w!"(b $B:n6H$r$7$?$$$H;W$$$M$(!#(B

$B%9%F%C%W(B0: $B%$%a!<%8%h%l!<%k%s%0(b

$B$@$$$?$$!"%P!<%8%g%s$n;^$o$+$l$o$3$s$j$u$&$k$j$k!#(b
FreeBSD 221-RELEASE === FreeBSD 222-RELEASE ===>
 \			 \
 \			 \
 $B2~B$HG(B221 -----> $B2~B$HG(B222 ----->
$B$b$H$K$J$k(BOS$B!"2>$K$3$3$G$O(BFreeBSD 2.2.1-RELEASE$B$K$J$C$F$$$k$1$I!"(B $B$=$l$,:G=i$N?F6L%P!<%8%g%s$k$j$k!#(b $B$G!"$=$3$+$i;^JL$l$7$F<+j,$n2~b$hg(b($b2~b$hg(b221$b$h$+2~b$hg(b222$b$h$+(b)$b$r(b $B$D$/$C$F$$$/$o$1$@!#(B FreeBSD$B$,(B2.2.2-RELEASE$B$K$J$C$?$i!"(B2.2.2-RELEASE$B$rK\N.$K$H$j$3$s$G(B (cvs$B$G$O$3$l$r(Bimport$B$H$$$&(B)$B!"(B FreeBSD 2.2.1-RELEASE$B$H2~B$HG(B221$B$N:9J,$r$"$F$F2~B$HG(B222$B$r$D$/$j!"(B $B$5$i$K$D$-?J$`!#(B
$B$3$3$G!"(B===>$B$O(Bvendor branch$B$C$F8F$P$l$F$$$k!#(B

$B62$,$k$3$H$O$J$K$b$J$$!#(B $B<:gt$7$?$i:g=i$+$i$d$j$j$*$;$p$$$$$@$1$noc!#(b

$B%9%F%C%W(B1: $B%j%]%8%H%j$N=`Hw(B

$B$^$:!"%j%]%8%H%j(B(cvs$B$N;H$&%=!<%9%d%j!<3jg<>l=j(B)$B$N=`Hw$r$9$k!#(B $BE,Ev$J%G%#%l%/%H%j$r7!$j!"$=$N>l=j$X$N%U%k%Q%9$r4D6-JQ?t(BCVSROOT$B$K(B $B@_Dj$9$k(B($B$3$N4D6-JQ?t$O$3$N@h>o$K@_Dj$7$D$E$1$F$*$$$F$[$7$$(B)$B!#(B $B$5$i$K!"%j%]%8%H%j$N=i4|2=$r$9$k!#(B
% cd ~
% mkdir practice
% mkdir practice/cvsroot
% setenv CVSROOT ~/practice/cvsroot	# $B4D6-JQ?t@_Dj(B
% cvs init				# $B=i4|2=(B

$B%9%F%C%W(B2: $B:G=i$N%P!<%8%g%s$n(bimport

$B:G=i$N%P!<%8%g%s!"(bfreebsd 2.2.1-RELEASE$B$r(Bimport$B$7$h$&!#(B import$B$N:]$K5$$r$D$1$k$3$H$O0J2<$n$u$?$d(b:
  • import$B$7$h$&$H;W$C$F$$$k%G%#%l%/%H%j%D%j!<$n$f$c$z$s$r(b $B%+%l%s%H%G%#%l%/%H%j$K$7$F$+$i(Bimport$B$9$k!#(B
  • $B$b$H$b$H$D$$$F$k(BRCS tag$B$rJ]B8$7$?$$$N$G!"(B-ko$B%*%W%7%g%s$r$D$1$k!#(B
% cd /usr/src/sys
% cvs import -ko sys FREEBSD r221
$B$3$3$G(Bsys$B$O%b%8%e!<%kl>$G$"$k!#(B $B:#8e!"$5$C$-@_Dj$7$?(Bcvs$B%j%]%8%H%j$G$O!"!V%b%8%e!<%k(bsys$b!w$k$o(b FreeBSD$B$N%+!<%m%k%=!<%9$,$=$n$^$^$d$c$3$^$l$f$$$k>uBV$K$J$k!#(B FREEBSD$B$O(Bvendor tag$B$H$$$&$b$s$G!"(Bvendor branch$B$NL>A0$G$"$k!#(B r221$B$O(Brelease tag$B$H$$$&$b$s$G$"$k!#(B $B$^$"!"$a$s$I$/$5$$$3$H$O3P$($J$/$F$$$$!#(B $B!V(Br221$B$C$F8@$&$H!"$$$^(Bimport$B$7$?(BFreeBSD 2.2.1-RELEASE$B$N%=!<%9$,$g$f$/$k!w(b $B$H$@$13P$($F$$$l$P$$$$!#(B
FreeBSD 221-RELEASE === FreeBSD 222-RELEASE ===>
 \			 \
 \			 \
 $B2~B$HG(B221 -----> $B2~B$HG(B222 ----->

$B;n$7$K!"(BFreeBSD 2.2.1-RELEASE$B$N%=!<%9$r$h$j$@$7$f$_$h$&!#(b

% cd /tmp
% mkdir x
% cd x
% cvs co -r r221 sys
$B$[!<$i!" $B$3$3$GCm0U$7$J$$$H$$$1$J$$$N$O!"(B r221$B$_$?$$$J!"4pK\$N;^$K$OJQ99$r2C$($A$c$$$1$J$$(B $B$H$$$&$3$H$G$"$k!#(B $B$3$l$r$d$C$F$7$^$&$H!"$"$H$G(Bdiff$B$H$l$J$/$J$k$N$@$h!#(B $B$B%9%F%C%W(B3: $B;^$o$+$l$5$;$h$&(B

$B$5$F!"$3$l$+$i$,K\HV$J$j!#(B r221$B$+$i!"(Bitojun221$B$H$$$&;^(B(branch)$B$r$D$/$m$&!#(B $B$3$N:n6H$O$I$3$N%G%#%l%/%H%j$G$d$C$F$b9=$o$J$$!#(B
% cvs rtag -b -r r221 itojun221 sys
$B$3$N:n6H$G!"?^$N@V$$$H$3$m$,$G$-$?$3$H$K$J$k!#(B
FreeBSD 221-RELEASE === FreeBSD 222-RELEASE ===>
 \			 \
 \			 \
 $B2~B$HG(B221 -----> $B2~B$HG(B222 ----->
$B;n$7$K!"$$$^:n$C$?(Bitojun221$B$r$H$j$@$7$F$_$h$&!#(B
% cd /tmp
% mkdir y
% cd y
% cvs co -r itojun221 sys
FreeBSD 2.2.1-RELEASE$B$H$*$J$8$b$N$,$B%9%F%C%W(B4: $B2~B$$7$h$&(B $B$$$^$D$/$C$?(Bitojun221$B$K2~B$$r2C$($k!#(B $B$^$:$O(Bitojun221$B$N%D%j!<$r % cd /tmp % mkdir y % cd y % cvs co -r itojun221 sys $B$=$7$?$i!"e$G$*$b$`$m$K:n6H$r$7$h$&!#(B $BJQ99$K$O$$$m$$$m$Jcvs commit$B!W$G$"$k!#(B
$B%U%!%$%k$rJQ99$9$k(B
$B$H$j$"$($:$$$-$J$jJT=8$7$F$7$^$C$F$h$$!#(B
$BJT=8$,=*$C$?$i!"(Bcvs commit$B$H$9$k$H!"(Bitojun221$B$N;^$N(B $B:G?7HG$H$7$F%j%]%8%H%j$K$H$j$3$^$l$k!#(B cvs commit$B$O%G%#%l%/%H%jLZA4BN$KF/$/$N$G!"(B $B$"$kLZ$N2<$ra4it(bcommit$b$7$?$1$l$p!"$f$c$z$s$g(bcommit$b$7$?$i$$$$!#(b
$B$A$J$_$K!"$I$N;^$KBP$7$FJQ99$,2C$o$k$+$O!"(B $B!V$I$N;^$r(Bcvs co$B$7$?$+!W$G7h$^$k!#(B $B3F%G%#%l%/%H%j$K(BCVS$B$F$$$&%G%#%l%/%H%j$,$"$k$O$:$@$1$I!"(B $B$3$3$K3P$($F$*$$$F$b$i$($k$N$@!#(B $B$?$$$F$$$O$3$l$GLdBj$J$$$O$:$@!#(B
$B!V%j%]%8%H%j$K!W%G%#%l%/%H%j$rDI2C$9$k(B
$B%G%#%l%/%H%j$N$"$k$H$3$m$K9T$C$F!"(Bcvs add$B$9$k!#(B
% ls
foo/	baa/	baz/
% cvs add foo
$BDI2C$r%j%]%8%H%j$KH?1G$5$;$k$?$a$K$O!"(Bcvs commit$B$9$k$3$H!#(B
$BJL$K(Bcvs$B$K4IM}$7$F$b$i$$$?$/$J$$%G%#%l%/%H%j$r$[$k$N$O!"IaCJ$I$*$j$G(B $B9=$o$J$$!#(B
$B$d$^$b$j%G%#%l%/%H%j(B/$B%U%!%$%k$rDI2C$9$k$H$-$O(Bcvs import$B$r(B $B;H$$$^$7$g$&!#(B
$B!V%j%]%8%H%j$K!W%U%!%$%k$rDI2C$9$k(B
$B%j%]%8%H%j>e$G4IM}$5$l$k%U%!%$%k$rA}$d$7$?$$$H$-$O!"(B $B%U%!%$%k$N$"$k$H$3$m$K9T$C$F!"(Bcvs add$B$9$k!#(B $B:F5"E*$K(Badd$B$7$?$j!"(B"/"$B$r;H$C$F%Q%9$r=q$$$?$j$O$G$-$J$$$N$G!"(B add$B$7$?$$%U%!%$%k$,$d$^$[$I$"$k$H$-$O3F%G%#%l%/%H%j$rK,Ld$9$k$3$H!#(B $B$=$l$+$i!"?F%G%#%l%/%H%j$OA4It@h$K(Bcvs add$B$7$F$*$+$J$$$H%@%a!#(B
$BDI2C$r%j%]%8%H%j$KH?1G$5$;$k$?$a$K$O!"(Bcvs commit$B$9$k$3$H!#(B
$B$F$b$H$G%U%!%$%k$rCV$$$F$*$-$?$$$@$1$J$i!"$=$N$^$^CV$$$F$*$$$F$$$$!#(B
$B$d$^$b$j%G%#%l%/%H%j(B/$B%U%!%$%k$rDI2C$9$k$H$-$O(Bcvs import$B$r(B $B;H$$$^$7$g$&!#(B
$B!V%j%]%8%H%j$+$i!W%U%!%$%k$r:o=|$9$k(B
$B%j%]%8%H%j>e$G4IM}$5$l$F$?%U%!%$%k$N4IM}$r$d$a$5$;$?$$$H$-$O!"(B $B$b$H$K$J$k%P!<%8%g%s(b(freebsd 2.2.1-RELEASE)$B$K$O$"$k$s$@$1$I!"(B $B2~B$HG$K$OMW$i$J$$%U%!%$%k$r:o=|$9$k$K$O!"(Bcvs remove -f$B$r(B $B;H$&!#(B
% ls
foo	baa	baz
% cvs remove -f foo
$B:o=|$7$?$3$H$r%j%]%8%H%j$KH?1G$5$;$k$?$a$K$O!"(B cvs commit$B$9$k$3$H!#(B
$B$F$b$H$G%U%!%$%k$r:o=|$7$?$$$@$1$J$i!"$$$-$J$j:o=|$7$F$$$$!#(B
$B%U%!%$%k$r%j%M!<%`(b
$B$3$l$O$A$g$C$H$a$s$I$/$5$$$N$G!"(Bcvs FAQ$B$r$h$s$G$/$@$5$$!#(B $B!V%j%M!<%`!w$n>l9g$K!"%P!<%8%g%s>pJs$r$I$&07$&$N$+$O7k9=Fq$7$$(B $BLdBj$J$N$G!"MxMQpJs$,0z$-7Q$,$l$J$$$N$G$9!#(B $B0z$-7Q$,$l$J$$$H:$$k$3$H$b$"$k$7!"0z$-7Q$,$l$k$H:$$k$3$H$b$"$j$^$9$h$M(B?
$B:9J,$r$H$k(B
$B%j%]%8%H%j$KF~$C$F$k(Bitojun221$B$N>uBV$H!"(B $B$F$b$H$N%G%#%l%/%H%j$N:9J,$r$H$k$K$O!"$3$&$9$k!#(B $BA4It(Bcommit$B$7$F$"$l$P!"$J$K$bI=<($5$l$j$$$o$:$@!#(b
% cvs diff
context diff$B$,$$$$$J!"$H$+$$$&>l9g$K$O(B-c$B$r$D$1$k!#(B
% cvs diff -c
$BFCDj$N;^$N:G?7HG$H:n6H%G%#%l%/%H%j$N:9J,$r$H$k(B ($BNc(B: 2.2.1-RELEASE$B$H$N:9J,(B) $B$H$-$K$O!"(B-r $B;^$NL>A0(B$B$H$9$l$P$$$$!#(B
% cvs diff -c -r r221		# 2.2.1-RELEASE$B$H:n6H%G%#%l%/%H%j$N:9J,(B
$BFCDj$N;^$N:G?7HG$I$&$7(B($BNc(B: 2.2.1-RELEASE$B$H!"(Bitojun221)$B$N(B $B:9J,$r$H$j$?$/$J$C$?$i!"(B-r$B$r$U$?$D$D$1$k!#(B $B8=:_$$$k%G%#%l%/%H%j$K$D$$$F$N:9J,$,8+$l$k$O$:$@!#(B
% cvs diff -c -r r221 -r itojun221	# 2.2.1-RELEASE$B$H(Bitojun221$B$N:9J,(B
$BCm0U(B: GNU patch 2.5$B$O!"(Bcvs diff$B$G:n$C$?(Bdiff file$B$r(B $B=hM}$G$-$J$$!#(B Index:$B9T$rM%@h$7$F8+$k(Bpatch$B%3%^%s%I$G$J$$$H%@%a!#(B $B:#8e$N(Bcvs$B$N%P!<%8%g%s%"%c%w$g>u67$O2~A1$5$l$k$+$b!"$7$l$J$$!#(B
$BJQ99>u67$r8+$k(B
commit$BA0$K%U%!%$%k$NJQ99>u67$r8+$?$$$H$-$O!"(Bcvs -n update $B$H$9$k!#(B $BK\Mh$OB>$N$R$H$,%j%]%8%H%j$r=q$-49$($?$H$-$K!"$=$N>u67$r(B $B$F$b$H$N%G%#%l%/%H%j$KH?1G$9$k%3%^%s%I$J$s$@$,!"$I$&$;$$$^$O(B $B$R$H$j$G:n6H$7$F$$$k$3$H$K$J$C$F$k$N$G!"LdBj$J$7!#(B
$B9TF,$NJ8;z$N0UL#$O$3$s$J$+$s$8!#(B
A: add$B$5$l$F$$$F$^$@(Bcommit$B$5$l$F$J$$(B
M: $BJQ99$5$l$F$$$F$^$@(Bcommit$B$5$l$F$J$$(B
R: $B:o=|$5$l$F$$$F(Bcommit$B$5$l$F$J$$(B
?: $B%j%]%8%H%j$KF~$C$F$J$$%U%!%$%k!#F~$l$N$3$7$,$J$$$h$&(B $B5$$r$D$1$h$&(B(*.o$B$H$+!"(B.cvsignore$B$KMeNs$5$l$?(B $B%U%!%$%k$OL5;k$5$l$k(B)$B!#(B
$B%j%]%8%H%j$KF~$l$?$/$J$$%U%!%$%k$O$I$&$7$h$&(B?
cvs$B$O(B*.o$B$_$?$$$J!"$h$/$"$k!VL5;k$7$F$[$7$$$J$C$F%U%!%$%k!W$r(B $BL5;k$7$F$/$l$k$h$&$K$J$C$F$$$k!#(B $B$,!">l9g$K$h$C$F$O(Byacc$B;H$C$?$j$9$k$H$-$N$h$&$K!"(B*.c$B$J$N$K(B $BL5;k$5$;$?$$%U%!%$%k$,$G$k$3$H$,$"$k!#(B
$B$=$&$$$&$N$r;XDj$7$F$*$/$K$O!"3F%G%#%l%/%H%j$K(B.cvsignore$B$C$F(B $B%U%!%$%k$rCV$3$&!#(B .cvsignore$B<+bn$b(bcvs$b$g4im}$9$k$n$rk:$l$:$k!#(b
% echo 'foo.c'> .cvsignore
% cvs add .cvsignore
$BB>$K$O(B?
$B;W$$IU$$$?$iDI2C$7$^$9!#(B $BCN$j$?$$$3$H$,$"$C$?$i(B$B8@$C$F$M(B$B!#(B

$B%9%F%C%W(B5: $B%3%s%Q%$%k$O$I$&$9$k$N(B?

cvs$B$O!"L@<(e*$k(bcvs add$B$5$l$?%U%!%$%k$@$1$r4IM}BP>]$K$9$k$N$G!"(B $B$$$^:n6H$7$F$$$k:n6H%G%#%l%/%H%j$G;n$7$K%3%s%Q%$%k$7$F$bA4$/:9$7;Y$($J$$!#(B $B$H$$$&$o$1$G!"0B?4$7$F%3%s%Q%$%k$7$^$7$g$&$M!#(B

sys/compile$B$N2<$,.cvsignore$B$G@)8f$7$F$"$2$l$P$h$$$H(B $B;W$$$^$9!#(B

$B%9%F%C%W(B6: FreeBSD$B$NG[I[$r$*$C$+$1$h$&(B

$B$5$F!"$b$H$K$J$C$F$$$k%+!<%m%k%=!<%9!"(bfreebsd$b$n
  • 2.2.2-RELEASE$B$r%j%]%8%H%j$K2.2.2-RELEASE$B$KBP$9$k%Q%C%AHG$r$D$/$k(B $B$C$F$N$r$7$J$$$H$$$1$^$;$s$M!#(B

    $B$^$:!"(B2.2.2-RELEASE$B$N%=!<%9$r%j%]%8%h%j$k % cd /usr/src/sys # 2.2.2-RELEASE$B$N%=!<%9%d%j!<(b % cvs import -ko sys FREEBSD r222 2.2.1-RELEASE$B$N$H$-$H$O(Brelease tag$B$,0c$&$N$KCm0U!#(B $B$3$l$G$3$3$^$G$G$-$^$7$?!#(B

    FreeBSD 221-RELEASE === FreeBSD 222-RELEASE ===>
     \			 \
     \			 \
     $B2~B$HG(B221 -----> $B2~B$HG(B222 ----->
    
    $B % cvs rtag -b -r r222 itojun222 sys $B$3$l$G$3$3$^$G$G$-$^$7$?!#(B
    FreeBSD 221-RELEASE === FreeBSD 222-RELEASE ===>
     \			 \
     \			 \
     $B2~B$HG(B221 -----> $B2~B$HG(B222 ----->
    
    $B$5$F!"$G$O(Br221$B$H(Bitojun221$B$N:9J,$r(Bitojun222$B$X%^!<%8$7$^$7$g$&!#(b $BI,$:$7$b$9$s$J$j$$$/$H$O8B$j$^$;$s$,!"$^$"$H$j$"$($:<+f0$g$$$c$f$_$^$9!#(b
    % cd /tmp
    % mkdir z
    % cd z
    % cvs co -r itojun222 sys
    % cd sys
    % cvs update -j r221 -j itojun221
    
    $B$3$l$G!"$9$s$J$j$$$/ItJ,$K$D$$$F$O$9$s$J$j$$$/$O$:$G$9(B($B0UL#ITL@(B)$B!#(B $B$9$s$J$j$$$+$J$+$C$?%U%!%$%k$K$D$$$F$O!"(B
    <<<<<<< foo
    nantara kantara
    =======
    kantara hontara
    >>>>>>> r1.1.1.1.2.1
    
    $B$N$h$&$K!"N>J}$N%P!<%8%g%s$,%u%!%$%k$k

    $B$=$N(B2: $B$b$C$H$i$/$A$s$K$J$m$&(B

    $B%P!<%8%g%s4v$n:9j,$r$[$$$[$$%/%j%c%/1n$g$h$j$?$/$o$"$j$^$;$s$+(b? $B$?$H$($P!"(B$B$3$3(B $B$_$?$$$K!#(B
    $B$3$N$?$a$K$O!"(B cvsweb$BG[I[85(B$B$+$i(Bcgi$B%9%/%j%W%H$r$H$C$F$7$+$1$^$9!#(B $B4D6-JQ?t(BCVSROOT$B$NFbMF$r%9%/%j%W%H$N$J$+$K@_Dj$7$F$*$/I,MW$,$"$j$^$9!#(B $B$b$H$N%D%j!<(b(2.2.2-release)$b$k$j$$%u%!%$%k$ga}$($?%u%!%$%k$o!"(b $B%l%]%8%H%j>e$O(BAttic$B$H$$$&%5%V%G%#%l%/%H%j$KF~$C$F$k$N$GCm0U$M!#(B

    $BB>$K$b(Btcl/tk$B$J%U%m%s%H%(%s%I$J$s$+$b$"$k$i$7$$$,!";H$C$?$3$H$J$$$N$G3d0&!#(B


    $B$=$N(B3: $BG[I[%-%C%H$N=`Hw$r$9$k(B

    $BC/$+$K$3$NAGE($J(Bkernel patch$B$rG[I[$7$?$/$J$C$?$i!"$3$&$9$l$P(Bok$B!#(B
    % cvs rdiff -r r221 -r itojun221 sys>sys.diff
    
    rdiff$B$H(Bdiff$B$N0c$$$O!"(B
    • rdiff$B$O!"%j%]%8%H%j$KF~$C$F$k$b$N$I$&$7$N:9J,$r$H$k!#(B $B$F$b$H$K(Bcvs checkout$B$7$?%D%j!<$,$j$/$f$b$$$$!#(b $B$=$N$+$o$j!"%b%8%e!<%k$o;xdj$7$j$$$h$$$1$j$$!#(b
    • diff$B$O!"$F$b$H$N(Bcvs checkout$B$7$?%D%j!<$h(b $B%j%]%8%H%j$N4V$N:9J,$r$H$k!#(B $B%b%8%e!<%k$o8@$o$j$/$f$$$$$1$i!":n6h%g%#%l%/%h%j$k(b $B$$$k$H$-$8$c$J$$$H;H$($J$$!#(B
    $B$C$F$J$+$s$8$G$"$k!#(B $BA}$($?%U%!%$%k$O$A$c$s$H(B/dev/null$B$H$N(Bdiff$B$r$H$C$F$/$l$k$N$G!"(B $B0B?4$G$"$k!#(B

    $B$H$j$"$($:!"(Bdiff$B$N:n@.$,3Z$K$J$C$?$@$1$G$b(Bcvs$B$rF3F~$7$?9CHe$O$"$k!"(B $B$H$$$&$b$N$@!#(B


    $B$=$N(B4: $BJ#?t$N%N!<%h%q%=%3%s$g3+h/$9$k(b!

    $B$3$l$3$l!"$3$l$,=q$-$?$+$C$?$N$@!#(B

    $BJ#?tBf$N%N!<%h%q%=%3%s$r;h$$j,$1$f$$$k>l9g!"%=!<%9$,$=$3$i$8$e$&$k(b $B$A$i$P$C$?$j$7$^$;$s$+(B? $B$=$N>l9g!"(B

    • cvs$B%j%]%8%H%j$r%G%9%/%H%C%W$N7W;;5!$K=`Hw(B
    • $B%N!<%h(b -> $B%G%9%/%H%C%W$K(Bssh$B$H$+(Brsh$B$H$+$G$-$k$h$&$K$7$F$*$/(B
    $B$H$9$k$H!"%N!<%h%q%=%3%s$+$i%g%9%/%h%c%w>e$N%j%]%8%H%j$r$$$8$l$^$9!#(B

    $B$d$j$+$?$O4JC1$G!"(B

    % setenv CVS_RSH ssh		# rsh$B;H$&$J$iITMW(B
    % setenv CVSROOT desktop.itojun.org:/usr/home/itojun/practice/cvsroot
    
    $B$H$9$k$@$1!#(B $B$[$s$H$K$3$l$@$1!#(B $B$"$H$OA0$HA4$/JQ$o$k$3$H$J$/:n6H$,$G$-$^$9!#(B

    $B$?$H$($P!"(B2$BBf$N%^%7%s$N%+!<%m%k$rb7$c$f%p!<%8%g%s%"%c%w$7$fcvs co$B$G:G?7HG%+!<%m%k$r;}$c$fmh$f%3%s%q%$%k$j$s$f$3$h$,(b $B$G$-$^$9!#(B $B%^%7%s(BA$B$GJQ99$7$?FbMF$r(Bcvs commit$B$7$?$i!"%^%7%s(BB$B$G(B cvs update -d$B$H$9$k$H!"(B $BJQ99$,H?1G$5$l$^$9$N$G%=!<%9$nf14|$b<+m3<+:_$g$9!#(b

    $B!V$&$^$/$$$/$s$+$$!W$H$$$&$"$J$?!"(BFreeBSD$B$H$+(BNetBSD$B$H$+$,$A$c$s$H(B $B3+H/$G$-$F$k$N$r$_$l$P0lL\NFA3$G$7$g$&!#(B $B3+H/l9g!"3+H/J$9$l$P$$$$$@$1$NOC(B($B>P(B)$B!#(B $BLLE]$J5DO@$dAjCL$OMW$j$^$;$s(B ($B$b$A$m$s!"8&5f<l9g$$$D%P!<%8%g%s$r(bfreeze$b$9$k$n$+$$!"$h$+$=$&$$$&ldbj$,(b $B=P$k$N$G!"JL$N$`$:$+$7$$LdBj$KD)@o$9$k%O%a$K$J$k$N$3$H$M(B)$B!#(B


    $B$=$N(B5: $BJ#?t?M$G3+H/$9$k(B!

    $B>e5-$G$&$C$9$i=R$Y$?J#?t?M3+H/$N$O$J$7$@!#(B

    $B$^$:$O%j%]%8%H%j$,3+H/%a%s%PA40w$+$i(Bgroup readable/writable$B$G$"$k$+(B $B3NG'$7$F$/$@$5$$!#(B $BI,MW$J$i(Bchgrp$B$9$k!#(B

    $B3F8D?M$N$d$k:n6H$O$[$H$s$IJQ$o$j$^$;$s$,!"(Bcommit$B$@$1$,0c$$$^$9!#(B

    $BJ#?t$R$H$,$$$k$H$-$O!"3F8D?M$,$F$b$H$K:n6HMQ$N%=!<%9%3!<%i%d%j!<$r(b cvs co$B$7$F$$$k$3$H$K$J$j$^$9!#(B $B$^$?!"!V$\$/$,(Bcheckout$B$7$?!W;~E@$h$j$"$H$K!"C/$+$,(Bcommit$B:n6H$r(B $B$7$F$k$+$b$7$l$^$;$s!#$N$G!"$F$b$H$N%D%j!<$o!v%j%]%8%h%j$n:g?7$n(b $B>uBV$KBP$9$kJQ99!W$G$"$k$H$O8B$j$^$;$s!#(B

    $B$N$G!"(Bcvs commit$B$9$k$^$($K!"0J2<$nuBV$KBP$9$kJQ99!W$K$7$F$/$@$5$$!#(B

    1. commit$B$N:n6H$r$O$8$a$k$^$($K!"%j%]%8%H%j$,99?7$5$l$F$$$J$$$+(B $BD4$Y$k$?$a!"(Bcvs update$B$ruBV!W$H!V<+j,$n $BCp(B: $BB>$N$R$H$,%U%!%$%k(B/$B%G%#%l%/%H%j$rA}$d$7$F$$$k>l9g!"(B cvs update$B$@$1$G$O==J,$K99?7$5$l$J$$>l9g$,$"$j$^$9!#(B cvs update -d -r itojun221$B$H$+$d$k$H!"?7$7$/7!$i$l$?(B $B%G%#%l%/%H%j$K$D$$$F$b$-$A$s$H99?7$5$l$^$9!#(B
    2. cvs$B$,$&$^$/%^!<%8$g$-$j$+$c$?$h$3$m$r$9!#(B
    3. $BF0:n3NG'$r$9$k!#(B
    4. $B$b$C$Z$s(Bcvs update$B$9$k!#(B $B$^$?99?7$5$l$F$$$?$i%^!<%8$hf0:n3ng'$r$/$j$+$($9!#(b
    $B$^$?!"(Bmake$B$/$i$$$ODL$7$F$+$i(Bcommit$B$7$^$7$g$&!#(B $BCfESH>C<$j>uBV$G(Bcommit$B$7$J$$!#(B $B$I$&$7$F$b:n6H$,D94|$K$o$?$j$=$&$GCf4V>uBV$r(Bcommit$B$7$J$$$H$$$1$J$$>l9g!"(B $B<+j,$n:n6hmq$n;^$r$d$/$c$f:n6h$7$^$7$g$&!#(b

    $B>e5-$NP(B) $B$3$H$,$o$+$k$G$7$g$&!#(B $B$N$G!"(Bcvs$B$@$1$KMj$i$J$$$G!"(Bmail$B$H$+2;@<$g6&f1:n6hC<$j>uBV$G(Bcommit$B$7$J$$!W@)Ls$b4K$/$J$j$^$9!#(B

    $BJ#?t?M3+H/$N>l9g!"!V$$$D%j%j!<%9$9$k$+!w$n@)8f$o$+$j$jfq$7$/$j$j$^$9!#(b $B$o$?$7$b$^$@4E$A$c$s$J$N$G$3$l$K$D$$$F$O$U$l$^$;$s!#(B $B87$7$/$d$k$J$i!"%j%j!<%9mq$n;^$r$[$i$j$$$h$$$1$j$$$+$b!#(b


    cvs$B$N8~$-IT8~$-(B

    $B%P%$%J%j%U%!%$%k$OB?J,07$$$K$/$$$G$7$g$&(B($B$=$s$J$b$s07$&$3$H$"$k$s$+$$(B?)$B!#(B

    $B<+j,$g%9%/%i%c%a$+$i=q$$$f$$$f!"%p!<%8%g%s$n;^$o$+$l$b$7$=$&$k$j$$(b $B%=!<%9$n>l9g$O!"(Brcs$B$NJ}$,3Z$J>l9g$b$"$k$+$b$7$l$J$$!#(B $B$^$"!"(Brcs$B$G$$$$$d$H;W$&4V$O(Brcs$B$G$b$$$$$G$7$g$&$M!#(B

    rcs$B$H$N0c$$$O!"$3$s$J$b$s$+$J!#(B

    • rcs$B$O$R$H$D$N%U%!%$%k$r$_$s$J$G$h$C$F$?$+$C$F$$$8$/$k!#(B $B8+$($k:n6H%U%!%$%k$O$R$H$D!#(B $B:n6H$G$-$k$R$H$O$R$H$j!#(B
      cvs$B$O(Bcvs co$B$G3F<+<+j,$n:n6hmq%3%t!<$r$d$/$c$f:n6h$r$9$k!#(b $B$N$G!"8+$($k:n6H%U%!%$%k$O$?$/$5$s!":n6H$G$-$k$R$H$b$?$/$5$s!#(B
      ($B$3$N$?$a!"(Brcs$B$O(B/etc/aliases$B$H$+(B/etc/yp/src$B$H$+$N4IM}$K8~$$$F$$$k!#(B cvs$B$O$I$&$_$F$b8~$$$F$$$J$$(B)
    • $B>e5-$NET9g>e!"(Brcs$B$G$O(Bedit$BA0$K(Brcs -l$B$G%U%!%$%k$r(B $B%m%C%/$7$?$j$9$kI,MW$,$"$k!#(B $B$@$+$i!"I,$::G?7HG$,$_$($F$$$k!#%P!<%8%g%s$n;^$o$+$l$o(b $B2DG=$@$1$I!"$H$K$+$/$R$H$D$H$3$m$r$_$s$J$G$$$8$k!#(B
      cvs$B$O$_$s$J$G%3%T!<$r$$$8$k$n$g!"i,$:$7$b$9$s$j$j(bcvs commit$B$,(B $B=*$k$H$O8B$i$J$$!#NY$N@J$Nrcs$B$OC10l%U%!%$%k$K%P!<%8%g%s$r$d$1$k!#(b
      cvs$B$OJ#?t%U%!%$%k$N=89g$K$^$H$a$F%P!<%8%g%s$r$d$1$i$l$k!#(b

    $B$b$C$H9b5i%F%/%K%C%/(B

    branch$B$H(Btag$B$N0c$$$K$D$$$F(B

    cvs$B$G$O!"!V(Bbranch$B!W$D$^$j;^$H!"!V(Btag$B!W$H$$$&35G0$,B8:_$9$k!#(B $B>e5-$G$O8N0U$K!V(Bbranch$B!W$H!V(Btag$B!W$N6hJL$r$"$$$^$$$K$7$?$^$^(B $B5-=R$7$F$$$?(B($B$H$$$&$+!"(Btag$B$N$3$H$O$J$k$Y$/Hr$1$F5-=R$7$?(B)$B!#(B $B $B$"$k(Bbranch$B$+$i;^$o$+$l$7$F$G$-$?%P!<%8%g%s$njb$s$r!v(bbranch$b!w!"(b branch$B>e$N$"$k%P!<%8%g%s$k$d$$$?l>;%$r!V(Btag$B!W$H$$$&!#(B $B$3$3$G$d$d$3$7$$$N$,!"(B $B!V$"$k(Bbranch x$B$N@hF,$N%P!<%8%g%s$k$o!"(b "x"$B$H$$$&L>A0$N(Btag$B$,$D$$$F$$$k!W$H$$$&$3$H!#(B $BNc$($P!"(Bitojun221 branch$B$N@hF,$N%P!<%8%g%s$k$o!"(b $B!V(Bitojun221$B!W$H$$$&(Btag$B$,$D$$$F$$$k!#(B
    r221 ================== r222 ======>			vendor(FREEBSD) branch
     \			 \
     * -- * -- itojun221	 \				itojun221 branch
    			 \
    			 * -- itojun222		itojun222 branch
    
    $B%"%9%?%j%9%/$O$J$s$+E,Ev$J%P!<%8%g%s$g$"$k!#(b $B?^$G$O(Bitojun221 branch$B$r:n$C$F$+$i(B3$B2s!"(Bitojun222 branch$B$r:n$C$F$+$i(B 2$B2s(Bcommit$B:n6H$r$7$F$$$k!#(B $B?7$7$$%P!<%8%g%s$,(bcommit$b$5$l$k$h!"(bitojun221$b$h$+(bitojun222$b$h$+$n(b $B!V(Bbranch$BL>$H$*$J$8L>A0$N(Btag$B!W$O@hF,$N%P!<%8%g%s$k0\f0$9$k!#(b $BNc$($P!"(Bitojun222 branch$B$K?7$7$$%P!<%8%g%s$,(bcommit$b$5$l$k$h!"(b $B!V(Bitojun222$B!W$H$$$&(Btag$B$O?7%P!<%8%g%s$r$5$9$h$&$k$j$k!#(b
    r221 ================== r222 ======>			vendor(FREEBSD) branch
     \			 \
     * -- * -- itojun221	 \				itojun221 branch
    			 \
    			 * -- * -- itojun222	itojun222 branch
    
    $Bcvs co -r itojun222 sys$B$J$I$N%*%Z%l!<%7%g%s$g;xdj$7$f$$$?(b $B!V(Bitojun222$B!W$O!"!V(Bitojun222$B!W$H$$$&(Btag$B$@$C$?$N$@!#(B $B$3$N$*$+$2$G!"(B-r itojun222$B$H8@$($PI,$:(Bitojun222 branch$B$N@hF,$N(B $B%P!<%8%g%s$,$b$i$($k$7$+$1$k$j$c$f$$$k!#(b

    $B$"$k;~E@$N%D%j!<$k(btag$b$r$d$1$k(b

    (to be written)

    sticky tag

    (to be written)

    commit$B$,$"$C$?$i(Bmailing list$B$KDLCN$9$k(B

    (to be written)

    cvs$B$N%P!<%8%g%s$k$h$k0c$$(b

    $B$$$^$^$G46$8$F$$$k$3$H$r=q$$$F$*$/!#(B
    • cvs 1.9.16$B$*$h$S$=$l0JA0$N$b$N$O!"%G%#%l%/%H%j$r(Bcvs add$B$7$?$H$-$N(B $B5sF0$,JQ$J5$$,$9$k!#(B
    • cvs 1.9.10$B0JA0$N$b$N$O!"$H$-$I$-(Bsticky tag$B$rL5;k$9$k$3$H$,(B $B$"$k$h$&$J5$$,$9$k!#(B
    $B$H$K$+$/!"(B1.9.22$B$^$?$O$=$l0J9_$NJ}$,D4;R$$$$$h$&$J5$$,$9$k!#(B $B!V(B1.9.22$B!W$N$h$&$K(B3$B$D$N?t;z$G9=@.$5$l$F$$$k$N$O(Bbeta release$B$J$N$@$,!"(B official release$B$N(B1.9$B$h$j$b(Bbeta release$B$NJ}$,$h$$!#(B $B8=;~E@(B(1998$BG/(B6$B7n(B24$BF|(B)$B$G0lHV$N$*$9$9$a$O(B1.9.26$B$G$"$k!#(B

    beta release$B$O(Bhttp://www.cyclic.com/$B$+$i(B $B$?$0$C$F%2%C%H$9$k$3$H!#(B


    To be done

    • differences between various branching strategies
      $B$3$N5-;v$NNcBj0J30$K$b!"$$$m$s$J(Bbranching strategy$B$,$"$k$N$G(B $B$=$N$X$s$N0c$$(B/$BA*$SJ}(B/$B$J$I$J$I!#(B
    • $BJ#?t(BOS$B$N%+!<%m%k%=!<%9$k;w$?$h$&$jjq99$r$9$k$h$-$o$i$&$7$h$&(b?

    $BLrN)$D%Z!<%8$?$a(b


    [itojun] [$B$O$C$+!<$:$q$i$@$$$9(b]
    $B46A[$H$+$rEj$2$F$_$k(B
  • AltStyle $B$K$h$C$FJQ49$5$l$?%Z!<%8(b (->$B%*%j%8%J%k(B) /