From 39a53b85d95c0069bb4aff1acaed111325008291 Mon Sep 17 00:00:00 2001 From: Marius Balteanu Date: Sat, 20 Jul 2024 09:47:17 +0000 Subject: [PATCH] Merged r22910, r22924, r22928 and r22929 from trunk to 5.0-stable (#40948). git-svn-id: https://svn.redmine.org/redmine/branches/5.0-stable@22941 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- app/models/repository/git.rb | 2 +- .../repositories/git_repository.tar.gz | Bin 21103 -> 24172 bytes .../repositories_git_controller_test.rb | 2 +- test/integration/repositories_git_test.rb | 2 +- .../redmine/scm/adapters/git_adapter_test.rb | 22 +++++++------- test/unit/repository_git_test.rb | 27 ++++++++++-------- 6 files changed, 29 insertions(+), 26 deletions(-) diff --git a/app/models/repository/git.rb b/app/models/repository/git.rb index 0e02ddb25..dec354d4e 100644 --- a/app/models/repository/git.rb +++ b/app/models/repository/git.rb @@ -225,7 +225,7 @@ class Repository::Git < Repository :repository => self, :revision => rev.identifier, :scmid => rev.scmid, - :committer => rev.author, + :committer => rev.author.truncate(255), :committed_on => rev.time, :comments => rev.message, :parents => parents diff --git a/test/fixtures/repositories/git_repository.tar.gz b/test/fixtures/repositories/git_repository.tar.gz index 0ea93071f1518062464dbaebc4d7f94f09557e99..f31979845863f0c45fb86fee3517bbe896554901 100644 GIT binary patch literal 24172 zcmZsCV{~Or*KKUuw$V|?X2vFp46& zjd2+x3&KMzZvL2PLGg1Bh3czc`aku0zz2paZT}wo00LMa-txwOd04o+o4cD&5^>V~ zEI>-YMCS;Rpidl~^MkDW$s`mgatH#e0L_}zzY)P5-?!+rObNBNG5QnID9&j(u^>tGB`VH=lc~LzG)CSZd1el}IBt}yAyG26Y zLLyzWUJ8dr_30_cjlv$x?ltled>FFc_S%8G1i)cTnQBIWAeyogP_O6*pc({6T2ljp zvjTCwgFgDP5L6f_J2uv(BqiC!;oFnoOeYTeThQYvbVC%XqQ#Dat053up#x2#CfP!& zdC-sP)i4lXrVcsR6n-@&*dri?!qXW+NR9{4U^>%9i-@Z6nho@k(Gw`H#!3xRz+=kb z&9hCwtDp~35Sxa111{6M%PzK9Vj{ZTxWz9CeH>K$~`zbFLJP*Crp z6X1l5(47ua)rk;@gypem*DL@(nw zBuuDK8nR4-$b+bk|FaKO7Rn%tQN;26Ylp;>>yr&MDM1OZP+lfa)Eo;!6Uv>1e4m9r z7AXWhL4Yj~h;=SyaO1~75m@Fdf}ITF;f0^lB)9|Amq3$FsQl#QI>n-z4mc&)KP^{)afQM145 z+YjGKb8EFhwWO~*Euf6o8y<14FA(y&Vbp8v?0--x_zUs|7p89)3=>c0FoH#IlYple zr$Pwd6sP357~??mq)QnmCu3I$4lj>D0x9*OJ^;cMaCAyL0nO1MBPf{MHX@eHbwABAGQ>01=mkwKU4m9H)5H$r)F4qLWs}Ia z^5FvEC>>>p@NsYkl>sVahjO>1*?;b#Z1MK;iO^$rA5;Qln1&o#D9q3y^oFEgO;AP# zUjr*>BdHK1sYDI3cNf}CkVM&7q^XW~iHJ-wP0(XuUC>cb`<;-EA9%&0(fTBo&W-8P zQ1RHrf2HGvAmJ#4u_v)g!DS7eKm=2uL?iIg1%OS6WZFUvdP0Tv*#dK02Z7R8aUKGA z*e~Lz6lq~~a99VXaEPK_ybKtT#`$3Ac_s=nMieZk*rCRkq_H|*K^4iRO`bk%1Y+D$ zb=r8L7`B0o79aIKJg-bmNsN|mEc&1LqLM&MDYfFU6ol&krnS;X;wn76Kcf2MnhEzBYeEyAjN_5fn$}C|) z;JF6Ocyiy;-ou7XLS+NRlT@JISc#9}LZEaN$ixCC``-kxq`){=ZCRMG5Pr6aL?f_~ zPaUb-K$#b)mMcU+z!$?J1dAynJ^gb>yb3h)9USDB7s*xRHX6az! zE7iJrSPOsG!+H$d?d$t7IAj|j(uX@>g3>=Ik%o3ap$A3THygam8m(AeUe#PTdKDtc}ia zZ0{aEiE)1rq9%?KOd6p7Z8xxjDm_T1OvAR>Fkf(FX2;zCQ)pnH?`L&>Ow@4 z8*=NIR~d(P6v0P9t}K{F8)}RW2g%##e*065OuY_n1e^uQA_@dCX|t8B(&8c~7?>rpe<(HIGK1TP#*bTMOWXWjwb5Gv3a4fWoMWn{QtK&mc4 z!2}|y&zL(D(bJ3>2Rwc`lzAY;Bq`R(-}=FkoDh0ldKV&VP_iE@h>QuR{|j-e+$~PW z#;(dv^c{5KR1ISd%XJ0f2r7fl`97#p`PFNE(VOuAdV&IN-1VA+{#Ak>@3lJH)%--w z>!1$<5Fb&CIjB}B&-_D)#bbpyMrRFla}5fZQ~Z~WVZS|tgps+c{4Eh#VHL2p)8N^OYT-C<3anLDgm0Cn_(x``E4q)1)<)}Hv@Xw<{3sv#y zBxA#|LS(VXpH(SzWNAYr++fDGhmg4Q<%iI`Sl~F=Ik^HZ$+`9M#bnOj<+OvL8hOew z3^M9}oI<6OYJF|MkwwH&(CASiCK?@jeG8wGnLEQ1fzYWM`eiDm!4W{E+Hua5 z^dq^1nAonG>FnLz-Su9Wg5cX!;H5%79mK$|IQ0^!B@t{dvtWz_@b^Om8jTF)JUn8@ zel;A)6zT=&11JKiV-R)hh$x+eaftdi5sJW1$zodGGN~i37=JSp8A%Mxz)h^f>N9YX zLt<+U(c7)~A#gtxE~)IspaFOOS~)c0_pfyL%pX>1AQTePU*D;ymt>)Ztw>`jqVMd6jYvUVP{* zgg@K^tO|}9tBx6IqL2p3zcC@zDHb#ZNW>o^J3~04H8CWMqI2{)({QC}yeoq78$c7% zE64a-naGd_nV7}LQ3PA35V51@n~;q=`{%MGh7Lo;V+Zb9PrZ#q^&yb6N2x{G3VaLw zKEYcc=k}~rp(TdA#8}*gKwQ+N<=a=Y+m!K@>}(KGogjm~j_&%EA*HARQ--i)@JBo> zbUfg8R3si9sW>_yF`|S%zZ%c=tC!2@odH{e5j|a9x4OxCU@Qix%3H}+rz-M93Fn13 zL`LQ^=i`Y~bR8jRwmjJx3u4ps&wlr63smT}Gtp3?fYMNY>!Y5SP}G`03n>?q>_kn? zD9fxr)d?|?pEKem03Qz6d9;IM4z0%%OCm?9YYDa;zkkOuXEVD2>rXjs^^`$Jr%};a zMM+&>FB=bnEXy79fus5(frpNw?PJrRlZm6iD9@=e_&%u4oLOHETw3Mk@0(X$LP3K@ zH0|?-KCRHkem|fKMuP1t_HdKCym?1=W($mqt&OT|ofW3Pp zmCF>thT8?>LM%7go&DTE)0Cr?O&E_gmtuBIny)+xvwueoP<)|&P^Fu5++`IjYK0Jr ziZI&c-H*JP;soyr&66Wz=`)Fd%j2;or<&zX^g3dk@<>8*43_0a`X)t#ik-+1ze6MOmQ)Ap#+WT>QDbx#)|`<#MFuU2G7$1_p0pLtT+q zG6q97x}=;xb6Hl;*d-~)TwPXCV3ktdJsZ4LMF3Sne((T{G9`6^UmhIfx=aox?y#~C z`CF7Kava}hGDd~dy(zSlKbAEweIleepjc0gT~y8}SS(<|l&-VrT9h{;{ZqtW8w?Fn z28lWxu7TDWu1V~@Hcm_oAvDr1$iKeGJgvgFSb@=~K?hI0xgJfOKmj3IVTl^UGz4p{ zY*lWaxW>F%Zd(I-F|cqV!?X~GK^+18Z&LU=*jwU38dB*{{A;M@G$%(bLN*b&*jB{^ zTIC3$qiGWqvfA`uzB(}3;YN;ZCkD)~DD%nb0omE zwLevHV18c#7;;G#RtNOQY?~Z=Q^(}f51z8n09#plJu_N$1ceqP(JxsXaAVkOxIRK0 zQ?+U10_&B$RiqIQU#JA^2Rj^%7ZEOkBsq09eZ^pv$R7-FY z%@Gv_R)_(NwB;uDL-EcC-8x6Mi&+}{Y1W5DcV&TN5N!zLmci$N2v2&V$CMPwqZrZI zSzrhncNJ*KL=_4@s2R_`;ELNJ5GYR&)w4Hbs`EvjpPodC@q_wbk8*WR%L!VnU+VTj zq(X_sW3Y5(vcQNu11_9~>gTFZ4vm}y0G{R52I=9Wsq6*=AerqmEKp-If(|3Qm$971 z0`bc$u?1_zX0T6AO4AeG)ti-Y4qA0EyFBjVH)R3GQ8%40I0`jYiUcHOt>!r0t#UPA zpS}7zRYeS@hBQ;WDuMir_e8E`c8C3N(T{|JmJzewv04mOXc=skwe!gIq=5s4W;q@I z^Okrlu3h8AlC&~&H;tIq#ty;e9}VO;84`hb^{Es4@vTw*)u=S5io#^i)U>CL_t;!$ zY+FTWD|o|D6>YL1=Ul1EkQ!pxK43M8?%h&-mZ2RJMK?F4iI|Lx*m^YnW5 z4#>6w)js8pzKeqRGM+&10XHk4-@b@?OE!$^KjmkJMGmM;&?w^m;}1da8oI;t!3;UjSlsL0}_t%)j=A{Dq`VB>RDI+mH>Scil=-xhPwQ>MgCimZk+ zP=d3tpOwa~jA_(!l_5Ef{X%z!Z=Wc)PmboGs-TNTIK(!aQoFkr;lL}5oA6hYgq}@; z6x(lAfnG^IQ;e{Lh*D1o@wXVHTFB- zJ@p;XNg&vN9Y1(;Hb~N#gGn7+Qm*%C-G9t9u!25^taYLPaEdAxEzj7vf*EXy089$Z z?pK_w`C{hj{qC5fvZ!dcd!!sw4V>&o#nqskH{Nxz>VYksYj_7q$XoDmLYsDIU&fZeV<_^epAT+f)-#qR+JiePq@b_wY z=Cjw9MFZHTISoi?sp|XWS=Z*GvY0e5*?7#tev1}(Vz{Vt&e5WR0#pW?BzCksSVU@` z^RROF`K6vTcq}7W4L&gAeX;x$X*ms(;*{5n9RWKr`wlJjV5Y^3^`gmg9X~C*3PuW9 zR6JG6qPX}gfFVAIsi>exD^VUv1<)V0VutspW>VFrQ1xYK1||)fc!_sjh5noV(irO2 zBc<=*H6ZXwx(NF~#7fESS3OT79I%BP8X*DV9<#fl2t@X?w?e=9(qk!LXr+dQ&QjJr z00Z*88(I}#{pbqE6-^|rwu7290B4+-{GJIyV4^E>$Dp_?;#ab0nQE$uPc!Ya{}$k- z89^8+D>)haoAQ#k#=C}Ha2`VPK3bAB&=rZEhR&1%4%!pqJwFA5BZ1O_ktR_VC|xs{ z5#%XP%n^@O(VC?^ugR%FREEVqr=-c8FW0Kx93*3XsWGiZL|=Xn$u)w6q`^_<$B~3h zrK>53rkRh#jr~m}xm?ZoJ(+f`+E)FmzUbm26M}Q*btWb#j0_?<(I9SOByG4{I6XtN zMKs4x`K71BGgD;5AN_D+r_xomcj7cY-rlW>J8sS6ryav{UvFd9VvBePSUGH~^`xIa z;&Bm&KaT90L_Ry3I5>2g8iwRF3N}pScS1-L^KW=@eO0#d)C}*3{UpBkNShu$YRIvX z4%V{DPE`zyJ!c!N_BA`-(kA6ijza-!*-$4JdS*H?IwxG%2{aeeV~D{*rP&Qt!8AlmE=Pl0-p4^l zebJY)W};kWe(qWGhFdes`I-JA{#&fko4(IL&*9$oMW{HCDj^f0nt#R?R;F1{X*0MDzb3fAK?25!tLeY{j zTiTEsi^XX1U+)EDDhfx*#)$deb7w&et@pW;t2=2RZ8+Wkq|1!Ae_fhzF6ct;!zLe; zb$$a7@wA=(=skzFZUq$zJq46MyQ?SiBhXW@-{*w#azyJ{YE_MB zV-JA!fl<|=J1pU7axXuCD)&S-i!2KTSEWmmjq{gbe z@jzPPyEyTXq@2d|y75>3UNaX9W4KJw9LSmj3}#@L8xx$1M21sV?`Hm}HpOO6*dD(T zgmj(S5(e}ZyDb4NjL9&nFZ@3R4K8LuG2 z!1Wmrx`@o!Mteob$BiPlip|Plvj%?p*#Oo6<)Gx@NUyr+wxZT&Hs9mNLYBr*eAkBj zkHkZ$N^d9{Z9b8yIGJIN>4tv8kpIqSAWgjcdhsA!zz5Pd%u5G>7L*HtE9L)bNyaQw zU*sT4=>yOT;-cgy=%5+Z4WA*8w$WYPc5S2Vxq&feC8VstR#`uLNm@mm%z(=sbY>0S zUT*N<-EXMP{Mz#8?#sL1!GM`9nxN{+O8xwN0MfCB$ym5wRqB&{4i5IsMAR z&Lb>zum$}%C9mDc2!m{d4mv#-?b{C;kDwoU?51Q(@p4O?u(0Rs-TP27A%{liMIxSN z5@}GBYd}-nu`ZShq{xb@2plY_hdyhl^h)%Fr}CkwJkog8ak}sTjmL2RDLcq8(RXl7 zwzpbldwbcx_*&Gx#gn-UDo$yfK;bh1pe!)<`v%zZD*!Z@cLxG4+%9~Qx_Nva{QFVH zl$WGm!qe|c-6HzOpjQ`RWrj+D_P0VM*otL8)Kgj^Vz1A}8BYH+KY5i3I7-gKMEnV} zHVLNkG0F}3$bVFggS=3chD%EX5}q&p2L^#mhbWc&d%Pcv8@fD&#>6jADk=48+aE^_ z>Jusv41Ybtp7?4-x(Bct7_{(2XQ@?**wBh=!2Db?d|@=HrX|RC3=|d42P`EK zTHw@c$jD&C1q01A-NLVoqA&~XisOxq&xw}ItmYWmgCx+9+5JCONYx7rpkpc-*zwMz zyi4LrD=VXB^T4-Bw#N15&u1jcK0?LJ#LqXjRW%}c=0pSY8qN}yz}@n6hMT|XX{Im4 zQzW=9modhin~q|XOUTlQX%u%tk?4AK{DjCFm_V98jFvn$#z}1V36h{g$&yRaKQd*j zFq>0(3;yQiOx7TZEgWx9CVO;KCiDt%xYzV4q7Vy|HH$z0mdOBU{!psa0^Sl6 z8r`xPNa`VX!w9~QWapwIwaYRhYV@mOqE^;r4C!=JC)mY756f^xF>4_E8Q$tLZY>q7 zgVZEt7w;B(MKt^ybRHe^;Ar{rglOV01Yv@rgOznT?zpKMh*2{Cye;!JRxA#j_xuYP znq3wF_VT@!^S` zHqyl&nh_sS%)zj@Da6&m>zyzLE`2g4g7&JVSaxnkM;r1!`>!YSgGwZ3KJ1_BD%AWP zZvc+(A79GTAW9w;kymL6Q{(v8-gHnz<$uCeUc^5{D<=Y1s-IU(K)G69pTeo5%cp>D ze|l`%VEQrvLWEtua)WRvp|WCsQ5e2w1?6-8y;qzSWl^|sakoozduzqwJIz|l#0}7* zAU~Gsi46E&VqkOumFn17%85@_oH4rY9T-od#iFzbwi!<;1q0%xV6DeBP%+r#4|;T+LP_oDdl zP!A9*N@OT-P2fXC{BO_n*h9(iQYkT998qHG;p@XkgWBQ3!ghIK9=wRirQnPTte@Dh zEO{Z#%TyuQ5%8JPP)z9zqtST7W})FEiSV$Ul_9{B0=U=ULhs;^0@gl-9m2k1*TH)v z;evclU=$5RupHU2&=25JNB5nSQATKghuuO^Bn^t9&B?0E)JfVZfJPaCfL?~6>A*E6 z?x~W8SEFyiw$Vn7Y)I6rP+C;`E^rVQ@RAfUajgC!X(D}lnsz~($`)n6#c?5R;S8zJ zZi69ML~o6M`seXx4vWK)P{7b&A0LRt$LV(mkhuYA|9?IQ-hfzuq*OZ*%7~PaXtKKA zE-6lwY;}S(`eCnY8YPrIHfDI-uCt>MY6v>ku9=H*zH;9Hw28Vue7~(>HF}zMdXgF$ zR-jHB+%Is=NM3)U0JMW}bd+2(_I<@(5=Q18PvXj%mKn6u>n@Efe2K%T-!v`Op zbISiDB=RTS6y5+yw%xwG&xRWR0Is|TSTftlzX1J2j@WQg6^8e?>KyEIHt=J+fPOe9 zw$3omPl89wy@rZ8qhyHYJAOH-)eFpBQd6D8lR2aK#(ssowN-+HPrD0WLvyW_h&0GI zL~Jy9U!2lKTPxHlTAC>al-s^fEnQbk&nykd|C-$B#F;s~VLmNxxYTy4D*k$8h({GGPzL1ZPWoztRVVSWq8* z_4OdAxOXCe=R(-bvuoGZ$vt{n_-4N`cF0VN$1`}sx|95wyhk{vXSAz-xF@)9FekGx zK&kzOg60sk$pU4^JQLB4_FMC$bYyA`I)Eu54!h@t!oMMSe+?PnPGR80ru4ttb) zKi|+w(_Z0;V#E2LvszBH4lsYY8x|lySKvVCPaoh3ITOV2>py@ilf*;@oBX5`ff9KM zfuh+*FoGClbGLK+R0UPef^5@f7Y+fHxZ%r@Ston>$b>mftlGVgWUk$_znNE7k4N35 zsNHnQt~&%sdp(_5LFTFWoX1CsitpYIU-86VF#Iie@H&qj={=~ZiEIdiEL1PuR@52Yg#1<-FQ4?KD%yCb0qoY#1eV*q=CE%qb?EK zm1(c*j*5&M{Fn|lqugGXf_^rrGsXv9$=NI1m-FuX;S2nsCbnArPvk2+B=FDQe%j94 z2n#J3+2!8Xp1}$h#=ySKYW3Xg{;e_$9&b5q!qL|iu(Mt6)cp($%b$&Flv+@Y9KeEg z&&2EQS;~tySQ#(8=Kgl=LSjLTCAri2yW;RY-u{>~)UB5`*7HJlch|=yrE55*1-YXw zqeB9w_fk2nnc>|i%4UV4*6r+3^i`Jq+k;b3VrmZ2w95}Z3&*(w$IHK$_Gj8U+cmn` zz^l8D(p!tWTx-nRTvBM`ucHS;fuD(>>YQD`?=NW=;04cM?ipaq@;^yt_&~!D1RWpt z&+vzYQGMIQBSI$}{0Tv195viWJjhE&h+ZhhJpyf?<3C9&!4^9#ZA_z`0R&v3O#$%y zdO*@}e0uC7=$Lv!ig5{jBj~{*=<(r{yL$rM6BZHhUEI8WN1!0EybjRpf%Ob%5mCa% zD{BUSciP0%o3GUN)2f_BZC*9@S5rnpJZo+PBkS5qvg~Ad{tc-0Y_abqAU78z!mAgL zCM6+I?>~%P=hy-_`UVw^;K(9X*G2)3D~0a&4^Q8LCxBkyWGLT1*<}$`!Up}}9d(YI zJImUz!R@RcYVl4-WIw_Z&mg^hbKc*QBSeV))28Hpq#ilZ1)0<@MiVEcX{o!1mci@2 zVn%M%kEfk*p0$1F^cNb(ufJoT@rr~&@h-XKhQs8k@TZ7Ff{#KrBhQHeklxbi+0p6v z4j&?Q7K5RLg{VaT@P<=;n?|r9FljQpm$=b{>^dtvFHb%fF*8Uwlx@GW8{&6UBlEz10a-2QT zsz;O<=T-3echYzqoKNdZH=+jd=F~2?V>&0z zcX#o&zvn0WkK@@T(XpL*fIUpc@5Yy8wb3HobpzLe-(S+!pHe{HvjS7Vvz$PZ$+P1V z!!5J-VkEY|}HGGv8nAJ#tpyntu)opYHk%6K4EyjiR6RnVs250=y1oT(G<(@@PNj%rM^SZgB1o z_E+(x+Wtn8<7|5LQ+t0~uhfc}j#gd3p{4fm7PYj==9{P?#)`Eph% z3Xew8np)D9hKgnlTV|Jo)M!xo%-}t06YrYkO#VvLO76j1@ukC~w7=DL^PKQ}De|=y z@8g)~%NvOWjNxo_kE@Tu%v`vaz?(~LV1U&Kv%W4Z%O7rmjh>Uh-_lw*!k45+Ri&jK zhAF>y@4BgBGxa&O`GcO1t|IwKJ92g79--xh{=_oVxe1*#2s`Rk@>8S_$VkuLoJ=8QZDwH4~NU!P2! z8!eU(g@UQ=Qr#Xmv0ku~ucJha_|^S2q0}O8sK$0aa{9%*?1z8R?eMlbnQNIC*cl{iX`0xJ!HEaP3Kq$*i|0$L9#-OGta}g5_uIq>#0~qPy!)*#z!|Aiv;WtBvZX z??OvzQ!J#yzHu86Uw?5w5t#}{H`%suA2>Rs{cTnuqn4~ZLSat22xTnZn{31=b0$$J60vYHvz)^wyh$J8^`uHh1l(gQOh)2->Y@Gft$n3aTD!f?G~Dx3$} zptXxWq@z5s9=!S+AD8_fDsz8v2%@%UA8Y<>*$;yrL!2%DS?wIE$169d(Z}?Z3lyuj z_FqU>fGA$SwU6b%6i!-UflHsly=`ty&e9xb453&+XEAmTo8gX7Jz%5+e$*fo#t+Z% zljb&FQEe3KB_U|^`fM*Ti=Tk|q+37p;SJGrEA{GXUEwyxH%-s+WN1b(8vZxJ%Jtsk zRTtB0nVBTtw2cg@Z9u<=+^cg;?cCjJ^myp9yWI!M#e$hxJ$6-htBRPs=5bJ4V6o0K zZb{*bzK-CbPhUNsnt7L3G_$U-P`lb~U>>9|E%XjB2ww#_v-69gYsLH4ISP`}8Rddg zHSsp~5jMsStCh!K+_7U#ectzMobqJy82TOC_0pZVJ%i6G<0TI_al(pxS@1n)AyyG3 z%`J_HF*V^HKmF#Gs&Shc*${dE2+7W^e0o~ekb~LbiEYlW(e>slsCt>j&dHSQB9i+fql43#1h%#19`1;;RJVu!Tj^+fI{&7_wUci8^ZIYcmswH;vw4#f zOw->?;XYhI_A4JX=HuP>><4!wDAt4WzugmVMH2OmW}-dP^qx2^MY~y4!&aBX6HG)%hQ8+68JVp`M=9niUD!PRYA0Ys+YtasHt5 ziq!R}2)H?|&wn2Q!V`zFOS#*+9U?+O9w+a3+YXrW@#%YZQDq!7 z*-B2C92eU4MATm#YkRnKgFH|CnK)%?-9G;Gg9Bb)HwOkBzC-04zK#0&wf=Ge?UBwD zvG6Q0IDiyJ%|7D-wW_mwk*-ty-k{N+Wh@#Wje5h@1BX#o634u}%>ndyv)jceqhaC` zb%`-0e%@C6xAMdmPIbrE%(q>$oV24cJNt3%J&#-8JLYVf&f=nogDIUk7}`CQgCIsCusE)p)+8r<-As7V|?g6jzeXQzxF&yk^)OieNtn)k0sXTA*&(JD`aQZpbh7`byAM!y$Mm(|j}@`sW9O~`upAh*E&k6U`nHm)_UVqPk* zYiQY;ot7Tkvae%Ves{d<`_;Bz>-B`l;#-udo$%gMd>-YmYRit=>YYxhI4Q?r`e&l3 zyOzZZVG;Alf3hufPPfNeeUj~{+(=yCyb$lE@BomW0Sl#&@YBw=lG!N! zHzc2?XQBsj9vmr7n(I)8ngy%Jw<(OJb%znSTi>UU9G|mv?+F~(`+2Rk-kXILg7{Io zj86kNO;Lqy`dKV#aV1GSTu4Bpe0v>U2wJ&NrKgzr-8-{~S$f9~Lg8(#&p#z0?#p9qX9aS|0sM2p1I48q8alMg`-ig|l3B&?^>hL);R@ zx>>-XQ>*@-yb!=uDH2akc;jQ-dOkXpmQE|?;(2q7#})Jd#M7`ggbm!6gA;1lhC%sFqjOAgq`*e#%X5^`5qbk2ml$_m3EWu52=dVcaDiSuAV(N`|eZpz#n%M zR;a%wvT0_#8EJDa*Nwkoh=ZkF+Afo3oFtE39}?;L`E7Q*b>n<_TxRVG<#iyXQk%N9 z99wqRJ8)f;QY4k^x{dn8pudh<`1zlQLy_h0-Z}(LD#!EDb3t{9e}neDAl7a@5*xGB zrVt(cmODNsPE0xCF0nZUrAQ!CDw;ZNA{y=AkK4b`_(~Jr_zFxoxhE1o;}B;RNijyJ zmbTnYE_Uq9`vRGKj*DPMjdfeuf-I!@;RVypEe1ODqLmG@9Q^Lv>|=UO?wNm$pk&s+ zR&Ru&CTd@qZucVoCUhCD5%2PC(HD_Ex+=k^z8YyGX=-z`UTk+tPh0;oo{rYZe+5kO|QJ_*c}v0?IgU)ov&3q#tM~F&G5Yb&>IqJ z{N@2%U{{+ZcpcqpwAnm;V*$l7V&&%&yj>kR=(q6{?z}b&9{lu8hw;VNg3ry9R1>&Q zX#oqKK_Fe5Tb(T-r3+vPLLb@7ar>GJPi4uXmU>T)(+=0zD`>Km3?#JdY z{obzgVVCP6yM?TF@iY&ccYpe*T49>Baqy9v;-eM9Uroes_XC^vuatkZ%yxVY(DvJ$ zLEEBL+;^Rdr{75C1kD;je_jS)rGh9>9oA;QBIXT$zKul3V1L0Bmq;`x>Kp4n{cML z4{erxxvtMY*Hh73JBC}zrK@npk+D%*d~E5Itet)>Jeq~R_9Pw|ZMdgL^TD?djx?dL z9O&!2xXKO{CH%g`xYA`8yr!eV2hTwji@uKLa|H~KhqiR(=Nk^#3rz96XbLF6qjspV zdDuC1+RbVQm1MQOxJBs02bhui?d(_vkkgNK3&hqVSyHpB5m|9&Auj0f3SQs|<~MF3 zzYy9j!w|#@@`!h?5tE#l;LC5=94OBe=0~72uUw4yT=qoZ zg~W0Bwgh~=)gXC;x5#F4aNeE||Gav?()s6FnXT=)%v$6|U;JGwDizm4X{blP7j<?I);O3jw-u6wmhEs312pS<2~2MwpjMA1&Rg>OgV96 zkRdt=pdWj8$~O{+3TKy@zSlWm?}6~RGc3>iEQU2NW!}TBbX$9eXwv0Iw|xDa_y@U< zukr$*w{*>~|LV(5J^10UO#bHgFx56Pb-!pJp>HLcC7Hi=_d?L+KV4da*a`}rS}RVN z8NBY7f~5FPP=#iZo%y{{VG^*A_ctksy-{m{GLF2O%5-0p=ZgNj!0V7^rbR@-k1KPZ ztxThjgvy^8hnE~v;oa|4zJlK0$JNscb_(sF)&Wk5q6@jt9w?7%>)td(`+prpWV~-E zC4WY>d@FsC)t4^*tq+$n@{cC_-T-NbUE~pkXygz)uIzcrRVYDu+A=qi+VrEi-&@wc znv9A+ok~nhL6)_7nxn)MxN*SMstGW0T8kBk!ZUBiyCFa0QU10!GxIZ~wuf(@ntJA9 zvnm$_wA0p36ilT|W;}rWSRWZqHR4XM7uv&Fz3su7TQbJ_qmI!N-}Pahkh9^4gq+_9 zC0O;|q@*bv&hw*?UU!(R)B5}RNRwAhlIWy}Vl+zU-D@|odgTq9ix<{n2*MT{$89gD zUXkqH4rfxVR1p^q39KDPh;%W?l;efI8dI;EIK5anaM;bWyj|DtZ}@xHjhfpe4nU5k zt$ErnLPeY*@7GOsmo`$GmWIm(cB3^PsYGgWA>g0am8g+9&Kf(!aJ3kM%I6Vdw zX8B}bF|{i%W4DQaLv7PpcHXEpJzXa=zv#?<_h8F6ln7q9L`FrOQk>?>@FH8;VRw3p zf|2-)Mnx8~clB%vG)Z3>E9{#E5%3)}UJXbF+hm4BWNZHD#JT;1^6fNS4Pu?%;r`q- zwu-(SwC<>*Hm!fD{6)gTr%2?2bZln3A*3~A-t}|-u_XJ?!{il{>k_#s<_0-t?5tYk zSE7}i(t5CuSHZGz`jVF2Hd#>*7{#kV>>t+FFIam$uaA!i=L2C)s_T^4~{dic2=VH+^ z&%6641OFy>hdBQoY<&%>O`jiP+siOiz}iKGnm~&vCe6#)j&~mLkPoU|W92_)6%jX94<$`OzZ8pY2qkD;jC6wNy(A@ZeIW^Wo>dgO zPXJ4!DwpYiX6zjY%mbZsNW`^k?xsK+m~I{}sA3K2W#&yhg*3PA?^_UCxKFQFfAj1O zO+$bK?(@>%``CipQxo45o17JaK{%Zgbk#6a9Tuq2-FZq6x`dCrDT7zPI=#DpH}MJu zxIb7g@NrQ_948xiF85w(8tbW_;#{=DN(s6X-p&uNO*x#y_0E?tj-(uIqc#XyEuEe| zL~s5;4AioBkl4UN(yuHB^k^-=Z0Hg+dIjn8n1+>Ijet~=>GL)rybX9cafZktJkoQA<3P(6uc{Yx0PwiGTrgY!q#!| z)TN33dl=Q+YQgzsAs4jN1OM4%xgnK_xA;xu!yNxjLYGhIw=Eyb#oy1}*@b}>+~0E( zT}Y-jBzYP2b2`MW~k3d&uw-V9^;l)Qkb*KZ|YHM_S}44sd1k`KJEgW09HFyG0f|l zaj%K9J)x1a<(_D#%jI$aT!V*p6KZ;+?|maVb?S`IJR03I|%vNdUuU-%Z?Y=j#S5|&(>C5brvGm z*G}U)Naj#W$qG5?fMwU?EKZ>8pOccBH6fv@*%Euw=?TsA$a8|5tIIv?y_HU~Vxkw8 zt?Pc{Vssr3#8IM5Ih$vxIr;-)-sIUF_ud5@h~+#kH$w7Ftu;JpduZ-(Kk^&&EOV8X znrLc$>e)spfmhOm6hc7P}8u24ho5H5{jLE_$c)R-i zUVwi$9U+WOkH92pdEjln&mNpcTDvpptpB0u(b=@ZaSHzj$070-fXH=nmH*;*?cqz} zyLq$s)_mg(7+xD?j@J8>`jhNgKkG5@SbNje?B{iMeEOQG`{&^fwF`DR+e%C9^?Pp! zfnaWQx9A{Mfe=0P(aB7el%fNL*Txo|S-xi7)eO!euKburY$ay<64LR&I`?sgKlM zx3vfPq*~I$JgKSkmI{Y;%a?u0`69~3ZlF}%6>4X6Tc~;UXmJSTEeclB>kbf z5V+mm-eXgqPH{<%u+Jn0c!=g#o?}+Pf#s2OYS# z)6JH!wXKhaOMALUy}ln+5l+4a!ZyxQzF(J4>CSJslfg@-*Vh6TuHDlkQ)&)|Q$P9H z=ATe19RitmvzABJ(EkWG0Pn1 zGpgof0fzp9O$_l%ed_AMI6*yIoTA=Kw($;BZaYn`6F45P491((lIW<^eY<k~5*qDo;%u0W@{B3uzM7vdxc~@8%l|OMc_nJR^iUA+xVn{YJQ@ow{YA0v?)9LN z*}T+fv0v3yU^%wc-CK%0=B_zIdX#_N6_l8Z~jxA@UG0`u(gXcaqAggkcbx1!U{_@VjlcctwGWf# z#2b5^6XtoDovSuQn|4*W>?JQUtd)h6GwhA5xgTB5m!|6(*Q7it4nzX&XY6(aeiKPK zB{ZrQU&9g&TZ^9!16{3+7?Uy7xV{YXke5H(*jVq>M(WMD7~<^@WWNiU+r04Q2)ey3 zlRT#hSzw~NXUaSnE|7aR&$Jr<8GDean?Cz3)!AIVSdMu2t~E0}F3= znY)K~P>?;8f$MEgGuyq-h3t*-5yrFJv|+u!E^77p-GP;x+HQU{{AFj_xp?HlTHWfj z>>E>h{axYB#&KbDU8UjHaQ4{wT@x-Gqv^F`D_UOinc05i#w+1p+U7n9dlDBM{6Txc z-oujqXAN~!u1D)pMVAf+`U^Q%*M52*y=(XNq}8q;1FTL%5u?dbuwxxPNZ8F3$0 zw_nd5c5bBSeiJLA%1G_@E9QNj`9QhnZRSqS=LtDC?(FIoJbhx(r;Dlhsu_Y;PXcT= zCMOkpkB#e5Q1Gni)5zWPjE^M(-Bn4D-rjAt3#9Eo5AuF{wK#T1;I5U5!%?&&mylCG zcKg)z&PIIdv#I?$ostQkj$S;d zA81eSqI0;}yml$iMLR5)w|;WlV{Mmd6OuUG>_tAt&V28@%{!5Rj5jYfxV?5c`iHdC zXma8#Vz1HT938XtiO_!g!M%$-mp8o?K=*DGIlkM@azpHMwo{)85l#1BF1y?I1sBgL{3sr)OVbT%_G-UjbaJu5OU0uHiAACjBksI=8=>Fe;-{W@M-LmA9eg-F zNZY%6*DcMvo(1zs*QD|ox^dF}bc5pw`(x?r==&3r=)HAyAJV7l`uCpd-)$YeKzFLH zZv0t$t)B7Ex~|OH^6cu6A;Mz@f@P6=wWbIf_b{2+zTLhlJ(s?^c=Lc`&t8j_eS-Sv zPM!U^a9oQay_)L1)F1Wv+@Y7BKbEdsDLj|r`1R}8?1P0ys~mJsBtqFEbf*RLFOKij zctG2e^JWa&ojGTWfo`X1gR{Q!9ZS036Fe9pEQGgv3HJmd2N{<5&yZF6W_j2(X{l?l${6mzTS^@L9=`6y}~c% zG>9tc_ObKuJ`)elD0F(4pAcI#W=Oj2%FQ#@9$(8&xAZW6wJo}LdZ1oHbGK!NrgsMm zTFmTyY<#Q5X_;G|4IBGpQ}8;Uv(0#qdPaXbduf`Yhn%r~z!kmbS>YGkjN^?>nHInP zfh1|(?mZv3?wDlQC}+ST?~yyt``8`W(sAVR$B4nvRc8H`H(uzy(=AVW<(XfpAUt1HZ!;X|&62-s?RblhHRm zWKOEYWTt7Z$#Pe*afn{AUiXO;dNz-4FkRQgmD`-*k|o7De(gB<+6$dlThangwcdN+ zOq)rq4h!?X9$VYbn;GzF*UN*MijeCox@5+mEgAcD-;UQuOWem@k9zYUD(Lp=l#>#i?ar+~jYV%Qj+mu0ZR@EUO%$EQ6*M|!u*={)XD|ip_y^9a-WcNrQv5MY44eT zE+W@z<>O}k&Oy5}zzp5`^kMz+ECZeMaqG)kDw{Q%Xr0d+v1;ACPgXYr$2{6Q^XikK z-MItLb05cgx*s*|(%m4kUA*!b{q%}UC%$HFNo$uMVH0>%{(A}GpIqxa zMNy>a!sOqYFZ}wYJ8hy_1&UDbuy)-GRG-z{v!Yt8;V(p)Un+dq=`syQuwM`P(i&hpPuhr8sX6Hlk&velnIV~AMYGuwJ1+s)Oqrppbo`a?3TG{uY=dl$vLvNVIQ9Lh{V`84@Xbor{&P6 z4B79+KC*jO-?j*L`1)sbzW1#Detr7&nC62jm{(hGAu8m7G`s~}kZ0>D&-?G?P z`v8Zs7TqpAcz#(lA?Ic%WAWWF!p>W_92JT;mOqn@YE5hWde_L-UxP3+gT?Kyz}?K# zteP%zj0kPKZoMc?)Tgj$`u#aM`Yt_s2VHj{-tO75V8vYbz@FXCpLq8Q?>b->=c{y6 zGspLP=BCe?=rFd^jwR>k&Nv<y z<~$EO`-FuS^uoq%U!}Fe)~rC>M?D(XYw6ApUMpTikBx26W%lX4={uY2M1DFvbue$J zxp#R|`yn58F3cDtwidp#nBP5c@1Xg6lPzNlOUfBhCV%vp_4W9|p2xNa9T_nDcvt^V z^wf((v$AL3EnUAXqSLnG14C|XDSd&A_HdO7EE~7)*n@Mh-@ZpDbh$U6$fP5E-fy-o zI&~qa>5}Z!OEd0DBBnOwNE?gS?Cg5?Qrn(JGqn3f`93T(etP$w;%rKCa9QvO%Rwfo zkt=pwY9YQqdiTTk_M=N(-xVK-OL-sD?wW1E)j%_kr0W;1KFyCF$4T!{R?>gdr3JD3 zIz2}|jxp?5dNTHt?Wn!4f_vf0yH|$EZw`N%X>)6Kzwp5at=5+R&l!Q^R4)=j-z9qJq{)!c5Fzq z@4EHbhs$>^_nP|Q6@Szo&!I1LrwooxUVh?guIai>h9G#{L~}`?$D}`?3zK5fGlq9; z3VXC!`|#nCwI`OCFE$HKYx7EONz+=&DYw~q1o!eE>#tYB-+B9fiz^*0N?L|aUDeHH zl-Ec%iPuUeH?Jr6*?V+oSqsdfinN1)pYfplP^Q zoUp;xrv32PoP_=9!kmQT=?k#I{06iY4Vv3L&>IhtHTUN@c;$`8jsGFu!CND3{S>I4<^IP{fza5 zKddZHpL6fe)JiuP&l+XvdB)@Jg9a^W?#rzx?8IQc zu}Czj1FcyPZP({o=`7W=!>;!umu-LC_Q}&GW9=3UVzZaWJX0ip2qjDI_`|?1*eW`C zW8>u`>|nqD*UotdHI+3AJT&Q@h|&Ynq(lh4NUsWr(xlf=1d$>jEv$ev1wo3TNL`vp zkuD&JNDqR7R7D{mML?QVC)foq#?IhFE<=g!>+$|to4!znK>XxL*6V;ud-Yz>=lg3< z-r-KX@U`9q3JzIbaS?6=+yX|Mm%}H5Aa3LT`F-J=IV~#ryM4eLRZ+UW>Tu+`-NR=EcuGT>!+Xgk+x;qO z*5-bK`QhUJ!yrJ>M_N~baY`s?)Wf&psdcv3Ha=&phQ%yF2-GiKwp}VyzgNCeHT%$r zviYhxnx!hwG#4hM#Q5gih?jz=I7TTWE0k~PBek?#9w{Rq-L7PVGeW+|(yTP%`=yir zx6w!l3_moC@TuEvSc5E8HWR5s?>C7fhnQZYHai?s@}KW$6o$BWl6ce-97%9kkZ|T8 z-KK5$?VQ1c!A1rmy-oA*L&a|N&I+`2saH02u?4fCn3EAgIz#8%^jGnG+B&^mMFxC* zop6knzNWUJrU0hr@gO)E+2v%`PI*_sCDXEh-#IsklM6ysfj{b!=Xw~`nCzU>wAB_A z2Z7cTW>$mSt6{9Z%S%NXl>^G>p}HRfs%Yk*JPn?{PNK}ncJY9{QWV(^y_{Afa}!JH znj$!P#?+W)JBxQS->Aho3Yq5p6%wG$8~xY$-oM!+5aHaJ_$pCUVu~$x)M%6nH6hxv zh6gy77XNT9yFQvM zrDI1LFdvd$%(c!H4Y_SgI_;3=ahU32#(gpfkqh38!tsHJ@Ou$K=JC?V!IDEKgND!c z=MQ7=ogn`(kH>>cW^TUe<3Vz2&B zCiw$0G8U)DU}9c#yqNJ(TEy%Ggz`N8VU`+fd&zncFd=MZAY_kSTIC4asD`#%y6 zy!GrLf6nf|0v_)85W-^+{X>WWBsfTa0y%&J2Ni%C2hA~Pe*)bR=m87>=n+l=7>{rY z$7ul5F_>|%9Dx-F+Yva9zzO;D`|K~y0C@ffcme!?vp58fAP5jX0{jSvmm~s*7!L6x zNB|^{Aq9}eA@dJ7{1%l1oIi#lKp{vqZ#4qy9ebp-2U*c{<-{vEzY#{mZtha(QBV>km2ciOrF zuH$h38*bq6JjUT`y}XZte{+;gk3>BCqW1nbaZGUAhi{U-1is}L=6!W8NuSK$T019^ z(MFZ9Kty8}i!a3x`YCuByT7acdk9?JfQWatNyw+lk{@wOf%%fFe_N)BC#n9f2FFWo z<^{L$*WtG1+&fjzZRi7vofcXW=u{&dSO&bZ1RXbv6zS1ZKdxfseX>pKIhD{MBfEFw zRT!=nX>Bq%$29qiJu{fNV*6YFr1429adMuzP-4kYwWsHiRP}J$);;E7;~1)BQAgo9 zZCg1sjfN}{sU`D#vX;-5hHPJt_#%=l6Oy32D9Tc>xg@D4SIP9C^fI({%DnxHJ}+D9 zeo1y=GWtc-pn$L}$x4&7$5XbBD*LYprl70AQ|fH5Vr0lxX&Kn7yYxvf)t^{&wt5)m z`3yzQ5(bB*ZL0M@i5u{|U!dsLQaAQW@fn&sd^XB@d9fl>MwE8z7Hfw@wrJN`Czw%g z&1e6Z9gN!jx$&DQIafcSmXn)I9BWZ48F@Y1$mGC2(Kl4WT2e3jQI#$PjvWUrOjXgl zlGozk>5%vigCeG_qBg&22cxQ{xrr^&(x@0u3V84rUaq00A(N^eA^AzfDOSvdp3vuo zixavbhGHo-T!WDku+vH-R0ZE@AIXN8Mz7Xn6R3Jgoy$r*%|yQX&`qGG$hgim@4XnU zG?w5VNubNEZkI8Pd$-i*`Aenu<;y8g^fey&x~WBqkZP__C2Ghq+LHU&XZ7MrAu@1t$mtI@?A zHj9EHxhDx650uHcCKN)MHCA>X-B?{(Ughk_ayVmRYX=QV&?f#N(!9SG84dJk`VFZv-JFc$Wq*q@ zR{X$VL_4k z{2@;YCYLU+0sGbUxzvFk;}rL=Pte)KcmlbatPVso_~XyD3xnHFF=jMF=bct6U=Csa zW>J=L5^#B{){k;#&U!uPs~u(qMt1|{)7%mYLznJ}JsvZJU>!f-5}cywp29YGE%&EY zru>#3Ddw!q$6&?mKC;Xb6mVXe^rrQxV2o?iIgH&oJO!FLHa{mR7Sf``)K6~Hq^28e zR3k(DL$MhrRXwwR1VB6#v{daQc{WX68{FpHrXPDA*g)th*28lzp;Y3c{*GZpRucJ$RY_D36WVPxq<%t1E~s_J=^4Th$@EA-Ff53DBj~Y(4kf$p zDG~QPSL5{iqY)3!#6S9$f0Kj95FJSJpzGP5!276F=y;ZltT=hp%S}ma!^g7(n6A4p zr2>`PUFn)-ZULM*i3=0*p4AD`{@Xg7YhF>EoMEvTGj+LB(9lFO+s&A`ytC)r1Esbn z5&QhzciEFPqg5NZw+42Cd`(5flcWz2GIr?VINyQ!A&T_8+P&8YCz>nF_xaH8^PkqV zG`S7hJ6h@#Ucju<}Z8?YCL5;%~VkX`#CKNl)9k%}VoUKfcXY)i>_H zEO{Y zCcEz?>#BRaeS0abEqJ`d3z@})bS+l3)UL^LJ>6NsxqML}B&hdG?BhhWH)h?*@3TH%r^<^7s+BM< z@UP2Fb0gZCp3i!QGS%4VUJQ|0Hcpzo3U;}}x;fu#EOA<*yq!0gd5n{&LuS}v)j1x{ z&nONHx>0pjiCyMNM~YlrqKzSyaoX#)8Vi9O@%M$l4?NY6q?b2+Hhs@>o|C>d*nYk& z^(_@u;id;FR?B=UZ!m8r~!)^`Pcjeo!R^RcK93CLF#T$$dB}CKkktfD~i-o=F8fldlfz$c)*E@D3h0(ZtV7IjH*62NtvFUTBJ@biU@Ww;jgeS zT9(;8Hx2tJnj9m-MU?C$&Gv=eD+V5AJ{~glsxX6fA+CQZZ}D!jx+!u#EK?d=bW=I{ zx!-#^y{4q(Mlu6A-K3`3jH$Gz1MgHW#PFB;nvS$$?_P;t7#xLMY~DuY+R;DhXZ_S& z)qZDc5s83qFb9bB_ziun}GcFcQ?&1;2E2F`$W#!Ga^#k|g)YWCD%OGnlq*JA6jsh38(b zb8?mDyq=)*@(gp_0?C!-)~m2gY#9abgkrYI!x?{vJxO&PtJCfMV-ya$A%ZH{F%o+; zAH`D5V@JW%Hfxy7x$i0{9Z$6hUc&}k$=BSCR5H`!)bAveIfA|iRGc&NA0_qo!`?~> z6&@J(%2jaT6BZ@$URbm_oX zmo1$yWLO(Ws{E~!P~yO+PkFsXVDXM8-h_L(&-S3uL>gsBHJhNU0OnzPZY6BbIMJoK zWsaRRB6a5XueX>A^aVG^^Iyoi8pWHStBGycKP2=`InJQz#QFDXc9hDOr zWG#6jwyDHXPkAq)U-)~E&ShQqf$*E|T#2&x92d^!Jnd6TAq?7<*16WTB zfVx=aK{^mG4A%ET9w6&ukf#c$=n0^KARk#Q1abnDa~k+0F$}1xAJ9RNpB}911;P5C z2RITGw1N6IXd_5Zp9)mBmEz_+-c0EKP@Z3cC+fIP4S2!s;24G&oN zvqymXf!~n=*M(Aox)VWLL3>Ys2AV$u+6o+v0JKRs3TW(W&@NC0F*xQ2<01rn5{3`- zcMp`i0gi#wu%ba4FgDO#kpCjc2OO3Fl+C^d$|?Zk^bE9p1k??Do4yC+xdX-keC7cj z3H~#=w0RY7P BAQJ!p literal 21103 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 BM2!Fd diff --git a/test/functional/repositories_git_controller_test.rb b/test/functional/repositories_git_controller_test.rb index 3322fbd55..b4f2c3ab4 100644 --- a/test/functional/repositories_git_controller_test.rb +++ b/test/functional/repositories_git_controller_test.rb @@ -28,7 +28,7 @@ class RepositoriesGitControllerTest < Redmine::RepositoryControllerTest REPOSITORY_PATH = Rails.root.join('tmp/test/git_repository').to_s REPOSITORY_PATH.tr!('/', "\\") if Redmine::Platform.mswin? PRJ_ID = 3 - NUM_REV = 28 + NUM_REV = 29 def setup super diff --git a/test/integration/repositories_git_test.rb b/test/integration/repositories_git_test.rb index 909653f92..b1a899490 100644 --- a/test/integration/repositories_git_test.rb +++ b/test/integration/repositories_git_test.rb @@ -26,7 +26,7 @@ class RepositoriesGitTest < Redmine::IntegrationTest REPOSITORY_PATH = Rails.root.join('tmp/test/git_repository').to_s REPOSITORY_PATH.tr!('/', "\\") if Redmine::Platform.mswin? PRJ_ID = 3 - NUM_REV = 28 + NUM_REV = 29 def setup User.current = nil diff --git a/test/unit/lib/redmine/scm/adapters/git_adapter_test.rb b/test/unit/lib/redmine/scm/adapters/git_adapter_test.rb index b81005587..b7a81ba0d 100644 --- a/test/unit/lib/redmine/scm/adapters/git_adapter_test.rb +++ b/test/unit/lib/redmine/scm/adapters/git_adapter_test.rb @@ -102,12 +102,12 @@ class GitAdapterTest < ActiveSupport::TestCase assert_equal false, br_latin_1_path.is_default br_master = brs[4] assert_equal 'master', br_master.to_s - assert_equal '83ca5fd546063a3c7dc2e568ba3355661a9e2b2c', br_master.revision + assert_equal 'b1650eac7c505a6dab9f19858afc9ecb481eccc2', br_master.revision assert_equal br_master.scmid, br_master.revision assert_equal false, br_master.is_default br_master_20120212 = brs[5] assert_equal 'master-20120212', br_master_20120212.to_s - assert_equal '83ca5fd546063a3c7dc2e568ba3355661a9e2b2c', br_master_20120212.revision + assert_equal 'b1650eac7c505a6dab9f19858afc9ecb481eccc2', br_master_20120212.revision assert_equal br_master_20120212.scmid, br_master_20120212.revision assert_equal true, br_master_20120212.is_default br_latin_1 = brs[-2] @@ -161,8 +161,8 @@ class GitAdapterTest < ActiveSupport::TestCase @adapter.revisions('', nil, "master", {}) do |rev| revs1 << rev end - assert_equal 15, revs1.length - assert_equal '83ca5fd546063a3c7dc2e568ba3355661a9e2b2c', revs1[0].identifier + assert_equal 16, revs1.length + assert_equal 'b1650eac7c505a6dab9f19858afc9ecb481eccc2', revs1[0].identifier assert_equal '7234cb2750b63f47bff735edc50a1c0a433c2518', revs1[-1].identifier revs2 = [] @@ -170,8 +170,8 @@ class GitAdapterTest < ActiveSupport::TestCase {:reverse => true}) do |rev| revs2 << rev end - assert_equal 15, revs2.length - assert_equal '83ca5fd546063a3c7dc2e568ba3355661a9e2b2c', revs2[-1].identifier + assert_equal 16, revs2.length + assert_equal 'b1650eac7c505a6dab9f19858afc9ecb481eccc2', revs2[-1].identifier assert_equal '7234cb2750b63f47bff735edc50a1c0a433c2518', revs2[0].identifier end @@ -183,14 +183,14 @@ class GitAdapterTest < ActiveSupport::TestCase {:reverse => true}) do |rev| revs1 << rev end - assert_equal 8, revs1.length + assert_equal 9, revs1.length assert_equal 'fba357b886984ee71185ad2065e65fc0417d9b92', revs1[0].identifier assert_equal '7e61ac704deecde634b51e59daa8110435dcb3da', revs1[1].identifier # 4a07fe31b is not a child of 713f49446 assert_equal '4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8', revs1[2].identifier # Merged revision assert_equal '32ae898b720c2f7eec2723d5bdd558b4cb2d3ddf', revs1[3].identifier - assert_equal '83ca5fd546063a3c7dc2e568ba3355661a9e2b2c', revs1[-1].identifier + assert_equal 'b1650eac7c505a6dab9f19858afc9ecb481eccc2', revs1[-1].identifier revs2 = [] @adapter.revisions('', @@ -199,13 +199,13 @@ class GitAdapterTest < ActiveSupport::TestCase {:reverse => true}) do |rev| revs2 << rev end - assert_equal 7, revs2.length + assert_equal 8, revs2.length assert_equal '7e61ac704deecde634b51e59daa8110435dcb3da', revs2[0].identifier # 4a07fe31b is not a child of fba357b8869 assert_equal '4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8', revs2[1].identifier # Merged revision assert_equal '32ae898b720c2f7eec2723d5bdd558b4cb2d3ddf', revs2[2].identifier - assert_equal '83ca5fd546063a3c7dc2e568ba3355661a9e2b2c', revs2[-1].identifier + assert_equal 'b1650eac7c505a6dab9f19858afc9ecb481eccc2', revs2[-1].identifier end def test_revisions_branch_latin_1_path_encoding_all @@ -392,7 +392,7 @@ class GitAdapterTest < ActiveSupport::TestCase {:reverse => true}) do |rev| revs1 << rev end - assert_equal 15, revs1.length + assert_equal 16, revs1.length assert_equal "7234cb2750b63f47bff735edc50a1c0a433c2518", revs1[0].identifier assert_nil revs1[0].parents diff --git a/test/unit/repository_git_test.rb b/test/unit/repository_git_test.rb index 3f033a09d..a438e1a55 100644 --- a/test/unit/repository_git_test.rb +++ b/test/unit/repository_git_test.rb @@ -20,7 +20,7 @@ require File.expand_path('../../test_helper', __FILE__) class RepositoryGitTest < ActiveSupport::TestCase - fixtures :projects, :repositories, :enabled_modules, :users, :roles + fixtures :projects, :repositories, :enabled_modules, :users, :roles, :changesets include Redmine::I18n @@ -30,7 +30,7 @@ class RepositoryGitTest < ActiveSupport::TestCase REPOSITORY_UTF8_PATH = Rails.root.join('tmp/test/git_utf8_repository').to_s REPOSITORY_UTF8_PATH.tr!('/', "\\") if Redmine::Platform.mswin? - NUM_REV = 28 + NUM_REV = 29 NUM_HEAD = 8 def setup @@ -135,7 +135,7 @@ class RepositoryGitTest < ActiveSupport::TestCase @project.reload assert_equal NUM_REV, @repository.changesets.count - assert_equal 39, @repository.filechanges.count + assert_equal 40, @repository.filechanges.count commit = @repository.changesets.find_by_revision("7234cb2750b63f47bff735edc50a1c0a433c2518") assert_equal "7234cb2750b63f47bff735edc50a1c0a433c2518", commit.scmid @@ -161,10 +161,11 @@ class RepositoryGitTest < ActiveSupport::TestCase assert_equal NUM_REV, @repository.changesets.count extra_info_heads = @repository.extra_info["heads"].dup assert_equal NUM_HEAD, extra_info_heads.size - extra_info_heads.delete_if {|x| x == "83ca5fd546063a3c7dc2e568ba3355661a9e2b2c"} + extra_info_heads.delete_if {|x| x == "b1650eac7c505a6dab9f19858afc9ecb481eccc2"} assert_equal NUM_HEAD - 2, extra_info_heads.size del_revs = [ + "b1650eac7c505a6dab9f19858afc9ecb481eccc2", "83ca5fd546063a3c7dc2e568ba3355661a9e2b2c", "ed5bb786bbda2dee66a2d50faf51429dbc043a7b", "4f26664364207fa8b1af9f8722647ab2d4ac5d43", @@ -177,7 +178,7 @@ class RepositoryGitTest < ActiveSupport::TestCase end @project.reload cs1 = @repository.changesets - assert_equal NUM_REV - 6, cs1.count + assert_equal NUM_REV - del_revs.size, cs1.count extra_info_heads << "4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8" h = {} h["heads"] = extra_info_heads @@ -189,7 +190,7 @@ class RepositoryGitTest < ActiveSupport::TestCase @project.reload assert_equal NUM_REV, @repository.changesets.count assert_equal NUM_HEAD, @repository.extra_info["heads"].size - assert @repository.extra_info["heads"].index("83ca5fd546063a3c7dc2e568ba3355661a9e2b2c") + assert @repository.extra_info["heads"].index("b1650eac7c505a6dab9f19858afc9ecb481eccc2") end def test_fetch_changesets_history_editing @@ -199,10 +200,11 @@ class RepositoryGitTest < ActiveSupport::TestCase assert_equal NUM_REV, @repository.changesets.count extra_info_heads = @repository.extra_info["heads"].dup assert_equal NUM_HEAD, extra_info_heads.size - extra_info_heads.delete_if {|x| x == "83ca5fd546063a3c7dc2e568ba3355661a9e2b2c"} + extra_info_heads.delete_if {|x| x == "b1650eac7c505a6dab9f19858afc9ecb481eccc2"} assert_equal NUM_HEAD - 2, extra_info_heads.size del_revs = [ + "b1650eac7c505a6dab9f19858afc9ecb481eccc2", "83ca5fd546063a3c7dc2e568ba3355661a9e2b2c", "ed5bb786bbda2dee66a2d50faf51429dbc043a7b", "4f26664364207fa8b1af9f8722647ab2d4ac5d43", @@ -214,7 +216,7 @@ class RepositoryGitTest < ActiveSupport::TestCase rev.destroy if del_revs.detect {|r| r == rev.scmid.to_s} end @project.reload - assert_equal NUM_REV - 6, @repository.changesets.count + assert_equal NUM_REV - del_revs.size, @repository.changesets.count c = Changeset.new(:repository => @repository, :committed_on => Time.now, @@ -223,7 +225,7 @@ class RepositoryGitTest < ActiveSupport::TestCase :comments => 'test') assert c.save @project.reload - assert_equal NUM_REV - 5, @repository.changesets.count + assert_equal NUM_REV - del_revs.size + 1, @repository.changesets.count extra_info_heads << "1234abcd5678" h = {} @@ -237,7 +239,7 @@ class RepositoryGitTest < ActiveSupport::TestCase @repository.fetch_changesets @project.reload - assert_equal NUM_REV - 5, @repository.changesets.count + assert_equal NUM_REV - del_revs.size + 1, @repository.changesets.count h2 = @repository.extra_info["heads"].dup assert_equal h1, h2 end @@ -312,9 +314,10 @@ class RepositoryGitTest < ActiveSupport::TestCase assert_equal 0, @repository.extra_info["db_consistent"]["ordering"] extra_info_heads = @repository.extra_info["heads"].dup - extra_info_heads.delete_if {|x| x == "83ca5fd546063a3c7dc2e568ba3355661a9e2b2c"} + extra_info_heads.delete_if {|x| x == "b1650eac7c505a6dab9f19858afc9ecb481eccc2"} del_revs = [ + "b1650eac7c505a6dab9f19858afc9ecb481eccc2", "83ca5fd546063a3c7dc2e568ba3355661a9e2b2c", "ed5bb786bbda2dee66a2d50faf51429dbc043a7b", "4f26664364207fa8b1af9f8722647ab2d4ac5d43", @@ -327,7 +330,7 @@ class RepositoryGitTest < ActiveSupport::TestCase end @project.reload cs1 = @repository.changesets - assert_equal NUM_REV - 6, cs1.count + assert_equal NUM_REV - del_revs.size, cs1.count assert_equal 0, @repository.extra_info["db_consistent"]["ordering"] extra_info_heads << "4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8" -- 2.39.5