!"#$%"#"&$'()*+#",-.''(./"01+-&
2"#30&2#"%.$&
4.003$-&-33&0'3(*5&
• 2+.1"-&,3&-3(.&,"#$%"#"&'03,3&0''(+15&• 4.00.-31&'0.1&6#'70338.15&
• 4.$-&(..&09$-5&
• :'3(*+-&;#.,"83&%""1301"<&$+.1"-&-++#38",3&-;-,338.13*"&/"$$"8"&-""1"&
4.003-,&83c*.835&
• 2'()*+#",-.''(&'(&=+&6'#,-&-3"13.15&• 43.3&$'(,3$->-?&8.1"&,"#(.,"$-3&="&8.1"&-3003&$'/,"&,3"1"&'(&%"="5&
• 4.1"&-..-&,"#(.,"$-35&– :9/,3$''15&29.%.,","%&#"$3(1+-5&– !33*.15&@AB15&CD:.15&– E'$+83(,",-.''(5&@7..(F'&F".0.15&– 4++1",+-,3&0'*.&G!"#$%&'(%)*+&'&#,&*$(-&,H5&– !3->#"6'#>1<&,3"13'03%"1&6++1+-315&
2'()*+#",-.''(./"01+-&
• !"#$%"#"&$'8603$,33#.8.(3&• 2I.$&-33<&8.1"&83&,"#$"%"#&$'8603$>13&$'/,"&,3"83&
• J"&$+.1"-&83&-31"&,3"18.-,&$"-+,"83&– !"#(3&60"(33#.8.(3&="&#.-$."("0;;-&– C.-3(1&"#3(1+-3&="&,3->8.-3&60"(33#.8.-3$-&
• GK..-,%"#"&$'()/"01+-&'(&$"&'038"-<&$+.1&8.L3&"(,+1&0'3(*+&,338"H&
2'()*+#",-.''(./"01+-&3.&'03MMM&
• A#'=3$>=+/>8.(3&• @#3(1+-83,''1.$"&
• NOP30.&-/33,&%.*"13*"&
2'()*+#",-.''(&
• 2'()*+#",-.''(&%I.&%3#-.''(5&– 2'()*+#",-.''(./"01+-&Q&%3#-.''(.$'(,#'00&
• 2'()*+#",-.''(&'(?&– R/3-30,&.13(>),-33#.,"%&– 2'##","%&– S(&'038"-&"="0+*+&
• 23-<&$+.1"-<&8.00"05&
– !3#%.$0.$&• 2I.$&'-"1&'038"-<&(I+3,3-,&09/,3$''1.(.&
!"##"$%&"'()%&)'&*+,+-&.%&$""'&/"#0"$&1"0+2"&133%+&"#1+-&.%&1"$4"&4+%4"8.4$7&
!"#$%"#"&30+,-;$$30&
• @0*(3&"#3(1+-<&3-8"(3&,"#(3&• T''01+-U&="&,9.3(1+-,"#(31&• V3"6"#"(1+-31&• !'3,+-3&0I66<&$"-+,+-3&0I66&
!"#(3,-;$$30&G+&'&#,&*!.!'&H&
• !"#(3&33-89#*.&-3"18.(3&– B860383(,33#.1"&(I+131&(W<&(X<&(Y<&MMM&– A"#"(1"1"&3308.-3&,-;$0.&%3"1&%W<&%X<&%Y<&MMM&&
• @#3(1+-&="&,3->8.(3&• C,"7.0.-33#.8.(3&G++,&"#3(1+-,&3.&,33H&• !"#(3&="&6".*"01+-&G+&'&#,&*/*0&1'(.2&$-H&• !'3,+-&G".(+0,&$#..>0.-31&%3"6"#"(1+-31H&• !'3,+-3&0I66&G=9#*8.-3&,-;$0.&6".*"01+-H&
!"#(3&G+&'&#,&H&
• 4.1"&'(&,"#(3&$'/,"&,3"1"&%"="5&– 4.00.-31&(I+131&'(&.860383(,33#.,+15&
– 4.00.-31&%3"1&'(&6"#"(1",+15&– 4.00.-31&%3"1&'(&03.,+15&– 4.00.-31&%3"1&'(&03.1"8","!5&
– 4.-&'(&,3->,+15&– 4.-&'(&,3->8","5&– 4.00.-31&'(&++31&3301+-31&="&-I0,+%+-315&
C.-38.-31&-I0,+%+-31&G0&1&$0&$!.H&
• K"$3(1+-3&$'86'(3(1.1&G(9.,3$-?&$0.3(,&="&-3#%3#H&• !33*.1&G'34+#+.H&
– K"$3(1+-&%"="7&,ZZ$-&,33*.&[&%3#-.''(.&\&– !33*.&[&%3#&\&'(&;/.01+%&,33*.&D&%3#&]5&
• :..13-,3&G567H&8++1",+-31&– 43.3&#"$3(1+-&-I0,+7&8.(*.-,&0..13-3-,&
– 43.3&0..13-3-,&-I0,+%"1&,3.-31&#"$3(1+-31&
V90.-31&-I0,+%+-31&BB&
• CI0,+%+-31&$3-$$'(("-,&G#"-$3->&%3#-.'(33#.,"%"1H?&– !"#$%"#"&&
• V"="&++3(1"1"&"66-3#%3#.,<&"(1837""-.&-3#%3#.,<&%8-&
– K..-,%"#"&• ^+3&%3#-.''(.&=''$-+,"8.-3$-&'(&%"="&0.-"1"&890+&
– VI#*+"#/.,3$,++#&• :.-"1"&$''#8+-3="',+#&
CI0,+%+-,3&/"01"8.(3&
• N#.(3%"1&-I0,+%+-31<&;/,-3,&0"/3(1+-,&6'03&• E'$+83(,",-.''(&
• CI0,+%+-,3&%90>8.(3&="&0./,-+-,"8.(3&
• N1"-.U&="&,"*"-.;/.01+%+-&• @#/.,3$,++#.0.(3&8'1+0""#-+-&
K"$3(1+-&W& K"$3(1+-&X&
E_&
K"$3(1+-&W& K"$3(1+-&X&
E_&E_&
V3#-.''(&W& V3#-.''(&X&
E_&%[&
`9.13&-I0,+%+-,3&0./,-+-,"8.-3-,&8'1+0""#-+-3*"?&
`9.13&31"-.U&="&,"*"-.;/.01+%+-3-,?&
!"#(3&8I=+"("0;;-&
• 2+.&,3'-,"1"&,"#(3<&8.-&-..-&$",$.&%I.7&8.(("5&– !"#(3&$''-(37&6"0=+13-,&8++1",+-,3-,&
• 2"-&-I0,+%+-31&'(&0"/3(1","%"15&• 2"-&%"="1+-31&31"-.U&="&,"*"-.;/.01+%+-3&'-"-&'(&$"3,+15&
• 2"-&'(&0(8$92&a.&%"="5&
• 2"-&C:@a*"&3.&8.(1"&%"-,+'00+5&
• V"="0.$+1&$''-$I0"-,+-31&="&,'3,+-&'(&'038"-5&
!"#(3&#.-$."("0;;-&
• 2"-&-31"&%3#-.''(.&'(&8I,3,&,"#(.1"5&– A..-"%"0,&'0+0.-.&(I+13.1&'("0.-33#.,+1&– A..-"%"0,&'0+0.-.&%.*+&'(&6"#"(1",+1&– S0+0.-.&%.*+&6'03&=++#13&,3$$.(+1&– 4I=+"("0;;-&'(&,3/,+1&="&%"="1+-31&6".*"01+-3&'-"-&'(&$"3,+1&
– !"#(.8","&=9,8.-3&#.-$&
• 8+9'"1"'.&)'&/+9.1&*:"1+#3$&43"&%+9'"1+%+&,5%1"'.&
43.0&'(&$'083&-'#>&,3"18.-,?&
WH C33<&8.1"&83&,3"83&
XH C33<&8.1"&83&,3"83<&3,&83&3.&,3"&U&C..-&++#.83&%90="&
U&VI.&"#%3-,"83&,3"18",+-3&-.--3&
YH C33<&8.1"&83&3.&,3"<&3,&83&3.&,3"&- Põhjus, miks me hävime
!"#(3*"&-3',+1&6#',-31++#.1&
• A".*"01+-6#',-31++#&G0&1'(.2&$-H&– A".*"01+-=+/3(1&
• C3.-$"&#"$3(1+-&• A".*"01"&++-&%3#-.''(&• ^+3(1"&"(1837""-.&• 29.%.,"&#"$3(1+-&
• !"*"-.%I,+&6#',-31++#&G+(''4#!:H&– VI.7&=+/,+1"<&3,&3308.-3&-3.-+&,""-,"8.(3&'(&%I.8",+&
!"#(3"/30"&'6>833#.8.(3&
• N3-89#$?&0(8$92&;.&%9/3(1"8.(3&– !"#(3&.08"&#"$3(1+-,&-3.-$"8","&
• @+,'8">-33#.8.(3&
• !"*"-.;/.01+%+-&• GA3.13,+1H&-I0,+%+-,3&="&8I=+13&%9/3(1"8.(3&
4.1"&63"$-&,3*38"<&3,&,"#(31&-+=+$-5&
• :9/,3$''1.&%3#-.''(.$'(,#'00&• V.*"13&/"01+-&• `I+3,3&/"01+-&• !3-,=+/,+8.,3&/"01+-&
• B(F'&,+037&$'87.(33#.1"&
• 8;;*))2&/.+<&)#.1+<"&1:.#030-&+"'3#%&*+6.'0"$%&."&/""$+&
V3#-.''(.$'(,#'00&
• 4.003$-5&– 433-$'((",ZZ&
– @="0+*+&– V"#+$''6."&– A"#"00330(3&"#3(1+-&– @*"&8.L3&".(+0,MMM&
4.1"&%3#-.'(33#.1"5&
• :9/,3$''1&• @(1837""-.-$#.6>1&• N/.,+--$#.6>1&• E'$+83(,",-.''(&
• G`9.,3H&-3"1.-,+-,3&$'8603$>1&• C.-+&G!($-&$-H&• !33*.1&• =:"4-&1"0+&%+9'"%+4$.&,+&1"0+&$++<&*.9$")'..9"0+&
V"/3(1.1&
• bVC&– A"0=+&6++1+-3.1?&"3*0"(3<&F".0.6I/.-31&'63#",-.''(.1<&6++1+%"1("83&="&8'%3<&=(3&
• CV`&– 4.,831&bVCU.&/91"1&'(&6"#"(1",+1&U&",'8""#-31&'63#",-.''(.1<&$","0''*.13&%3#-.''(.8.(3<("83&
– ^+31&/91"1&c&,"*a.8.-3&="&7#"(P/a.8.-3&0"/3(1+-&
• T"=+-"1&VbCU.1&– 43#P+#."0<&*.,<&MMM&
K36'-.,''#.+8&
4I.-,31&
• b/3P$'+,dP0'(3&c&0''7&,ZZ$","0''*.&• @11&c&0.-"7&F".03&• b'88.,d6+-/&c&-""1"7&0'$""0-31&8++1",+-31$'-.,''#.8.--3&
• ^61",3d6+00&c&,I87"7&8++1",+-31$'-.,''#.8.-,&,ZZ$","0''*.&
• 43#*3&c&,3/"$-3&(..&+61",3&$+.&!(223-.&$'##"0&• b'(e.P,&c&-"8+&$''1.#.1+&'(&8++13,+1&• E.fdP/"(*3-3,&c&8++13,+1&$''1.#3"1&
4I.-,31&BB&
• !"*&c&89#*.7&8.(*.,&,3"1"'03%",&-3.-+&
4I.-,31&BBB&
• _#"(P/&U&/"#+&
K3%.-.'(&W& K3%.-.'(&X& K3%.-.'(&Y&
K3%.-.'(&WMW& K3%.-.'(&WMX& K3%.-.'(&WMY&
2"-+,+-&
Working directory up-to-date
Checkout
Changes to code
Update
Repository changed
Commit
Working directory locally modified
Working directory in conflict
Conflict resolution, commit
Conflicts?
• V"/3(1&"(("7&%I.8"0+-31&• C.-+&,+037&.-3&=++#13&8I301"&
– T"#+13&-,#+$,++#&G$3-<&8.00"0<&8.1"H&
– `.83$'(%3(,-.''(&
• 4.1"&83&-..-&.$$"*.&,3/"&,"/"835&
• 4I(31&$"-+,+-8+-,#.1&
T"#+8+130.1&
WM AI/./"#+&G-+<$:H&XM @#3(1"=",3&3#"01"8.(3d$''1.&;03%"",+-&
YM 2''1.&$;08+,"8.(3&G!(0&*=+&&>&H&
gM !"#(3&,'3,+-3&/"#+&G%..%.,+-3*"&83->8.(3H&
hM !"#(3&,'3,+-3&/"#+1&G6.13%&83->8.(3H&
iM !'',30..(.1&
AI/./"#+&
• 2I.*3&0./,-"8&%I.8"0+-&%3#-.''(.$'(,#'00.&$"-+,"8.-3$-&
• R$-&6I/./"#+<&$+/+&$I.$&'8"&$''1.&6"(3%"1&="&$+-,&%I,"%"1&
Põhiharu
Checkout
Töökataloog A
Töökataloog B
Checkout
Checkin
Update Checkin
Update
C"8"0&"="0&0.(("-MMM&
Põhiharu
Väljavõte suvalisel hetkel - mis seisus on põhiharu???
AI/./"#+&U&"("0;;-&
U&233*.&3.&,3"&$+("*.<&8.-&-3.-+-&'(&6I/./"#+&– 2"-&,3.-31&"#3(1"="1&,'/.%"1&'8"&,ZZ$","0''*.&++3(1"1"5&
– 2"-&-3003-,&-3.-+-,&,'/.7&,3/"&,"#(3,*,''1"(*+$3-$$'(1"5&
– 4.-&'(&8++,+(+15&4.1"&;03&,3->1"5&
– 4.-&'(&%"08.-<&8.-&6'035&
j&2''1&6#'6"*33#+7&$..#3->&U&4I(3-&-.,+",-.''(.-&%I.7&-3003&'00"&-''%.,+1&
@#3(1"=",3&3#"01"8.(3&
• k@%"0.$+&,+"03>&-;(1#''8.l&– @#3(1"="&!(223-a.7&%.*"-3&%I.&6''0.$+&$''1.&
– !3.-31&"#3(1"="1&,33%"1&+61",3&="&-""%"1&'8"03&%.*"-3&$''1.<&$I.*.&(3(13&"#3(1"=",3&,ZZ&'(&/9.#.,+1&
– !3.-31&"#3(1"="1&0"/3(1"%"1&%3"&.-3&%I.&'',"%"1&$+(.&-33&0"/3(1","$-3<&$+.&0"/3(1"=".1&'(&8.,+<&-..-&,3$.,"%"1&3#.(3%"1&0"/3(1+-31&$'(e.$,3&
@#3(1"=",3&3#"01"8.(3&
• K33*30&c&37"-,"7..0-3,&$''1.&3.&!(223-a.&– 2"-&-33&'(&6..-"%5&– 4.-&'(&"#3(1"="&8IL3-&-,"7..0(35&
– :.-"83&!(223-a.03&>(*.8+-315&– VI,"83&I.*+-31&9#"5&
– 2''1.&;03%"",+-&• T"#+&.*"&"#3(1"="&="'$-5&
– R03$+0+&83->8.-30&G83#*3H&– A#'=3$>&"0*+-3-&'(&3#"01",+-&/"07&
• K36'-.,''#.+8&.*"&"#3(1"="&="'$-5&
2''1.&$;08+,"8.(3&G!(0&*=+&&>&H&
Toodangu toetus lõpetatakse, algab uus arendusperiood
Arendus
Stabiliseerimine, veaparandused Tarne toodangusse ja veaparandused
Uus arendus
2''1.&$;08+,"8.(3&
Toodangu toetus lõpetatakse, algab uus arendusperiood
Tekib vajadus teha toodangusse veel üks kriitiline parandus
Parandus viiakse sisse, kuid vahepeal on arendus edasi läinud ning parandus peab kas ootama kuni uus funktsionaalsus
stabiliseerub või tehakse uus toodangväljalase valideerimata koodist
2''1.&$;08+,"8.(3&U&"("0;;-&
j&:./,(3&%..-&,''1"(*+,&,'3,"1"&
U A3"03&,"#(3,&,''1"(*+--3&'(&X&%"0.$+,?&U 433-$'(1&.-,+7&="&'',"7&%.*"13&03.18.-,&U ^+-&"#3(1+-&09/37&0"/>&="&,'3,+-&6'03&%I.8"0.$&
!"#(3&,'3,+-/"#+&
Arendus
Stabiliseerimine
Veaparandused toodangusse
Veaparanduste mestimine arendusharusse
Uus arendus
!"#(3&,'3,+-/"#+&U&"("0;;-&
j&C""7&6"#"00330-30,&"#3(1"1"&8.,+,&,"#(3,&j&C""7&,''1"(*+,&,'3,"1"&(..$"+"&$+.&%"="&
j&4++1",+-,3&3#"01"8.(3&#.-$.&=9#*.&
U 20.3(,&3.&-""&"#+<&8.$-&,''1"(*+-&6"#"(1",+1&%3"1&k,"*"-.&,+03%"1l&
U 4.,83&,'3,+-/"#+*"&$"'7&/"00","%+-&
!"#(3&,'3,+-/"#+1<&%X&
Arendus toimub sõltumatult uues harus
Uus arendus Haru hakatakse stabiliseerima
Stabiliseerimismuudatus, propageeritakse ka uude arendusharusse
Kriitiline veaparandus toodangusse, propa- geeritakse uude stab. ja arendusharusse
!"#(3&,'3,+-/"#+1<&%X&U&"("0;;-&
j&2I.$<&8.-&3308.-3-$.&j&@#3(1+-/"#+13-&'(&$I.$&%3"6"#"(1+-31&
j&!'3,"1"&'(&%I.8"0.$&8.,+,&6"#"00330-3,&,''1"(*%3#-.''(.&
U A"0=+&83->8.-,&
U 29-.,-.&-+/,&%I.8",+"0.-33#.1"&
49#*3(1"8.(3&G-#%%3$%H&
• C3.-+(1.&,9/.-,"8.(3?&– K303"-3[&c&3,&'03$-&%I.8"0.$&-"8"&"-="&$'##","&– _3F'#3K3F"P,'#[&c&$+.&'(&%"="&,"*"-.&6ZZ#1+1"&,ZZ,"%"&-3.-+&=++#13&
– _#"(P/6'.(,[&c&$+-,&"0*"-&/"#+5&• 49#*3(1"1"&'(&%I.8"0.$&G-I0,+%"0,&%"/3(1.-,H?&
– !3#%3,$'-.,''#.+8.&
– @0"8$","0''*3&
– m".03&• C30*+-3&/+%.13-&,3#%3$'-.,''#.+8&
S03$+8++1",+-31&
• S03$+,&/'.,"$-3&,"%"0.-30,&"(1837""-.-&• V"="1+-&8++,"?&
– E3)(.,-.''(.&G++31&,"730.1<&%33#+1H&– C,"">0.-.&"(183.1&G$0"--.)$"",'#.1H&– K"$3(1+-3&*3(3#33#.,+1&"(183.1&
• B*"&#"$3(1+-3&%3#-.''(&%I.$-&'-","&3/.,"1"&3(1"03&%"="0.$+&-3.-+&– B*"&09/,3$''1.&8++1",+-3*"&$9.7&$""-"-&%"-,"%&'03$+,&8++,3%&-$#.6,&
!'',30..(.1&
• !'',30..(.1?&– N#.(3%"1&=&#-<+&,&-a.1&– N#.(3%"1&$33031&– N#.(3%"1&"#/.,3$,++#.1&
• S(&'038"-&;/.-'-"&="&3#.(3%+-31&– :9/,3$''1.&,"-3830&U&/"#+1&
– N/.,"8.-30&c&3#.(3%&$'$$+6"(3$&
• N301"7&"#/.,3$,++#.0.-,&097.8I301+-,&
`.*/,0n&7+.01&
V3"/"01+-&
• A"0=+&%"7"%"#"0.-.&%"/3(13.1&– _+*o.00"<&4"(>-<&K3p+3-,&!#"P$3#<&3,P&
• C""7&6I/.8IL30.-30,&$"-+,"1"&$I.*.&"#3(1+-,ZZ13&/"01"8.-3$-&
• VI.$-&'00"&.(,3*#33#.,+1&%3#-.''(./"01+-3*"&• 4.,83,30&'(&0.-"$-&%I.8"0+-31&0./,-"8"$-&"="/"01+-3$-&
B(F'&%.*"13&$'/,"&
• AI/.0.(3?&– C"88+1&$'#1"8.-3$-&
– A#"3*+(3&$9.,+8.(3&– C''%.,+1&$9.,+8.(3&
– :./,(3&-.-3-,"8.(3&
• V.*"13&8I=+&="&6#.'#.,33,&
• 4.00.-3-&%3#-.''(.-&G="&$3-$$'(("-H&03.>5&• 4.00.-3-&%3#-.''(.-&'(&6"#"(1",+15&
Viga leiti
Viga parandati Viga tekkis
V3"/"01+-3&6#',-3--&
• N30$'(,#'00&– 2"-&'(į%"(,(35&2"-&'(&$I.$&.(F'&'038"-5&
– 2"-&6'03&%330&6"#"(1",+15&• B860383(,",-.''(&
– 2''-&,3-,=+/,+8.*"5&
• J9#30$'(,#'00&– K"6'#,33#.="&G-''%.,"%"0,H&63"$-&%33(1+8"<&3,&%.*"&'(&,I3->&6"#"(1",+1&
`I+3,3&/"01+-&
• !.(*.8+-<&8.00303&-;-,338&63"7&%"-,"8"&• 2"-&,"#(3&[&&%"-,"75&• `I+131&8++,+%"1&
– 20.3(>&/+%.,"7&".(+0,&0I66-3.-&– @#3(1"=",&/+%.,"7<&8.-&8++,+-&
• `I+3,303&%"-,"%+-,&$'(,#'00.7&,3-,=+/,+8&
!3->13=+/,+8.,3&/"01+-&
• !3-,=+/,+8&– 2.#=301+-&="&-"88+1<&$+.1"-&,3->&097.&%.."&
– 4.-&'(&''1",+1&,+038+-&
• !3-,=+/,+8.&-''#.,+-&– C''#.,">&,3-,=+/,+8&[&– K"$3(1+-3&%3#-.''(.-&]M\&– !+038+-?&I((3-,+-d3.&I((3-,+(+1&– K"6'#,33#.,+1&%3"1&
J90*.,"%+-&G-+#!+'3-.H&
`I+3& !ZZ& 4++1",+-&
!"#(3&!3->&-''#.,+-&
!3-,&=+/,+8&
23-$$'(("1&
• @#3(1+-$3-$$'(1&– T"#.0.$+0,&.*"0&"#3(1"="0&'8"&
• !3-,$3-$$'(1&– N#.(3%"1&,"-3831&c&3$-&%+#9($)*,-#%3$%)*1+&'3?&*
• !''1"(*$3-$$'(1&– CI0,+%"0,&#"$3(1+-3&,;;7.-,&W&%I.&6"0=+&
23-$$'(("1&BB&
• 2I.$&$3-$$'(("1&'(&%I.8"0.$+0,&-"#("-31&– 6+&'3?&&%I.$-&'00"&W?W&,''1"(*+*"&
• 2''1&0..*+7&".(+0,&%9.$-38"&#.-$.*"&$3-$$'(("-,&-++#38"&#.-$.*"&$3-$$'(("&6''03&– Q&!''1"(*+-&"#3(1+-,&3.&,3/,"q&
E'$+83(,",-.''(&
• K"$3(1+-,&$.#=301"%&– B13""0.-&0.-",+1&.*"&8++1",+-3*"&
– r3(3#33#.,+1&G(9.,3$-&="%"1'PH&• A#'=3$>&$.#=301"%&
– 4++1",+-,3&0'*.&G!"#$%&'(%H&
2'$$+%I,3&
• 2'()*+#",-.''(./"01+-&'(&"7.-,"%&6#',-3--&– A3"7&".,"8"<&8.L3&,"$.-,"8"&
• :./,-"8"-&-.,+",-.''(.-&%9/3&
• 233#+0.-,3-&6#'=3$>13-&#'/$38<&0./,-",3-&%9/38&