From c2c5572e22d8e03b111859f3cf143181edd8c20f Mon Sep 17 00:00:00 2001
From: tiagonbotelho <tiagonbotelho@hotmail.com>
Date: Tue, 1 Mar 2016 11:42:47 +0000
Subject: [PATCH] adds swp and swo to gitignore and improves migration for
 project main_language

---
 app/models/.project.rb.swo                    | Bin 49152 -> 0 bytes
 app/models/project.rb                         |  18 ++++++++++------
 app/models/repository.rb                      |   6 ++++++
 ...9193553_add_main_language_to_repository.rb |  20 ++----------------
 4 files changed, 20 insertions(+), 24 deletions(-)
 delete mode 100644 app/models/.project.rb.swo

diff --git a/app/models/.project.rb.swo b/app/models/.project.rb.swo
deleted file mode 100644
index 5d264ccfaaa42e0a6f93323aa8baf0a4e1fa7cf3..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 49152
zcmYc?2=nw+FxN9-U|?VnU|=x&b|oyy(T?eG0V6|6W@37NUQ&KZYEDKzNFE3FO-y#m
z&(GEkD9YDON!1MjY11{*%gIkp%t6*thhm_9aZ$3qduB;aVv>G3n9@y7)lV!a(9g|J
zNzEzNFDS~-N=+`&D@sB(WRyJ`0;3^7dI*%3r0H7lG8h{f8h|t_D=8`n3x$H1qj)p~
zMnhmU1V%$(Gz3ONU^E0qLtr!nMnhnPgg{9F7ehS*0|OJ(zmZUy5shYr@;RV%G?a#^
zV}bIyp)|TYOxy`7p9rO4`q`j-nD}BSA12QZ<+ng-7N`W2Vt~184phDaDgmV!IHBUx
zptK6q!!UU+sCWaE-i0R53>AkBXjnl7VEUobqts{!jE2By2#kinXb6mkz-S1JhQMeD
zjE2By2#kinXb23-5J*g6V0gvAz>o#%?+P$5!216$_!$_U@iQ=-=VxFz%g?~j&CkG)
z!q329%g?|d%g?~@laGPnDjx&GCO!s+JU#{nEj|W@XS@syi+C9r>UkL$%y}6Y1b7)3
z&hRiWtl(i_XyjpFaNuEJ_|470aD|(JVJ$ZULkTwngE2P)0}nR?!&5E>hIL#F41HV-
z4B1=^4C-7A439Y(7!GnWFwEy<V2I{qU=ZhIVEDqp!0?HKf#D+u1H&l}28J~p3=FF|
z7#KP@7#K1+7#O@b7#K7-7#P?<>ev|=?z1y69ARf*SjEo3(9O=k(8bQcki*Wvkj>7(
zV9(CLV8_nDAj!_aaEgtAp`DF^!Gw*0;Ug;p!zNY+hE7%n1}9bqhPx~b40l)<7*?_{
zFto5RFl4eYFc`BiFzB){FzB!_FtD>QFx+HjVA#scz);Q1z);1^z!1*Nz#z@c!0>>H
zf#EO{1H(=x28NAH3=FH87#LPDLBe|(69YpI69a=I69a=769dC<Mh1oxj0_CN85tNB
zGD7&<6ri9uH789kH!(9WJ|{6Ry)-dBRl!yP#$;fCs!}LQEyyp<EXgmb)GI1YPftzJ
z%ScU3(JM(TN>43`&rH$OgX_VmMF(mcOr?UYf=^~%dTC~HiIr6l!h*ciat*N3%rpf>
zB#TpX3rZ^O71Y!ez>ZGNNX$!5O;J!#R!GiBP0lV>$V^ix$w-B}UIFAS1TP;V3tj%9
z0M!oiVrpIr*ghDopnza0D5T{VWv8aZL-pwuCzhouf|Y|jiY8f>S)7@anUh&k8K09{
zmYSnrtAH*9)tZ@xZZNt+1v~6|K~@&)r6wk4D5T^o)PT4M=hcAxqo7cfT2fk+r%;-g
zlUiJiVT^(ehERNYVljh)LP~0yLTN!tVo7Q|$lT(1bVo5LC?uwpq!z_PR4G_NXxyrm
zq2{66SfY>*34vmei(%mnH7z+mr!+TD!zw4SxFkL?xg@g;6rzbGI?$LeN=+<DO^Ht|
z(S*9WIJG1mT`}CL$zbIQRyY(XD-@@eD4^?BD9HyWrsBlhRE5N11&ARaJ3;PENli;E
z%_)g5OUx++2bG3ZaYkZMYD#=jX<lAxQE_}~USd*CYKo>pwL)@fQBi7MNqk~KK~83J
zVo7FxUVL$CNl9j2da)jMZ3?vzkD*$kU{#!#Sx}H#0ykbq0kXs?J~=-xEi*knEj6*E
zv?#S$52g^iG3ALlIWQOMD5NFk6sO`)n3<i4P>92>^33c^?Ant`Gjmc1I~Jl0yAipm
zMd_*WMX80Qsl`P28&x@WBQuMOOH&EE3Ze|V5$M?hXFQ-Q#BN+-QF2CRS!xO_E*KOP
zLjAn`{KNg?J$(cGgF@m%gM1Wh71T3IN(!v>^-J@z^YY8{^wKj+)IrHHwW1_7FGT^e
z>dnf^8JrkAQgaGYi$KzudC57YDX9t}`Pr#?j-@3Tsd*)t$%!SP6w08W0F!o3EKUth
z%`47?<ToT4M^Kh`&d<%wED0=4Ed?bOn5N+TB6M?tQqxk4(9DKA4U!jvp~)Y~4w#BC
zcoFIYDnYTR2+l~&$#G0cEGS7W!Xl00`{bO&;$npW$dW$=8wE#DVUik@nw(#hVrAu&
zSe(kh07_h$MX3tvX_+~x@x_@{si1tFnUYwNU!;zZO-?K-%1kXPPb^E-&o9c=2bW8!
zMPQ@U85ooqlob>TQu9(W^U~u}Qgc#EQb8327+WRf=jWs*=7E%e6MK9~W^QVJX$e>s
zOju>+m87Pp7J)fn0$Rps7@HXwXzD2B<(DYrmFDCi%t*}1$uEyj&n$^gOD##xP*8wb
z1J({EU}l5_g}P!jBRRh;wI~ss!_reL6ciM!ic5+z^U^`Kz>2aGP_h9V2PTkI;3&LE
zcLzK-f^7g1B$<(%8K0Q~(uIm)VG8n0W^O@#QAvDiQBgip7%Nznq*j!G<deavJ3cwT
zG!H3O6ktXm42A`%fhI^B)Y#(u(xPNUe8WOf!^qSWSy@SC0g@tkV8fLamn0TpI6(og
zBXm#_2BNhDPRB4;TczdXCn9?bRMCU#77YVERDYBtmXsF5v|&0hu`ID95jp%IN})*t
z?hjab29br6xZ~8#(I*%^fua|kP-F1L2x?$J<EFGI2dWi9p*t3%=7%Z+wSqv|6co*{
z>J(NNLX?n};UM)%d`VGaa&~GFJi($n2UQu=BGj0G2*MJg5~NyILd)NIiMgr81&PV2
zaGSu|V8I9S6{zAy^ASi5?r6eNjG$JyaMMUK1GzZ@asU*QWCk?Ypv^9*2_zPY;5J@9
zB5I(fAO{(wfeLB{LM0)T6>?$$8v|~hLL{Liikg(v;^d;t0#I8JDh;OK#Zf_GNd{O1
zl|WA{ph!kl0p_7A!&W$g%6g1C2Uf}GC=?WB<|Y<ZDrBctf~&R=P=&4lvd>BZ+7&7W
zOW4{f1Se;t<|Zn5=B4Eq<$~L{450qMEh_^9Cuo9QfPn!vzx|M(f#Ehk1H&zT28Mn7
z3=Ez83=GZu3=B>D3=CQP3=B5>3=Eq53=Hr27#JS$F)&=`V_@jzV_>M~V_+!dV_?YT
zV_-<<V_-<*V_@**V_-1hV_?wZV_?wbV_=ZxV_^8e%fRrQmw{m?F9Sm_F9Sm}F9Sm@
zF9SmjF9Sm&F9U-GF9U-SF9U-iF9U-NF9XAG9tMW5JPZt9co-ON@Gvke<6&S}z{9{W
zpND~=pND~=fQNx0i-&<BlZSyJoQHwIgNK2EgNK3P2{!}7Ep7&eo7@Zx+qoGS)^js3
ztmI~3Si#M}(96xhkj2fw5W&sB5WvmA;Lpv#z{SnLz{1VIz|76S@Q90nVGS1p!!j-g
zhNWB#3^7~`3|w3c46ivE80K;^FihuUV3@|qz)-=-z!1jCz!1R6z~Ilxz+k}1z#z%V
zz#z=Yz#zoQ!0?)bf#DDb1H&E;28P`n3=E4o7#O-a7#LbP7#LbO7#LzX7#Qq07#J?I
zGccTGXJ9zP&cLvPoq=H<I|IWEb_Ry&><kP&><kPs><kQH><kQ{><kQ!><kRT><kRN
z?2x$Q0L34}C>RZa(GVC7fzc2kIRqdhTM$w~!2vWRi9FJZXt1LW!a~Lgz$2J&<)E%S
z+#pcfO`)d77S^{7&&<x$1C5-5#zvvzWclTJsYS3MGLQyj6H@bvON&zB<5l2J9%x(>
zGz5s!^F!8zqm!-&?uw?SfQJDgBcH_@paDdXP*Hv^eDD;#O|Pj39Y?U&0FRgImE^}~
zf?NzA!YnB&O@)nPLQJ%Wh7Gz|@lZ!VjnYJRH>7o_mtT;Ymztsn?&LvD0SU!Jq#->o
zWNo0Z)I;sC+bV#^{J;)X&{8lnfSQA%Dn2tWJ~uP3v?R6IRs*aa#Wg5u74!)kg6t-U
z=46z9yIw(2YH?~_2`p&P)Ib}>_Q=K{yaw-kBZk&d;$Hza;EpP4YpVcGGf@ARCFW$N
z#6v6wi`&Dcl@&bm6fE>i6jIAliz*esY81*db8-|i63bE*GE0gT^2_rSGV@Y0%Q90+
z6LTOsK>?ka0vaV(0CmGa<HcaD44@JJ5Puhc1&zeY(zL`pO)CYr{33<C{BnizRE5&w
zR0UL*Y9u8lXO|}yr6?rl=N2TEWI{&hQKAGK9H`nz@HUD@n8z6q(+JqdNx<RloM~kh
z1RgVn4h8E$#+CFE^D6B%)RJ=Yle57tMVN+?H^9>gnQ1UDW7Q2A*H6r=gynV=gJDGq
zj8*^zIns<rd`@Owwq8nVaY<2rB`67jx)=z>3JN)C#qs$`;61glo`Hgm4S1*?>^iuC
zX~;zZLRYa~T4r8KJbXq2AyWg^51%T5CGXNakdwfL4ahw(w}9gioJ8PBTESKURDeL!
zC?p@mCubt-O3sXjjQwa7XC!JW)YK@zMT+$xT{)19l>$f_ZV<TagewFo07nwcDR3F6
z-;ydpN>I#zD*?%%XwJ$kN`ws)fYS(Apg6UtEHgP38o^M9fMsAK3Xp_@lFMO3`w9x+
zfv;k{#FP{btE9x@R2>C%x5Uhx)D-B<h61R5PzM#gMXANfrK!mE3TQ;RG$+L`zr?u+
zH1h(gYg|DCY2fIA2CxFM4(v6N9>@-;%ON2f4;DenDT*i)eifO;CB?8<M^u&ZsZa?d
zjj)hM&L#@*sSQw)#TN!8`LJL>*rHIDnFyU;(JclIIfFw7WKt?*z68WnfTb@GCo>JI
zJ|3(d6xi_y^E5zx`uOt9l8kszHyS)P0}5{i%<2tP!nuK`9TgyhSPGfN3K@xcDWLdD
zEUwH;&M3;y%P%d?sYDG<gl))49CeIFuRJ5QC{+V8WC^R8<1<sNz&TbgGX>-*P%9w6
zC^H>Yk)h1MAe)<$n3S4>NZ}w~S%HTLG{OD<{d^1z?EH}Z|FCuXKlm9KKJha!eB@_f
zILgn!u#%sFVFf<}Lkm9xLo`1FLli#)gAYGcAIXiaQ4OOZFd71*Aut*OqaiRF0;3@?
z8UmvsFd71*Aut*OqaiRLA)ug;l$w*DmtGuSlCNL|9`ndA(g6*yrDmq*#b>8hS}CYQ
zh2t|*)O8fV3)a8`1Xc>_p~b01>frItpwt}j#5#DjY+^}CQG8-@a%ypLevyJzeojg}
zmazrU`d3tid8y^`&{ZSxNkxfy$r+&Dd}4A*aeQKNd`V(@I%twVK0i;vsw6QTv>w<o
zxun>!I0P!=pQi^}9hO`YpPX2n8lRg8T6G2;VM7~=0nPvK;bUO<!3XL8!}ihN<!4|x
z%+J6ugP(yRm!E+lh@XK$o}Yn1jvu1-ElB-<MAfLJqaiRF0;3@?8UmvsFd71*Aut*O
zqaiRF0;3@?8UmvsKp+G_bN?V*oC@D*0$z)PzSs}8@fp<X2B`-v<Qc5ns$r`xz+0>1
zQGCJx8r4Y4FG`IE?S)pb!lne&|CeE4VAumX$WDNP0e1f0Jbng-x%><avHT1SG5ib+
z3j7QVpZORVK0(*}Z{TBK$mC;S2;*a5aN=WNP~u}?c*D!Uu!@&~VLEg@e=;uvgDx)v
z!)qP}hOImd43#_#47xlF3~W3M3>UZ=7-n%ZFf?*AFa&ZlFqm^QFnr)*U^vaiz_5vn
zfgv4w27nqD1H(5?28K(V3=9`J85mY@GB7OXWMG)X$-oc}U0=TzdJcdU2Lr<<b_Rw(
zb_NDUb_Ry?Yzzz?Yzz!GYzz$FSQ!{5ure@2vobJ5u`)1dure_4LihGxWno~r!ot9?
zgN1=%3JU{64+{fBHwyzpAqxY8KMMncI|~DY8w&%2HVXp-Ckq1uBj~V076yj5%#eNm
z$C()zjxjSZG&3_WxH2;^*fTRQ*fBFO=rJ=ea6``kxWUB0aGi;P;V2UWLl+YRLlYAN
zLn9LdLnadggDn#S0|!W+k%8enBLl-ZMo4_@2E_@UBn?WMp!FZ%r78ub#o$pQ<aITW
z1tjR}FRjqGc;^&@R+4~BLswc1S|1hw*_3Hz<>?pV8sz8b1KPh|S`6OPiCvSeLNr`c
zK&X?Cr*kZL1ro@y1*J(jnaP>O85$rX!0V|novaR9pQeYg>B~mJUR_7QOfNS-uOy>b
zFEKqI;&_nRiAjlhDfxM+DUghdSZajs939viD1@ibT^OI3ml6-!cT<#?m;+rZ%b)-m
z_5+0qsNeuu1G5CO+rFeI5xg%qKTjbsuTsI*PQfZIGcU6^1GHy2CErTHDmf=Lu_zw0
zS|~mxu_O^3GB|aEb{dwzH5Vsmq^6YSq{b(vq`=I`%1;8hLqVaqB(Wq_!72^BS`2I|
zOa$rzWHG3@5S=hTfEG!?-48Lx3baKsv8W^!dh$Y9YF>$g71a4fsU<~~3Mu(`Oo7^C
zh2pMM6jMMJ5p4*vSI~?BOW`*t+A1$UFI5K-DY4)vf;ti$KB$I*Wk6;^gEu}mF*zeM
zFBKjHpdc<S)=|jJ%Ph%E%&}4c+W^wRprBBkoL`U%7Kw-LwA4}1wNt28faFY=pcQ2O
zn<n@)0jMTOK0!@|`FS~&C<dVCS1VY$*2AV9ymGr3n=Ql}Y-I(>&?u&4<!9!B(x|Q-
zBvZpZs190c23|l1+T5sU3(mWse6NQrfnrucYEf~1USbZ&pJ=8b>#+i@A1=aeOlDqu
zdQpC90eFNS>;jO13e^fAw-#$yfhAEa&dftqtAT7?G3a~<NTeYPLsrp&jgQYvK@Hlx
z{1VXea<D}pyEVWpggJ;ZE;B{J&p$-L(@#Oe3S^49jzVTiv6TW?gC4Xf1evdZ;$Tp*
zpI=%MUy_=b3$_5n0GSV>VcLq}OU@PSp{b6r#i$14CKhO@S!JeZYARSkl5~m!a!Q4{
z0~D`dcYqk03W!7i^+B;7E{}pV=p~kxWaJlRRw2$vDb|Bq4fZ)AM-}ITN~HLtN=TG}
zY(+#ZJc2a!ic<57Qc{aF5b3ZOoMaRngPlQJC&3pCA%xUX!WUr)s1zuMS^_r`?kkWi
zWJ`jAi)*kmE<?bpelts885m{`dIe{tU<KN93UP_DLNKTZ0Z%67f_A*emlovYC#Iwp
zDOf?ac<U%Qg135yLd8KvaZ)N$qYvBm5zvfNN=iH^#GxllfQ~u=?*@oZ%S_ElQLsW;
zDGxFfyl)_}B()e}GyE6^D}`!>+{B8^+|pbt1tS9kz3j}K{G`f~)MCi?3(z4c3JRHN
zRtmay8qjb9B~&O=58@R>N>x*XZC!;*#X}DPvInO-m{VXbi3e@h2OV03kbpFGb24)?
zOLP?S^FZ}3cttdW0%W%W#3P89(^1GP%}p)JOis+nEU5(fCmpQ5D83{kF)u#9C_c5Y
zG%+W>B;QKG0PF~ef2>j~N>afs1W1(#YK<!>losWHj3_9|FUe2N&ndQ2P%YOeF3te0
zI#vK34FV=W#Ramfi{X_@X;BV}M0{ypW?^Y+UTSf1e14jO6=)Js2a***6%Nt{a%BIZ
z>jLEq!nzc!K<dCn8YqW=wyPwkTESLN!$KJ3R><irutn{eDLM){sd?!o86dACQiG|f
zLamMhc*{?GQchxCHry;w+Yy4TK&#7PThc*wX>v|!aV99*sueQxtQ4X_OV^=iuEc^v
zAJZL>Jp(B^3RbAAsNu$fYj=o!ATl?#xHvIA)e3$XOHgWhY6Yy=gv`?xfrR3rD#7-G
zw@BnBmVo>SD)$I$2Sua;QpkXGf&65kr)LBX8?d_|`+{Hr4bp?;LvVD1m4O@%!B9ux
zvL6(O@#H%np&jHD3Y`x!3}g(Fk3c0HbXPt0RAXRZfGgP`83Ub=M^C5dIbK;I47BM9
zF)t4~^(7tLSk6t&O-d~))=>auY%5T`2R1A%vjUz>5sJYcfv5!U*n=hOyv!VkYBar|
zVm3KBwV<RpJ}<Qxau8NYQDzcoyBTOxjDl5JVo@e&D!&+J6m<6v#5ho~n~_)?p9|_r
zSd|oIrl*75nvx1Sz9u!V1X5Rkw)>#1M*wYB3W2CsM_a{Um7asNmjJx}pNWBiK@UU-
zFfhQ**FVV5z_62_fnf)9?Y|yB1A`hr1A{6*0|P%l1H(5y28P3Y3=9+b7#L#t7#LLf
z7#Kc-`ue;K46k?@7>@BWFqHE$Fy!+xFy!$vF!=K_Fx=*0V7Sb~z;KC&fngI514BIz
z14A7T1A`}Yzy43?{`~pe3=A#Y3=Emv3=F2+3=AgR3=BWH7#MbQF)(a~jt|V>VqmD^
zVqhrZVqhrbVqgg8Vqh@jVqnnZVqnnVVqg&FVqkd5$-uCUlYwD1Cj-MIP6mb!P6mbs
zP6md0P6mclP6h^DP6meW91INaIT#q;aWF8P;9y`V=U`w^<6vO80o{WSIxn!Coq@rF
zoq<7zoq^#g8w0}=HU@^JYzz!@*%%n+urV;yu`w`MvoSCjvoSE}vN15|urV+wvN16H
zWo2Oa&I%cOc*@Gau$+~FVIeC6!va<YhBj6Ph8$J~hBQ_NhE!Gt1}#<whUY8{3`bcQ
z81}O;FzjPtVA#mQz%Yk}fngd81H)7n28MDL28KWu1_o~y1_mz{1_o0W1_m`228M0S
z3=C_T85k;=85jzg85pve85pvd85n|?85m5M85oS285mfZ85mfY85k}zF)*BEVqiGK
z#K5qRiGg7r69dBxCI*J-ObiTd&~ph>m>3w6nHU&+m>3vLn4oC`JPv{AsY9x}_|l>r
zc(o1P;et^kBCR-q>VkBd6l`r3)It3*(8?K5_dPEk+NVX?8ij5iXy+H|22+TsD4IaM
zb3KSSxRVXr76%%-K$in$Gx(+`=fvcU)Ns(2o+7=1)FRM98S&taJQ@&fDbNuM$oV1~
zP%FTjwyYHLGIKzK5g@-{cJq;f0ny(^oTlgrKKBT}&7h(mX-^YEGiVPIKCR#~0JK#Q
zWoI9#UWo_QN03%D=nNX@hGbAl2W|rBfz*Kf1ZwVpmP2KyrhwWwATMH$LBRY~RGJqL
z8PS05*t0@a3o;O70-oUvm{FN23ZT|tYEf|}s04-C4I0o)L5Xq1jw(H<rJ#L);P}pf
zjIk7FBr4b<ACL)YD1bKEX{2Qq6_-Hw7si8{GR3LM`FSY_5tx$^dZ2Q|Xhn*8OlKnY
zaY5aknF2aN&coHwMID^jU_s%4&<oyBj);EnE<R99VU10g(-GQ1DIRVrsL}(Q7XTUO
z3rS7P1se!T@G!j~Maa5fx)q>(O3<z}oV~c>)ST4h5>Ve3(IW$86_DYOEwA8ljGWZ?
zlKgm(DUg0Y$Ua1YqX6x>gZl6BN%<+22(#3|VtM%`sgQ11v0fs$vjpvqLCjH5&;*+h
zkEBk)-w)Q&0C!GpF;u|YgPAEx@D`YRkbh`^f>R_+Z+s?Xa14|^!#!MsT%mgu!KV+|
z*(xYk7bk*-hpJLFiZk<)Q#B#|A&_#nAb(%b!C<MNMSLIu1%+T&A6MrPB(rrCoc%-n
zLNv5A6&!;VAYOyI1?+K9U?|usD0%w%xdthC`Gdw0pz_M#qcKbJOA>Pwz?<nojqBo)
z)Wj48=qamU(PGF@Lu!gbL241qX3$}pi3%Qx#Tj~V(?T*bixqNH6Z47{N-`2l6p|Bj
za*7p-OOrD|s+B-np_LR8^HLO)z~(9`WR(_|zz#W01og3!Qi~Mw)8Ga=RYKgAnU}7R
znFn?)*aPLM3Mu({>Lm)P6$SalsbC3sutQJ$%r7lTEm9~fO)aW~xDZsNloUZu_Jf49
zf~|rfWTY4}Pz<&gk#<#!sx|CwpuJE#<!Vr|2Wt6)x^%VrXnc6AA*)ibMeRRWS@}8o
zx&{Y0I=jXPxw^YX#0Q52fo%mjt_XDCVrpJ;D$Ei{(nL52!BS8Fk6gqjRchp>mSp6E
zH+zB-2vYeEnwA2q(m-Tw@NsgGc40DT7zxURWHoRh4lxc~`J!oy2Q|w<l`$k!g2q4K
zmV^C(a2~GnCGx>1WkC`%$j9J}oeAnw!-mk&3<B>cPpZ@apA2ZFkeLD=F@QK1WB^n?
z9xSf`Dl5?pP=KY^V!cer03Bj{3sfYkgGP9vQ5+8v(9|nQ%m$r|2?|Z91Y&P2A<YUk
z(35*Xx?vWAQUtiVEC$z?U@PHb5KF<X2I&E1*<uYuCtDMeb`joCuvI9{0}leHz@(HR
zsT{6USpj??L!v@nYI<TxCg^O2+=9g95{3LcP!0w)S`zb;Qx!BoSuwFF6_k<kQd3h>
zp{F!tWI|#Hw0$|WI2BYDz^qh&j29Ivl&7i}rGknkh2qrYqSTU{N`=G}(3zRwi4FfC
z7uO&Kr^sR*h4PF{$ogcE@1W-y=Vj)AYF<UuKmfJe6rmvw4i!l9R{(EC28SP56x53X
z56ppi3bvp`QCyIdS)!q?58c`gPZ_AK7i{SRJx##I+!Y{$(cq2un$WG*>OTJAu0gO7
zD#*B?rh<>Bx2u8`xSUbffy9KBf|9CoHCRY5CBHlmw9L9zRSA)7i&H`NfCeZ_GD~t&
zHNZ;2wK;N)25}pD9zpc!(T-TvOU}<LE{RW1ErA}wQd$7ASQDGI2ty%iG3*A#76^k~
zhU}k`qDl=bn5Q)1z5=O*V6;F26&ldKJX%=6(>$_1c#^;pybAu1vJ#>mM55UR&cDbJ
zf~*4)ngrtzp#?`)1SKv={Nac;s6NPHG&-R9os!gIjDaUjJxJNC4p9d^q5{+=&;ezu
zRM?>v5D`eb5_G~X==fwL#jr*UC^SGW0}msoLUInGJcc?6Jb6_NPtFi7_#}$_JZOS<
z1<k#IW^sZ&TwNgh|LqwV7*0d`|8v0oJO+mUptJp;=l@;dXJEJt9S`V-o(0&!&%jX3
z&%hAM&%of%&%ofv&%j{L&%hwg&%hwa&%hwS&%p4DkAdM59|OY-J_d#k=-GhTd<+b!
zd<+aJd<+ahd<+bHAaUqe0ce~+i<f~xg_nUrnU{e<gqMMVo0oxsm6w5mg_nWh4i5vv
z5grDHeLM^ddwCcb*7GnhMDQ>$1o1F11oAL281XPLi19Em2=Fj4@bfS*yys?M*u>4i
zu!fs~VKp}c!*p&2h7N89h9>B`gA8s423Kwd277J>20LyB23>9j21RZL25D{v1}V@%
z2;2+|54ji^_Hr>WY~f;H=;2~uXyIaDsN-T_sO4f{i05KpaOYxRaO7fOaNuHKP~l==
zxWmc7aE+6J;VLHs!vRhPhDDqV46U3D3^kk#3<;bJ3=y0R3_+X>41t^s493tq4FowE
z7z8*O7(Ro}0OVj`n9jk#Fp-0SVFCvOLmmeMgDD3CgFXiXgB}M1gCGY3!!33OhMVjR
z40G8T7&6!y7}D7p7);q2806U*7#^`PFf3qWV3^Owz|h9Vz@W#*!0>~Wf#EeP1H(pE
z28N}q3=Feb85kzBGBEVAGBEV8GB8xIGBAX&GBDV%GB7BDE_!5TV0h008IO3#!ocu=
zg@NH9bX`On3j;$d3j;$j3j>2C3*;UIBNhe*MHU8zcgze7FPIq^o`c32pkortnHd<C
zF*7hsVP;?`V`gA*WM*KngpNrVF*7j8F+<YcDNy=@radw#P!4f`OeMsFrY69h8ugs~
z^nAU7ymWO?g@kDE=q2UkC&ee0K=;>ZsOKgYm!uY{>nI>}fXY>HmIKeQfG6`ZOF%gf
zmhWJ+0^~#v@F)QI=oZ+_gpPtbXlhj<GdD3kwHPuAo|*z_VnNUR2lcX`vmAP0Ww0(T
z)F+_14P-kZr3viV8BlAfAh9Sh7u=o$oiYP59OP&a8>R}SqwJ8J84o?91{^{NE~FKt
zp=JdxV?ZbO+rxqYp$OS6P-BYqAU!;VYK0o8P>lkVp_iOklA4}hR0(pRRdObH6dmL~
zgo)tUEm%<IWEPizj~T*hSV?|7+_#{L1a2C*nFzH~17wB{xKRPF^<YNBXaxoEc_`ou
zBA`_iL;%(_0e8T`@dEGIK@^mv<`(3D#*J-3Lp{iP!FO>arRM0Rloo)+eLzR9=)p7~
zT>}9&33Of(I1s>-Oz~hblwd%(6~RJoIe^l7a4O`WA@C@8YCL#o2WBB`v`R+-CIX5{
zkS+xUlpX{$=@x^IrMFUo8l_wf4NCC9P%SLEAbP-{hNEYiLS8=HcpcD@Ud0*tr8)3}
ziV{Ibg%y{8TB3Rit`!OiP}3pDAcI=;P+JnfAqH|>W*Xc;y}ZmEaJmJFE5L;nY!y)A
z8frvwJj|cPpdl=9z<?c(@V2r-c&Y--g`j&#Km`I!7iee;+{uKRrvN#*2<ouRG<b3b
zy9(kYWd%>TIOyD;#InT99MEXKLQ-joLT+YpF|=2k0$rd33Tv>-aCrio(_yg;Hysum
z#bEy-r7Wn^!NSl^3RDOwbQEkAU?xJ^ORx}tOgVsp3zRUyr*p+a{Q$QSHSg!7=|Kx4
z=-iuvnwo+lIN!iFFGA&^bA+&xEjckS9@K$>9p?v?j?Y9L(Srw9F~lBNX;utw(3GX>
zfg1my1rSi%K*d*4aS1ri91x?%plM2&R#1V5F-(oD0NIC%*v)|Ihgyo}2XKmoWmy;v
z?oNYFafc{|IR@-dq|AuZI&ilgrz|MCP{SG76VS{CRsgdY7N4O07;2uxstlWlVMd`?
z1-f7e6qp(iV?dpCu-6qJd`OnEN0LPv7e$1XD|ANP6J!*4AQGY-GAf&s21=qRg&0^G
z6#026py85C&{!l`40PQQIFK{bVCU#VVxSo2d{~ME-;D&a54+>QX&PJ?fC3v)O(6Ro
zeH{lVa3PZfpawoP3{e$<&LYP!A{Ep=$EF-vC1?z@7#uc`F=OzlU=XGrD4am@pppo@
zGQvth9dacIxbqD10VH=r)Pu)EH6U!1>asjF2|T?6?Rs13>#J)<8-kWef{cL5f(M*I
zc@VbN0oj$XK_W-QeL8wYpi#SGz0#tb_zdv9Cy;I+wD%7gfd*L%slY&WJXi`;GD4yr
z$#P`7Ks`gSW5C59SPwK1OY-C4<8B&|S`r$A3gBuS#nT{T5c<Gv4P;v&Exc&(!F;ix
zRiGM5&WWJW74Ui!h06TWB85cAsg<C6i6EH^Hb4a)9)KL$2TqlUBo8wdyj~@~2z0<=
zY6{f+NRXK@2ZI%W>Kf&0u-W-VumS4gc(7b8%(7xdg@ByY#Nt$i<ovu6(AW^faVfc=
zWs)UDpgU7QPRz^$8B`29-4pCS_#t;7;gb9!Jy2l{W~aiYjqMdchj_vko#<s}=B0od
zck1BfYOv-fI6xq7LJmMkP6AJLfnu3KK>;a1ic*V9b4ox>TFCGelwXioTwI=C1fCVq
z0s(c{L40TmAWa5P<qVNfuvG{R^3*FxEGkZgq$lWfU1<?~o~}4CEfqTJ2zC%skpxwY
zG+7B-$_w)(R0T{JrSON!A?pS&%thA=7Q~_xe4r$zA)qBoC6F!zC?`M_Wafb)C%q`O
zxEPC3@dyVhfC@tBS%sjPJn;O#76W7+m_dMnVH&jawHA8DpC>;9gEKz^gA+dkgCRcy
zgA{070D9hk4IcwT3H1Iy(0Tu!d<+bBd<+bxd<+cwe30}0#rPN)*r4bAKjvj%ILgbw
zuz{C>VFmQAz=gaF4B5O44D!4T4F7l-80PRWFihiNV3^9oz|hIVz)%A{+drL$fx(-H
zfx(%Ffx(uCfx(7{f#EMV1H%q(28J%^dVywc28LK}1_n!R1_o|!1_oB>S^lrM7#NOo
zF)+;LVqgg4Vqh@hVqoBbt`9iD$-r<3de0zeU%@m^28I$&28L`b{dE~m$i0IHI2agq
zfc6@2FfeT7U|^`^U|_J}U|`_pU|@L3&cN`Hoq^#tJEWh!n4N*4fSrNCmz{yZot=Tf
zjh%tPgq?vwmYsn?gq?xmF&hKJO*RIG%WMn`m)IB>4zMvWv_RJs)Uq)!6tOWd#IrFl
zM6xk3M6fY1xUn%Xh_Ep*@Uby4@Uk&5{A6WdxW&rAaD|nD;W8@&!vR(Xh8e634E?MO
z3}vhg3<azV4EfM~4<@V(492Vs3<9hS3@=$27&fsmFsxu<U|7Jyz%ZYMfuWCufuVzi
zfuWs+fgyv1fk7SGuUBAUVBlb3V0Z@F%fQUQaG#lh;UqHy!%k)fhRw_j44ar47-lmw
zFtjl<Ff=eTFw{f)_#(^<3=f$Y7;ZB$Fx-N!HJD3MKOd4@Q$Y7i<%1Rm$Ad~E&`t-?
zOd+VsNlgYVtAU)6VXpz9!8HJCsa}*{f~+zX)^^T>T)2g%6Jjd?<3U{@XIM7^dUKot
z!~x*0C#aOpO$6OY2$~v$8wQ)@Dy}RpNzFwr8kLl*p_OVa=)N#eXA6|WLCXa}B@@WU
zpy3N-EudNyT)h?KLo2P~;tX7hL7HJVL+0m~fGR~$u?=xDRC^Ir0u~@Bq38hj1a!~@
z7L1@)HK^V}3uEZ&T~HkkYO{engUbYDPl2wygE%S`+$Bct_9CiG@O%lHh2V%UMx0a*
zF$KKf7vum?#ei(MUQsIOEM!IS?Tiq$pnf^HwT<ae#4;BKbc0Y=6+lb^Pw0ZY3_iCU
zE{0USfT#1JC**=Ugo%*DYLV(g6cwN&<dLEf+L(sLTWUc*)F_nl9~Ab*pmiO3;8A^0
z>jr#svO265f-8tm$pl|P2Mb|nzX5VSE>b$fbvQ1_t4PX_BNWNiMTzA|E=E>_<v3wb
z3mRD%v=k0Jt&szo=g%uaI!7IR<0$wDUli|yCwIWn1!-Y{4*J!AuAWu*%mc3^L|PD{
z016*)BN-_YkX(-%=3w2Jb}A^OR-`7EmZWOr=cE*+mgy+urIv%~qEu+##TRr?ZxHmR
zM9__@X+^2U8L)0S;%)%YQV8&zA2@I!w|%0{6JWDL2fQ-^CFjB-72c!P121Wchq)BA
z4GEG%U;_qvpaCI`jQsrU;&|{}q$c7bQ>Yq9UQt$XPRz+s0FQD)B^1EgAPWQ%i&7Q9
zqlu}|5thti$hu`{GJv`u9;&ri1LPDPhzSsj6>Jr(z$HG|R2<#{$zkymib3FZCB&B?
z<)A^!yc8T>1StUd4;1h)CxXPtbss2ULDC^4lY>eSc-8~Y87pWjsOzgMXoJ%rSZQV&
zxE=v#UubB7j6v_@AeAT}Q?X)1{9}~{2@;_MGEWP38%PHZj5MHuLj_0};rWcx+(gLE
z8&D7^=qrE%0VGYxBDC;PP;db0LJJ;n)s&Q)o|y*?LM&>Kiy>%7D;~No7(5aU8dLyf
zMQ|q@$^fM!P~t#U51Q}IOaZT6f{r~XE4ZhYD1eq!Dfohy8Y>im@1aykssv|Kg-q~X
zMOf&g8dnURmIm1g+3%zY8nXm(!GQx}fL03>rxqcGKh!}!RLIH9PE`PR)KYU3GjpJP
zb;zi=jsjQ^w;w=8fcHFr^n&+6LAuINjSvowtO(KzPP33I2fR=kWE0Ae4Y;ca_5<iB
zcF;a8X!L-UBS#4OQbL7l1;6}~%rwxosG0eBNQEY>Ck(nFIX*YPEHwq(=hIQZaqJpo
zhYhG12inG%nOc?#+CiC<s*s6vJsK#jDl7P<mV??ipw<F7e=2|$Qxt=`&q<*EHR!t4
zlGGFsA9Ss?ixaqmjO0oM&?OpBAA$;2u=C<G^NLG~N|QlX%N2tPa`18owDgN3kWp&^
za6p!4q~<B8qe!TOMzlc*ALI-0h!~__4N(dfKvDu)N}vGR4pdSJb!uiwYHl%Tp}Gb{
z7{xK5vIwd!IX?xoo<>;#bh`)2)g20;AzDxbD1g-<l~u45uK-^^Me-;Sbb_q3C<mNG
z!HEtrP6SSGnQ018RiOQVnI+(mQc#G7wr(JoF@px9bfD@$>{va}Y&uveTtA}q2k9I@
zO)V|TK~Aj5vyWi?$O7P^2r{{to|#7CbR<XzBp2Z@GOK{p8BUN6$oxNOo4G8gUnao7
z&;afKui|H5Si;Z1u$Z5LVJbfZgDXD+gFQb3gB?EugC0KvgEBt@gDgJ-gA6|d0~bF7
z!yP^bhS_`!3~|u?0Gxab44a_q|4n!q7&Lep820lpFtqb9Fy!zsFl6&EFc|PKFz7?)
z>ECfPFkIngU^vdrz);K0z~I5nz+lDAz+k}5z@W~}!0?QVfng!^TmaC#dmI-713wo7
z11A>)0|yra!*@{MoRfj!J|_die&`tiozQju_M8k1a-0kdUpN>Tj&LwA%;R8SsOMl{
zNaJ8&@Z*5YtMhU&FtBqlFff7+K;&RxxCp(AubrKNA&Z@X!JD0dL6x0>;Vl~j!yYyU
zhE_HP20u0i22(Z$27WdMhBvGX3`bcR81}O=FzjPxU|0;DS1)2^U?^l|V2EL5V31;E
zU=U$tU=RlF3t(YjxXZ%8aEgV2;Rp)@!(kQ%hGi@a3=^Se4|K6GFjTWJFoZ(SAn;>h
zV6bIjU=U+rU=UzoVBlwAVE781XYXWYV8~}?V8~=<V8~!*VDN#?t4lC5Fo-iVF#KX-
zU^v9Yz_5pjfnhfj1H(cl1_sa?|2QTFhFB&B25%+?25Tk;22<#Ie{fm=r2|M>2hX>G
zrzpYs45btREyOQIxu*#%0$GQPoHZar;qjmoF~J*PG^`*)&JdM4NUd<_@@<F&D9wZF
zS*UhoJ@`#WG~2-|B2g>=-5iZ(Fq(2?vq2t8O#u(bL91s_w;3XeGMo%84UuH*VN1zS
z!mKD2w1pG>fKN~v4K0?Soi0d&AIW7Isfmy}4cuZxt0{C8Ae~H*$3Ua11^Lj<K6E!I
zWCvwD$PB1Mkwl;)Cn(N@202oUftIu(-F^<T2^=?hPzgokV8f>!w4D#88=GEmFAr(e
zDAd8|!jQeH$d<w;<sd=9018tFR53`~1!^Gnm_Vwf&^4oV!ePTDpjH_op7c=riKzA?
zyB3<9@HaML;e@If+{Q$SE(HZxi09;JK$xJ3Co6@J%-mGHy!>*IL7)JEtx8LQt}N37
zPaJ3%8W@24nhFZw6=Kk)C(KsRoEl{8J_W1_6z`y`%u3?H^Hs(1$)J5R;1h7ctqV{)
z2rL5{27|grAt^OEu@t(PJ3F;f0g?cVL91Mq6+$vfixo0Uz)dBE#L|*{&;_-i_2rcc
z>8W|CMWAIDparkx3TZ`&>A9(SpvoMiEmZ+*H|PRf1?YHQF*Gbd0RX;}thgjGw*X=f
z*muQHJ;f#YMX4!})-mYTv%HdGeIsLCBLhQY149E#LlYxYLt}_OEznK}$O?66pg@}p
zFmHf84^;(IQJz?=P?QR45`%UKC@Wx*2DenfdV@iG13=3tQu3kBbASY4c`CTU32I-0
z!yGD`nWs=(keZwcTHBvkoLX!JG6jScf>Mi9OQ8ONDlP(@OAKqHW){Pmv&hL2wkrWP
z;%EilrHnG12ueQ+3eZ7DD;NVdGzr?|2~q*x{){vj1QXB5&rK~z1ns$n4s^mKlogz?
z-uwp6z~D*<JbMnw)mES>3?x3x5Kw~@txU86x7N`FVd~LK6U<|AU@AfJ2X0*=9rpkp
zRfH)>&n$_@9csv`2n8LYU1<ePUZC)YnE(woD+MS6CXTcO7Zf`18>?aRAP+#?4iTw_
zmVclj4RDnV9%zL%$zjvBkRt_(LqJE`q@@;trknL3i5WE61nLYy2Lls}b-)1)>0N?D
z3S2{h%O~XF+oHtG;#39K3ecX|%=|o%i5lvNf>R+mF%NXHby6xU(|`x#KuJnjAtecx
z(Lh7!;6e<PAqt8hc_hEI1hkADbmf*pQff(gYHA)x3upm+8l=|)>gi>sf$|sB8c@zd
z46!JrWEQ0+mw;BPmBZHw73JsTfG#BjCq$%?4OmctoQ4==1o4y=K*boM2dR*l1acba
zj2qBupyK>o@N)Z-#Nuq2vp^0DN-ZfZ$^)qY8>f(xpIQuBC9D8*fdXVdot6Ulgdxz7
zT7DjQol$yb8F;K2WI58XC5Q_iKZdjdpw%AOA0Vk<@brTRXnYU33ym_?1@8HQ3Vj^~
zD@eRUBNSwS1CCy`f-R`Khpj6MDr!JFL5-8*RE&xPB1LNN7@|u7bg)8BViNQ^x7;%D
zuq?#q8cNF5INVwbzUNL!M?p!s8g%43mJ$T21Xg##Mv_3*Dk}u%gHlscVln90h@46g
zC%3dDRUs9Yz>7giH7~WI1Uv?sp9hO^Wd)D?a?mB4AT7|;2tFYJ5#8X8VjyWyDosIZ
z9z&xLy!Z?$>p+whmx2$QPb<xVI0rON0m>zyV1?F+3dq9_AUV(|61WZqPkf*>K~Vz|
zM<{{^xUoezG_~LeSp{1Kx6GVWa9<nTuK<@DplJw5VFC$q9Ci}Y3>pK17yyaW#9{?o
z1yE6unO|BAJxruHS{)>*9;*l5{0S`*AqgFven1HpmeCbqBUYe>4`?P5bVL!#T!SL)
z9$jeN54nvKv|JE0j{)rzpvXbR!0R@l65tgKAcupjfykp+f@N9?wC4`AR<<CiMxh`H
zTrGk6Cy=@lJR=5LmRFFZhh-L3p%y&<AI8AIPz4$U5MW?%0`>bC7#OzjGce5IXJDAk
z&%j{7&%mG$o%?6yXJEL($H1_dkAWeFkAcCQkAVTy*S`dv&oAU<U~u4NU=ZSEV0ZxC
z=idNbpRWMz>mTA~V3@?sz!1vKz#zfR!0?C*vd+GZi-Ey~i-EzJi-F-cCj-MQP6mdV
zoD2++oD2-ioD2-0bN&K37#L)s^XyyM85kO&bL*1q3=GHF7#J$p7#LjG7#Lo%GBE6c
z?z8t}WnhqGWnj3*!oaYGg@K`rg@M5i+MoWw%)s!TnSr5|nSnuxnSo(B69a<<69dCN
zMo5@cg2DwFCe)=A6hISNkh2|-&VeBAaECDH!4U*bcR;oSdZLexLP<tZerbA!73`27
zSZxkkIh$Wv1UiHSdi)QTQzal*;DV+P5w3@rjARUPet;Mi09o@zf=9rs*NU;Y&8ajq
z2Xr+D==3A_tsSW6T_`|y#6pZv0L@N8);6UmfU+TIycBfzaBgNvJY?YxxN1fC6n+<M
zv5o?9o`kNv18=}j#o;Ih<Y<Bpalou6%AS1C2y}2sVo7N+fpCOcm5+3S9c0Fhpl_6*
z5d}G?z$LLHQ3+H)BEkl78!+fN6?hs$5{9P`s4F08ADaTKzDChilnP$mhCLooRDxDa
z6@kx9K_q-|od=5IBDkA$6d)I^S}9n8WKoO&2^6C%#}Z;Fno?2=a`G!dSI3})2a+({
zZe04{3J8Y>*onw_8(O2l1{YAQK$F92x{g9(G3f9|aEXAH*`P@QGNXlB7GTy;SWQQ9
z4yYSatOIIOAuyKE#qJ1D8y3|G#d(<p1*s({CK7F2Fhnz|iJ;}QD8?y(I;9wg@Su1q
zH!~--xFkOhv@;OqEiA4;(F5+vpjkvn4{YWfIs6Fe0T1SqXb*V0h(tZ07EC<KlvFWV
zL8uPNbg+bud9@PqS_$yj23SA=wowvNY(orzjcLF(c_gJOWTzICK*nv*lt2b%z>Q{<
z7(jO{DCV$)Cb}<55{p1f$YJ>^6THPsSpni!*h&w`3J9=DEKV&-1-nK8JYxpgW`-zR
zK>>*t_6iD!iX7xhE07w**@@uhCvuGrl?Lsgg4DPu{)WoJJOH}39X+a)plU!BB~pCB
zYXMN5q5yLRvLYQ6m%>yaTLpCriV4W_I#{zCS|q^Shwx!M=+F)%vk`~&fzO+R<{W(G
z6UaqY&@K@;1Hd*8z!t0!)SO&eT#}y)*>*s(=Au;4a_v;2Ed%fQBi37>MK$?lsYOJa
z4mtxSIkTjaXbnk;xk>r?#486i-?B4Hi1%-CPGWL4(dMV8=H?|9XO`v?ts}8GF)xt>
z)y1i~Njb!8NXyADPsu022N{_K$r*_yM7yXUvkY|f3v7QCu_+_7D4T?20clIegO`*L
z?J}_H;`sc$cu+DVT3bp{eqJil&OyT2FEO_uEfaJCK4h~bJ`IrOC^V2jLp92<)07q9
zg2<%_cry>U%7z>b3mKDC2a6zY?uX2?)S@+C!1EC3t##PxBcOT^)VfB#ln^wC3mzi@
sAM1~}tPngh0dWDSsw+y>0BsqzQg8<?tI-6VqKMKT0<RAOn*+840J%^ZCjbBd

diff --git a/app/models/project.rb b/app/models/project.rb
index 3d3fd6f76a2..9400d8a17af 100644
--- a/app/models/project.rb
+++ b/app/models/project.rb
@@ -89,12 +89,8 @@ class Project < ActiveRecord::Base
   # checks if the language main language of the project changed
   before_save :check_main_language
   def check_main_language
-    if !repository.empty? && self.changed?
-      language = Linguist::Repository.new(
-        repository.rugged,
-        repository.rugged.head.target_id).language
-
-        self.main_language = language
+    if commit_count.changed?
+      self.main_language = repository.main_language
     end
   end
 
@@ -957,4 +953,14 @@ class Project < ActiveRecord::Base
   def wiki
     @wiki ||= ProjectWiki.new(self, self.owner)
   end
+
+  def main_language
+    language = read_attributes(:main_language)
+
+    return language if language
+
+    update_attributes(main_language: repository.main_language)
+
+    read_attributes(:main_language)
+  end
 end
diff --git a/app/models/repository.rb b/app/models/repository.rb
index c135ab61f6a..ff48f993d42 100644
--- a/app/models/repository.rb
+++ b/app/models/repository.rb
@@ -812,6 +812,12 @@ class Repository
     raw_repository.ls_files(actual_ref)
   end
 
+  def main_language
+    unless empty?
+      Linguist::Repository.new(rugged, rugged.head.target_id).language
+    end
+  end
+
   private
 
   def cache
diff --git a/db/migrate/20160229193553_add_main_language_to_repository.rb b/db/migrate/20160229193553_add_main_language_to_repository.rb
index da24abd2f04..b5446c6a447 100644
--- a/db/migrate/20160229193553_add_main_language_to_repository.rb
+++ b/db/migrate/20160229193553_add_main_language_to_repository.rb
@@ -1,21 +1,5 @@
 class AddMainLanguageToRepository < ActiveRecord::Migration
-  require 'rugged'
-  require 'linguist'
-
-  def up
-    add_column :projects, :main_language, :string, default: nil
-
-    Project.all.each do |project|
-      unless project.repository.empty?
-        language = Linguist::Repository.new(
-          project.repository.rugged,
-          project.repository.rugged.head.target_id).language
-        project.update_attributes(main_language: language)
-      end
-    end
-  end
-
-  def down
-    remove_column :projects, :main_language
+  def change
+    add_column :projects, :main_language, :string
   end
 end
-- 
GitLab