From 108dd722397689e75aa35bc8d47148e328802156 Mon Sep 17 00:00:00 2001 From: Ashok Rawat Date: Wed, 23 Jan 2019 15:56:05 +0100 Subject: [PATCH 1/4] adding compatibility to use rsync in kitchen on mingw environment --- lib/kitchen/transport/rsync.rb | 49 +++++++++++++++++++++++++++++++--- 1 file changed, 45 insertions(+), 4 deletions(-) diff --git a/lib/kitchen/transport/rsync.rb b/lib/kitchen/transport/rsync.rb index 4862dbd..4bd7743 100644 --- a/lib/kitchen/transport/rsync.rb +++ b/lib/kitchen/transport/rsync.rb @@ -15,6 +15,7 @@ # require 'base64' +require 'mkmf' require 'kitchen/transport/ssh' require 'net/ssh' @@ -49,24 +50,64 @@ def create_new_connection(options, &block) class Connection < Ssh::Connection def upload(locals, remote) - if @rsync_failed || !File.exists?('/usr/bin/rsync') + rsync_cmd = find_executable 'rsync' + if @rsync_failed || rsync_cmd.to_s.empty? logger.debug('[rsync] Rsync already failed or not installed, not trying it') return super end locals = Array(locals) + # We only try to sync folders for now and ignore the cache folder # because we don't want to --delete that. rsync_candidates = locals.select {|path| File.directory?(path) && File.basename(path) != 'cache' } + + # Code to deal with Windows platform path syntax being incompatible with rsync because of the colon + # current path transformation supported for cygwin and mingw platform only. + if ( /cygwin|mingw|mswin|bccwin|wince|emx/ =~ RbConfig::CONFIG['host_os'] ) != nil then + logger.debug('[rsync] Windows based') + case RbConfig::CONFIG['host_os'] + when /cygwin/ + logger.debug('[rsync] Cygwin Platform detected') + rsync_candidates_paths = rsync_candidates.map { |path| + if path.include? ':' + mod_path = path.delete(':') + mod_path.gsub!(/\\/, '/') + mod_path.prepend('/cygwin/') + end + } + when /mingw/ + logger.debug('[rsync] MinGW Platform detected') + rsync_candidates_paths = rsync_candidates.map { |path| + if path.include? ':' + mod_path = path.delete(':') + mod_path.gsub!(/\\/, '/') + mod_path.prepend('/') + end + } + else + logger.debug("[rsync] Kitchen-Sync Rsync not configured to work for current platform: #{RbConfig::CONFIG['host_os']}") + end + else + logger.debug("[rsync] Non-Windows based Ruby Platform") + end + ssh_command = "ssh #{ssh_args.join(' ')}" - copy_identity - rsync_cmd = "/usr/bin/rsync -e '#{ssh_command}' -az#{logger.level == :debug ? 'vv' : ''} --delete #{rsync_candidates.join(' ')} #{@session.options[:user]}@#{@session.host}:#{remote}" + + # Catching the potential absence of pageant + begin + copy_identity + rescue + logger.debug("[rsync] Pageant not found, user keys not transferred") + end + + rsync_cmd = "rsync -e '#{ssh_command}' -az#{logger.level == :debug ? 'vv' : ''} --delete #{rsync_candidates_paths.join(' ')} #{@session.options[:user]}@#{@session.host}:#{remote}" logger.debug("[rsync] Running rsync command: #{rsync_cmd}") ret = [] time = Benchmark.realtime do ret << system(rsync_cmd) end - logger.info("[rsync] Time taken to upload #{rsync_candidates.join(';')} to #{self}:#{remote}: %.2f sec" % time) + logger.info("[rsync] Time taken to upload #{rsync_candidates_paths.join(';')} to #{self}:#{remote}: %.2f sec" % time) unless ret.first logger.warn("[rsync] rsync exited with status #{$?.exitstatus}, using SCP instead") @rsync_failed = true From 03d7b78e8f0900bef89f2a9c5a7a24488ab2667f Mon Sep 17 00:00:00 2001 From: Ashok Rawat Date: Thu, 24 Jan 2019 11:48:14 +0100 Subject: [PATCH 2/4] removing extra log generating command --- lib/kitchen/transport/rsync.rb | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/lib/kitchen/transport/rsync.rb b/lib/kitchen/transport/rsync.rb index 4bd7743..f222d3a 100644 --- a/lib/kitchen/transport/rsync.rb +++ b/lib/kitchen/transport/rsync.rb @@ -15,7 +15,6 @@ # require 'base64' -require 'mkmf' require 'kitchen/transport/ssh' require 'net/ssh' @@ -50,8 +49,7 @@ def create_new_connection(options, &block) class Connection < Ssh::Connection def upload(locals, remote) - rsync_cmd = find_executable 'rsync' - if @rsync_failed || rsync_cmd.to_s.empty? + if @rsync_failed || system("which rsync") || system("where rsync") logger.debug('[rsync] Rsync already failed or not installed, not trying it') return super end From 3beca8c2f8c52f4aac1e49f1992358052079377d Mon Sep 17 00:00:00 2001 From: Ashok Rawat Date: Thu, 24 Jan 2019 15:06:54 +0100 Subject: [PATCH 3/4] improper conditions --- kitchen-sync-2.2.2.pre.gem | Bin 0 -> 14848 bytes lib/kitchen/transport/rsync.rb | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 kitchen-sync-2.2.2.pre.gem diff --git a/kitchen-sync-2.2.2.pre.gem b/kitchen-sync-2.2.2.pre.gem new file mode 100644 index 0000000000000000000000000000000000000000..6237cc7bde1738f4e471abf930ce46702df034ad GIT binary patch literal 14848 zcmeIZRcswR*CiY}Vde%;7@7u8!^}y;%*@Q#Ff%hVbJ8@-%-C?l%*T96GIn6MsqKS|14wv$3P$u#DC5Iv4723SlPcru&{wx zS^r5aAa)4me<~n02q5!+mP7yJyspkJhED&uKT?LQXxFT?+D zt&&E;LzoRp=|DkWsBPLWFr)iD=^MT_mi=s&krahuu~p5$7g?hu5u|m>wl*U0GvF}> z-1IohwYL;(u526nOA;(~^St>!-K`$cMjlhF<4%a;kp{fkz_LzEqd2hOWqTIjD9Q+n za!fw zd@{VJ<W^Hv3rhYGyrF+tz&ULg9Rg}N#JApYDx+~Nhzc%N+j z9dd&BDG?i`mV&Y(5V?!Vm_KKBaGICD+6Z_*dd3q<+y0F+>>g-rS>5fQI4uUfs9m~2 z6hoI9e@RF*3(Tj!gnKXPRk2jdS+lXAPLbnA@j3Q`DQ%=W0K{7Haed2g1GG^IzVShnf?8HZ8xU7Nym zQ|TBL=N~Sz&GBQ#udgkdRC;#lbsY#8S1I+ABI5_G8;YTp@5Y#DO3z0Kypn$*gX{Zy zkoLA{hi~>gWI_qK&_f3tCsZUemNqGqZH%)A<#%uRW8Kp)g;igmQZ0_zuY#=4d;(W# zGjz9{%R;Az`QK2#`8ieuBmUodmHwaf>%VdTKMeSPj{jLf9IR~r%KvQtJPH5i|Njjq z>Oc7Z+-Kd1P$D%y?*@mieiOp0Z&xfCgp!p?hndKkDv2VbxflQ408$cSi9w~$l?*=V zJUqf@?ddalGdv^ zTnK-R$+uzVaQX0XASZ{3{YClR+u8Z;6Hoie{a5P_xF#oT_Ve>&>P zyWI!gzdsI*4ylaiBRF}~ft|qI@z0Fk@d+IFCi^A|>|ay5`XKUQMC_Br?Pk(; z8Kk}M7zK&*A`I~(nmp2FW<)XDAZVg7?_N`zbSus~W+UPivBewk#dk#SKbTXYF@la0 zr5Io>_W=};l9YC{Y2+kjW58@cEX2EMwYXrpI#fpW$c@H1XPO!l^CI70G;^a}U2hrZ`A%t4)L#c2qfCPxilvh@J(U%(B1daM<*v$0CIblHTf?1b_l4)dSi~b ztJJ2XE}Bwb?pvt4S2HR5m)t=RB2#C8VbnL0D?MVo&bH z4{Rv(X)mzhRi6mX6Z=$O9@NW>9w=YJlqlfA{o5vl83JtZ#np$q-d^{Gx5ix(-uGX5 zFAc0a4_oluj~R|w+1gmM#Qj^$&eYkBtRPs{C)g;slGP5Bx@VHT>54XDLWT+FR~&&= zeNb+>!4XUkt4ROtj1e3mX^a5mMgQon71nz^06}WXD{VeWZYL$nvOc5wKMMuGdq*JE z=voMb*o$-!hjR;iWK%9I4-eb0JL?E9A{5Pq&cy7-;DxM_YW1<$AV zd0fB>(sQ6Mb;WX?s|+P|O&gXWFmDm%@(cL-&~KgRWSYKTHdW{y)5V!hzl%9H!-zX!QVdzAAbw(T>r@2l zzZa#yswacj(Ktviun)jK3J70cz+d=1BXlq(1X8Q*B759}7Gn;99~|zf-7aCgHQP~T z7fETv=yGtsetRL#pShN8V$)ox(~Q8?J>57aX%Q2-$;qSUbq>?O7))TmIUN^ZAj}U} z(Aq?kLvr*!_^>1ZIThilfYp*R1x&2lt&-y<tH+B1J_q`AUAfo$JG6kBB`!XIZ9RfS4W zvc_T;Y!AV-$zt$HltHTG65#!cx^lmJLM`Ob`!j+TJzxplKXYJgz;_QjM_#y^P7rtY z+VHVLKh0o0Im2^Q7NX=5k{ZN!vyw$#T)+Wi6*zrPar_!I#YDKM3%_sJZ!KsUn0pR! z1W}5R+!6{8^k#)1zn^m)7iztpEG3H0uPh(vc&;m7t2Zb96v^~AP9?9FTzM~m82!<^ z92M1``y7o2DLVmGg8@IW*IN_*pBI!%Xg7EEPWs1K)UgLGKZ;m2%PAC=DEcO2ceMQY=T30PRL=1 zIA`czC3w;IfhF$I4jvbB`@PO$ta)n#zF6W%NWzA&Xb8rMBBPe8m=INJC<6=-)Hwvp zgT(&8HV3}E>Ro_weZ)NWm-;JuHK!Pz*?E*vh?p1;V`(AdxY1K;gj3wY_+hnx@&Snb z5~SsCn)CFZf=rDZtSPg1R1DMt+22{|iAF~|An5fZ17ISm#87+r$1U^4>wqjMpj|!= zGeVNIU5GcqOSnrz%@Ex=mmRJ2n6A$iOju@3gky-vBpnY>%IJ_FL5o~43}RTqCoFIg zv|c3zDe{fRcpJO08!0D*{~Mym6rm^NeIw^l)UC!ug`wRGhgibTNUzZ;t4sLKd4hy& zfAi8mW!ddSM567p%+#!jpG3<-4syX~kgdQxm`hRi`(kfkcwxah4b@z;OEK9gl#(Rz z7t|)rzY>bIERMe38nkhdk&w{-5EVhpV86$G??!$pZK1_X zekF6cux=nOO7S;-a6%=ib5V3OPW6rgnJU-o z10-Xt(TT;uEis2@x}3n?W^x__mH46QZ-PKmSYJsJf}i&5Po=W1PCwvn4OzRcmq(T) z%b%8%CPZ!sKmJ5&n}+!dm6Vg<+9i#4aKk$t;Pa;8pI7JJ%ryqKuH{_=-IizfOQ!0I zEw0HzYRYkOwGK{QDmU9QYg0)h%r`m)CP1=6Fh_JNiigQdaV3tGXZp;PlLmP z8jRpR?x~;16vK6A1`nbXF4_HUXEb*YhLk&5aG{%Gk^%Jq+uC=5a|LhhYuM@ry4#z; z;)%f*&_!Q|pqRm8#T8Uh7L7k!)mnNk?LhzIx((akQ6tt=JTC^tBT8+Lz)Nkc`*E>? zH+=)QQ~F#)UKB=&LRm^dX0xzzvQl0(>&IRlI0NG+;lz|O3~~W(BGkEQXeyu&de1wJ zWHPg~hfy?oZ5_jcw+5X^OyS=%_)BhkLCX03VPzj~W){esy$$ zqO3iAN5w+-D13lyy5}auC|+fB!AuF$evtMz1)d)@SsBrjS808;EpdorryR_H;r#&i z1ru7~%=krgQ+)C3X;&NvBbq5h zVx>6n$JCOAfpC1b>-+n2-_%HC5i(p@Xlj%+6F(9d!5_&HhVFPVr%_6vF;RkXFy(*n=oN}#Hmo+ zG@m(5g67Dei}A&Ny&_tSh!5%YxrW-udL%Kf^2T-yEx|C$t0aNtbqG$nYO{YJlA5IW z-m+=acD+vwAwJZnNt}hs7HYAJIMHmZ?C6d)v@2M+x!4?yU^GXmZD(ae6iC}wMyqs} zO87$_B`BUS*km>^wZP>|e3H6OvPt9*?dzd{!w7bZ{8`q!IwFDW)6=<|lO5j<#HcIQ z9TyS?o+Y@<4K;zs(?(IjF=@?whN(1wbVn}ZWC0J5bYU8hnt&6M80Dyk6pd*``NabW z3O;w3$i}1n44?EAL!yd{)zYSHIBZ+#R3yAK z@CV1v{%zoz4=hwv$M(ugnKd~bVa9k&AIu)RT>!VssI#b%B#=h|5io3h+NQl>-D9Ic<_zD31!3GMk)! zFg!Cft0%G=F{{IYg-Ny_{*)@vrOF-XN3)*@&h zXYe_1z#lbKt}~a&6BzuiY=&E4$$}hYu;7~C6!-qAn7;jk+FRtc1g}v!biz&alDHB> z_?w&%@t_ls3nO@2%slOgGZ7Hzj19r_B6Rwdi;hVANU8IGLeE~w^M2E zNukX@42akQiCLu4e10q>naF0Cv_1|`wxcQ>GliEk>_CIh!G?<>-euwvz~b|OlBuNdz5}zc5RRhoXF zJ<6JidWDC($T(@=N?hhv3w6C$mj^UZ={x4XR!Egiq z68r!jNQvv_8ilB76Do}g>kwopu3NtP?$^dS(CVcbW3n~5fcvd?4hkUppl>AK!%4uA{Kkp!YcYDV<;wd)xyCL){c}oU+>%3prXG|dR>9kVc?a1x?&4R$wf~o zmhYe9<&!du2oq;pcOj+pMWYf}&6>phl@Yxt@-8Yx8J@Qy@~=S}{(;+@oPq@;W^|4c zau27anOt=E847E5wHXn`mA9`9@@p6mLCobDUXa!?R@+Ymft{{S%Eru0{#d<(93He+ zy-Mq9cDR3}dEq>BFI36OaxoydAemlSsLOx1L?&6$$=PPu`%laonYKnvPFAQ5bGNJ| zX^tV9N`9wi>DB=3(>lbk{*G)X&wEiBVhX2b&NaWiiFD$=vg&8kj30=3HJ;R9V>1~W ztm67T4tz@R8OPDn zMDFYVKv(%Z=HK2D?Wf8IUI%A4KcVXV^6Q)GalZnud0yw6fd4F4euABUo`0)N(LGbH zAd2^aaN<%!C)R62!|3?QE^LJt(0IWnJT)EzvD&tUG%By2BeHk)h%N-tpFC9uE3ihy2Tu}_GVvT@IOi2E2-Q4MyR$SR{_+5{LDi_e!jKEUX1gCTPpFResIqaw6(s-4z1$6AOe8qO&tvZSk ze~ukt)5$n1<_MjpOLW8?*>lAcVVk@|{*iTK;QU&^GaK+KI`qvS0h6`t>-hA1NRMb< zt}aRKDAt%%_!1t(vd|L}xL{Y`vqGUj7s~)9U_cJdNAK;F5>ov}8cF~PsS8q{HG61R z6S0VavHaXTu4sKtO^FNMY0XohJ0K!khR~PS2^xiqJLd=|+Tlkblp}q32MKZlQbfc? z!hSBuhMZvA;TBWDhmTn7viF>E#fkB&>6vd_KR4dvbai%oNr^t^cY~cl2vr%a2p#@8 z2n0@qAZMu(c6>5_RPrHe=AvK%s&49n#5;3+zlswb#wlk zj4BH&Z!D|{?2pH_6xAOdad}GuVlN3%i244r7Zq&y!KBv&v7ungf>yd$>oY|DP zhhqMXsYl7e7tk|UN__X zIlyN;?*EL9Q7>ZZNJ7BXWkb*W;9zCs&m+q$ZUUM8Q+}Y@cO7y9@4Z?|kKOV} zx-Hy0V#crZh^~lT^e=Mw-RFTM-UG#`vIOnOy|0=j0wfDpDM}KCB3vvj(gzvY&0544 zK8oD5Kyy_c3U|GroJc>O_~K7aX7wuLY&Yt}X_*Sc$P zTr@6n>>{(&e5&qRTQIxQzqcxjth`U;)uLMZ-ikz1$OB`&khila6%1;~5h}2(9CY+h8M;6v+EF4MeIn za|b#uv?9McD>g|XSL?o+sm~U;w3sr@HUtcqXnpnXjQ8af>tXw&Rnf5a)+{zqr4~?^ zr?~(b;M8;_+BIVjw&$ZA2T!TKgYR;{k9v;LDG%L^TlOtmUv*FnPt@bR@&Asb*Uwh| zYLmI}^POvbO&$fKJgb9=CZnGhECYG=!H>%WHG%Jb&&PA8??*G#VD*OFlwZ$FMtpve zimzF9&}ho>gf}aj{mz0P^%Bdx_;=}oAw7?BxjtxiLfABI`eVi)%EtiLJ8YFH(ocW0 z4^k_X$yr4##%t7~m%VDkB31}^xJ5RP+?l6evpdx;a%leLsB)RrL5w`tV;ENmy zu@A6=D|lcWtZjM!H&I+43;dbp_wm&8&h}3Cxu^g62mE#gRug#Z@p};fH{Fne-~4)? z&i^2)=1X4C1%_&1F0Qi8*)Dr3wAuz&RD z=8s*s^!B)fcpRg(dt~b1A-y%coBYwipU+V!(d{w?ZMn+3LAr(4vt0jHAvfKJ zjDDuv;5JmkX0NS?PhI^!#fa8O=oE&GJ$kWy67!((IuNQn;}vh_-n}RheogW2jPvC= z`&A!c!f#6ST>E^rTm%67nIC}b?!nSv@Znw${b|&yNGHH%9THi+VGEpn>o>3hOE^a( z3)o@=x4N;rN8Wvs{+0g8d4I0>yINisAKl(GU`*po zVqVsSBc3fgSa7p#KIv!m5t;1*@U!p>D8Kp_s4w>AAQ=^qFAFB^_B@??6p7-KcC7mP z3L3id_E2^jaC_>RTGK4P8Ne``gl$ZVJzZ+enZ9#(p`ati4A?v{v{uK>&#IJl zJA(_0!=^0i*=0RFVIXsNwg0PKc2Rx++?yBdZmZjv)dP zP@lP`gv&Tu0Xy1{uWc3-(eW}jhk zM!do-H%F9DuYVg4rZm8K2I1j`S6NFdrW^&xTp|GYag8fSo_bekD6My?1=f5vkRr^n zq|`T`ik~)icF0|FX{q`a=ZN^mMgotk!hB58k7I&(bxK~|3i7o5tPj16w(c@|VrkZA z!c;D2B-pr(J%QA-2Mi)`G$Uiq7P>YLZ`M}cd=WQ)yL?H(f#A1WEjdPx!OOfMDf_&A z+UoGVqO!1=tz`#g8;)q}E0{UD>to8=ZN3#X<;ceb+~MmpFXi9gFC!2wPi+tPvC*mO*{enMbPRzIM{^a+9~d_r529nXUJj zq_?_!XR>>p!eAU9XO7$^Zb8es*5F1*dF^H?P79X8!y-WDYif&|a@Udp{jNsrjv{{b z5iYN-6$eAYSz*3wuUC^3p=#&;&kID-_Bq-^#E8uD?{<}dx#$c$ACDc7%;Kt>9aHM* z1}g)NJMj1*_NtX zRdYq$Z(P@mbdj|-<*na{hB~tBYx3fa?X)1`CV^i=8l%~13@Z1KZyXkZT3^JIgmRyH zrRM;ThxKOmf!{&$267`F_w=bT&-ctn$JZVDel@lX3qnPW(G57`9--=?H*~^s8_r`A z1Boy0cz_;ZL}BZ6dS=;gP%VRL(~sy(logRomXz%5hv#FWIB+S~1kXo8p+rfFdR~Xf za=f|tHn%NRfBD?5x%_%8D+kc7nGr$geRd4hH=T1D&;QQyFA6~p|!F+i4RQvMo5ksWzdY;h4Nq8IuMtq1?}}h*AJ3jF7D8!ng#g%v5qgSRrf=#%rA33 zRS(MjXA?+<7-hPlqHa-l%AFsa0w>{lHXfbPD963toCU{ z=O&W=`6oYyPKLL=`jr=szny5WA~Ua$Ae@7~vG|D=JJl1)_LL=h( zZq{-J`hOR+Sl-jl?`}FlF!j$NE$(&XTi9AY;xBqWygiO3?a6f@a(Auqb8+!kY;A;2 zE-*vIu;iUrJ8Y2|^d|Ykk_k6sxIz3KAqPh;QAofd7Flz;6w|^w;~&8S%u~QdAmF`Q}t|k-ADuv@Wtj?gGU}8Kc;p+uOzZ~s$Sz%KkZY% zZ?cErX7@H5Z3)Ax5x7GH&$ox1h<>zjY$I1wM#bOY&MvU-(ZdAl#hHd1ITX0n_t05t;b38nST^F5a*6z( zOywl1RX<^q>R51IK1-eJJZz5WA70Oj^)djNyGdmRC*-bL0qze4H$x@eRYrSA0XZdC zxcwaVyh|7vWgp~kU+D*4@)fPRs(`^<&7u@)VOuU z|P7aCaw;y@@u@h~x=8Z}+ati%&AN7j)h0itlQQ5nnq>d`D*8%Mm88|x;DN-HZ~_G6=oKSI#%L$~spP6WMdwUs zi$ZX(e`W|?DV+ve%{+h2c<{S6N6I|og8}aAWEj<7j13b`%(`34vCPs zULR~k{zL6-^TpF~3V2-JqQsfm@?P7u>6hSWfpQmN%T5&4P$Aa6HT8h05g2i_P}o(B zb#+Y*iTFB7Iik@F_0F8V%#o&*Dz9Xs)IBVvOso${0UxJ-ltsiPHkue5r#m9D))Ens zma`gVkHSe5B+pn4NMn?GJeK)sv7V;bdx;SgAQqU0Kl^q~MT|;}g#5Dc`p9dO3s}qT z*LcHk;<|m^n{Cy9<@B?np-Ec$R<8>}>PVlzG}^7Rd;GQ5+FwPAH_7Ijx6Ekf?`-Ct zsvRG|?zehy;HR&C+d}rfsK{EyBYSv&f_~E8(xRpVeP4P!Y}tdRi`#2<6>t{9@BAp9 zF;nx0Ta9D;DrJbE=wSQ6G!X6)1@Xfr=|$xeYLiZSsfv^9OeaRccH=w0H+2Jm7-fD4 z`dXme`4^)ncinfkq%;YM(}|3x*`}Rj;SZ4vjHV55^cUBkDJY|m!#|@ja=k0d2nWwR z--^GX@)*f)ht$uk?LNbk^atUENnDhAv^)i^@bKA^8gAT^_>8akTJAs&QL^T#bO1E; zh87Jhhsgu2BEMl6K)$M}5_FoTK^XMqA)jv+61P}P9{H4?o#~2DyYfiUz0#C+_HFnI zxAWn;UZ4ZQ(fYU7$vIK;Hh%}<1(;ly<8onO)q@m)P)T!3H7Kq$w0ap5IH*8+3{2|cr_S0lCtROZS|M=Z(Sy z-8db4Ntgst!mVYt|4N9*ngz&tOqt=o{i9@i;1eh{Iz*iw>hRzCrnaPK(#ffl4X6I{@mx!9i0$ae-|p`aXF2LoLMN97x%<5LGckI z)>G1{%jl(^zm(GgBsDVCB3?am_~vTfSnm&&LOktijR+xX{+^BhLgZM?X5^*15_Ev5{X`?b^lI@g)*=5p&rZ2 z*ZuCJ>KeS`{~I3eC7S@dEewbIsYSu2^_q1yFKZs*I3(4;Rl95duL@PtkhJ^vu+X3O z&I((bdfU^nXWfjEpn$5$Gt&~&Z5#?5s5;}*LTxpDWUa-jR)0%|^uz;bS~fI$HrO8$ zqvO#z&at#Wvq|ok?Z5|Kj>TI;`Zo1%0a~_^R$Pn2w*beEC>>mh(ZQLvY>uIjv$ETE zbe2*hZd+Bwn?dAkmEjz|k?+=2+(Y9Mfe{U}m~36V=z(}XEDcl74bSI%o?%xA6D(*w zA7rajVpthQa7eJM64W!Hswes zWk*ecy+LvJDA%1cPSH;aGs5vek1jqtzg2J7Q4%2{Ig?M!dw`4PT!eivITSa!Wj@ST zc#B9Ul!M6)_9MM5_J=B{p(XPNO&_&9dGHJPADJi^3=J{9RyYpP`9G-{HMTG{wsv;4 zb!PN5w6*!qQ33zg(1`z!_zz|f%fH5dfY_P;t^fU>+{yp7?*F0xHI3&{f)Rulz2h6w zGx%nJkI&A=_5_1WN`YlfA%9g}AS|x>Wc}*ap}X~0@5Z-HPvGpIKUlw)=WhLP+Hfzs zZMp@ia=GN}=qhzJNiA`Xk#XjNFskRsGE@|Q;=7eo#Vd5(72L+>`k)_ zGqUyz&HJx&$`H>e5@z$@JQ6gt&;c=p6_YT Date: Thu, 24 Jan 2019 15:15:51 +0100 Subject: [PATCH 4/4] Unnecessary file deleted --- kitchen-sync-2.2.2.pre.gem | Bin 14848 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 kitchen-sync-2.2.2.pre.gem diff --git a/kitchen-sync-2.2.2.pre.gem b/kitchen-sync-2.2.2.pre.gem deleted file mode 100644 index 6237cc7bde1738f4e471abf930ce46702df034ad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14848 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