From efed80d829af8c862cd87d3438ef3b9932ad9602 Mon Sep 17 00:00:00 2001
From: Darren Dale News
pathto('users/installing') }}">installing
Sandro Tosi has a new book +
Sandro Tosi has a new book Matplotlib for python developers also @@ -64,7 +64,7 @@
For details on what's new, see the detailed changelog or browse the source code. Anything that could +pathto('_static/CHANGELOG', 1) }}">changelog or browse the source code. Anything that could require changes to your existing codes is logged in the api changes file.
diff --git a/doc/devel/coding_guide.rst b/doc/devel/coding_guide.rst index 3a1181996f95..6d3164d07244 100644 --- a/doc/devel/coding_guide.rst +++ b/doc/devel/coding_guide.rst @@ -4,33 +4,6 @@ Coding guide ************ -.. _version-control: - -Version control -=============== - -.. _using-svn: - -svn checkouts -------------- - -Checking out everything in the trunk (matplotlib and toolkits):: - - svn co https://matplotlib.svn.sourceforge.net/svnroot/matplotlib/trunk \ - matplotlib --username=youruser --password=yourpass - -Checking out the main source:: - - svn co https://matplotlib.svn.sourceforge.net/svnroot/matplotlib/trunk/\ - matplotlib mpl --username=youruser --password=yourpass - -Branch checkouts, eg the 1.0.x maintenance branch:: - - svn co https://matplotlib.svn.sourceforge.net/svnroot/matplotlib/branches/\ - v1_0_maint mpl1 --username=youruser --password=yourpass - - - Committing changes ------------------ @@ -60,231 +33,7 @@ in mind. :file:`MANIFEST.in`. This file determines what goes into the source distribution of the mpl build. -* Keep the maintenance branch (0.91) the latest release branch (eg - 0.98.4) and trunk in sync where it makes sense. If there is a bug - on both that needs fixing, use `svnmerge.py -(Hqw1wFOk@5|WX=2Cl)&PD1*PW5FHwly299lp(Oa0U6?{U`FN8H%^AWUBLQAVRMT7^)$N+pZb&336e6HZwAq1^CMG~L+!Uv#& z^oj-y_IRUCq&sVF){x~Kgy{$8(~FWs V#yjc8Ba0J-eN#?5LVt|9ggSdVNae7E6 z xeb@$V}WelR*VKpc3;9UrvYMz#%#&206{5lNo1C#)LIB4qZKx<~jt_6P< zJ_2(4f`;Xj &{Mn^Qbz<&xHmTFy3;oQ9O(71~#+ %$=|spmQSr8Ib?R3V*!+z%It9sS3Qiea47{=59u`aY9$^tj7UVml(}cT;QyRo; z?s(7oB!nHzY3tr3M~Y;#(}iZ{vs%pMj?gj~_MUxz`r;^PJp3~qLv_X8q)Z_h4FrYD z_85!N)beHJC?`NHMXwT`Mn#0_8CO{J(e7KRYF@>Pjm*$OA>C0eK`Z6!k}23q2Fec& zc7&Xew$gTF0i%lRAslCt;SEpeAnY$Lk<{}ijfxeGrmG1k6!*=Fa)I)+V8n#w48lQ5 za(VR*PXV~_UhtP$8E*sQ)(fgzl9(!=bXAh7r~OH(O*AOpMhlhLt-r3w ejaWP|I zzj;9+_rJxP>s~yFD$W@p_jj0+C_(Tu4F~;!=w59Jefc*#TD5Hv<}8s!#Ib%ti74Y# z8f@Y7^y^5}R1i%>jb$UHJuUDSIO1| WLms)o|lW-AK=}c&UFO>ysFC zUjb*15)9#@`f6KB-J)geo=RPdNO!p-(rOU&UHCQ9@Zg&e_1~nMxHK_sow`hFbIPz+ z$S8bp+){*dV5NTg2Azhvn4(%P(LhH3|}gl%ZE<#Y3*WZ JqufNHmx`7>+aq z9}=S*V$Ju!e`W@zC1@#9J1gyIN`5LP!d8Lute_PHM2gmam7|K8J+{kkaN^U{3nA!f zW&VIg_e-ilo}jWuiDOBqj2Z8mb$eG?Q0 M!IX?rVBLM>UT`Ejid%g|&E z{dgu8-YVVQ$6>2y<$ewqGmM>Kjj2nRF>ygei}dS_#)%T5kC{8+<0AB7E|(;c-S{|m zhX^?)zT#x1Pv*r!kqX8xG=JiRu^d2%L5EF+hQ15#)AR((mfsO9XxS8>7NG4Kv}>8r zJ_nz+sez;3{5Vrh;K1Yti7?poL!!m_==ZhQo+is_QOe~GWh^C~T5EDzv=HHd(DL#2 z2)(i_g0drYKy5xbap5!>S;zumfW8XYW6)Ry;8GmpEI7J!Z)4KTp2}cDFG#duFVrg< zeO6pkc$~X(9Y6M%0&e8MF35;+YGh39zLq@3S2{ty49!$9MvkBLESyce(4s^5 c zqwX3>Ne(pC2CQoZ-8D-T;A$C0o%r@+n!_AAv(-e$fvXCE&+;H4U%@e?|6uU!)@})g z%Mpz?1|%o{*RIwGbhPN}3Z^)6{S(v!l89@pTx;x3G%|y_Ydi_XP;sj3klz<83g@z4 z=wYe5;qep@oQ DaY|Dgl*_O3RCky2QT5qfUMI%qZSS)bMbZfj+FpUxe6f=(Y zT>(VUa$BM)RHq7+Z~Wj*)~h5naq`I2SEONk#g&8+WE+&!j^>YAL}4~wCa&5jlg;>a zWBQ(+8E`(JU#i&zvuOg2u%XeovAfe@hLal(`N%y1T|4LNkc5pE=`6RG2U}R*SLY|J zH~chx5L2*NveMg|(QHJpN(RQGg2U*=xFi$rE aJ=Wv`0P+5 &zaWzLcnM|I)n1UlPjTlULdwtP $eBT^9-(ceXT976Z>bnsq$tlS)8JMd@w#A7Fbv^Cq-#mKS&Nupilr;LPLlMV0F zEyQq5eY ?E*iVMGW@GuiR0Ao}(T=>ro=VGNm5l8ucdsV?w-{*j@fw5< zFe$4`iH~cx8}R(Xci)V#Xo){045z?&U6#g5!~5ba(HyVNC;AHFkp>)hl4vB&dnZ$9 zYZv^1 rBuyqM4X74{tacgd=E1BuElb;S?3FOSc(jeU4Q zmyzz!Cg}y#nnYphaL03-ru0d;D>i0her@P!l&!(Waw{4hebYoqw;F|!K6jf2?=a_E z#%r6rvgxJME zLumPwqqtzeA7{!}1tj6aDnQ zK)YYRFhz?;k$9d!UGDPWY3?Q(3}qtJropxjI?TE$Q4P}FwarIMDb18! {bTIpzzTI^%a%C-pk&1lew}0?r(7!;yV%QIc$XejoY)U54 zCsN8d(r^+!F2+12YMq x!2QMB)uS> ->|6+3Y <)(W99Hkx{oI_39Is6#rv1kHlKQ=J zO3vH{I`MP*PYva8&k7!Roy5)jhyBg|u!!OsxZ&BuZrpsZCJ{-FqGx(}r_vuYFu028 zY9&NCIG50~H;ydRb(`WhvfDGjxA(r8QRPt9N)Y=*>V8Wk_8=lR-zqctkP+R67lCv# zTz1%F!9b3SkLxO;X7eW)4mfVkf`!T8Fg;jJ&j!3(dA#P=J_wz5L#)%%&`RugxYr=k zww=gq%u&qw`_hg#4l45%aFX=neCynN{8Yq&qQhx&K^I-8CSKdx$$TIZF0S=0BLTn1 z4NzYngv@H-@4p{#;^x4t#bj~bUIUAUP{~xkiyFER(QsB07WY)9?}-iU+ +Vm+D52@q*d-;9Wt3eqxpGdG=kKW#c2VDULaak2_V5_u7b*^nl8o{_c zN N)I`Z-$?rA-^qP>Ok?g<$E_5SLw3%*MSz z{X-77ockgl%c)~@bCXDgHm-!prgHqiE>7lDQm-AP*?gJqS>#ZRrL}GT52@{-Ig-7m zo-)rwR*uMs?3e+yvr7S?ALY5URHp84kb@)C*i&Lc&bKOH$a-_t2-$%F?x-6YL=Fch z=fWv(cKneEYNK?RUn#43iYJf*eGttY+G{f<0$ekp6rf5PLL;vyk3dN@1<*4&9H)4u z##F3xC!-{`HXW@4v(0f=tihyF%`prQKnS+ V%1| zCh0L50^fYmboA1M{wDFUR4pm^7*pw-PY=mOFyukg
_7R111LPD;|HP^UiQJ< z^htIyF7@c~SNXTnwons{I1`PCO6q?BR!VY@OO{!Q)v5AFHx4q yv>2AGguA}*l*GI`t7L3x_k}Ggb9kUF5;TX
sIVl%Gu6cYdr6fN1fwS}3Lo*{|MT<{0|Z0o4jLNz=HaGH zt80J3>0c><1s-r@GT%UWkJAHoD#q5Y|BhyuxL09$fh)x^ko%wVe+Z>%HZ~8dMOTx4 zeDF`T#|!u=(Mv- )8oABp * z6FGzB+wNt#=&OvBK7!_* 6&Clo2%8%f zFYH2{=F91{q-fpU`~=9&S?2!CTp@|^czHwMN#}~gq&|IrX#->-Up-A(!No!4{mV;* zr0n|z`~o^|{f1ySG;+cf*5)dt;`Z>j`Dct{u0l{QbJs-#fq{+whojH)Ji$TQPU@S< zLJvj0tymz@_{b9Ckr4kEX_VFPfx}3t8+%Ns _CY0B4d5s!cRIv$&ZcumgWbszy-VSY zi@3e})df4F=L!0alMPqS+^eANmlppb@z)$V08~4_dH|ILYn zmz?UwZhw0qGJrs_Shqjonq#MQ8+X4a2sc%&h)ez`a+xwZ43n9G`X{KmHN{?}#yGaW z_>d8)_aH5%C=V6!z>d{*0r(g|J~ODSDzeUQRe18P*6)zU$b|8MheVbP7?oaznHD1N zqoPbsXJ`H!|3z`=ccth?s~d2KUk6k$1nycq$1q@~O0#<($Gitk(^o8(o*Wz(^EyD~ z`qtyUO=wh=dZon}n1fybK=EA# a X4p|=7x#8r8{<|?T(_yw$P&^@!F;T+{@&Rid z+u8RGKf4DDj&h#tMFaPv<1lBz@rO$}wx4Tz0w2pfs#z>E{vX?ozz-?8TWN08@9mJv zlBAZuB`QD1Dx8!7#7=Ba&S7ae39e A`v3Wn#{5c@QECpXM*3u?yG vBh*DHvTO?jP9rK{oMl`J|=B4(mK@0eZvZ z 9lu_r9 z_9J{*hz61L@s1#iz+J;eKXQeP5~$9^$DwU{&gC8#N ;KAr;dwBb9iR@dKmC*00Qr8C*Nn92cl>~p01GHkq*PWHP3-$w_x3R zZm1%q3P1961NdQ6`+Qf(R`3N8Y!wW@-_$_htWz!qDy{gD8{E-32sjNFTi3BV*J_9d zS@`8`3<6IY$pQp7C3?cY=r`qVW?Sg_exkae)o*44rSo?3ZG=b(+{$ucq#m_ZfLUoE z7_PpNlED&K;$MX8{vsNVwv0K+jy*zm35Qzu#GLM8R*L&ha`HGtLW&@oZ2 @{P#3W3UgweJ_EU+2eq<1JlxsU?Uj2P(&d^i=ByG|?^@zb3rCTnV9ogt`Q0 z@f0c*5k;f<^xlMf{COwvT_FhHp(Zrm>P+|8+9ly2Y$u(x<$gwq$Jz%dUHb(~@ozf( zoIo}u0YC5F_MhZnG&$NpWG<42 MRrA)rzPJM{`Wxovw zJErChgwVGRDbtOh_Z2b+i=7KBr|F!Ck^$v;)FRt!pU+8^xz$Ajn5t&qgJs7+A{27j zBrf4Rg!mgv)|%O{H}20UZ$k{44}-q%yNM516QLdcwm)e&j`A+rf&kY2?MT`}DaP0c z@Lnu7gZVNE))OGOyR0U8>i$8}r(+i?Bi1X?;VNvSK?B*D9GUwT{a#ujQ72*)`^$8w zfn)p-ePgyR8 A(_#}7+xs-Q}A0$nU0jatz{96P+$>FLbe zd}>>%=MH=s8Y5&)gEUhkxbmS@U~}4@bN5bDcVMK0m?-egh+@Av7@d~c>dAo@FX7%_ zIA4*r#TpE8;X7E&J`hcY&1Xup(V7jW+btKAPgvwdUR7o#xz5$MnO@E2N~AHgyI{-D zBXDsz=i#Kl})Z @emOCYvP%R; z3*kL$oy#pjmqGR+p@v8eLzWi;#zw0hC0}pNcw_xLKmlJ_$2>)5F8VyK2@4#ufeX-R zX#a|-8cv-90j}b4s?|7F?zf_~S}P1%R8%BXu?X|o)Y1}`TVo&I92_kDS}V~K-Y~;* zi&4EDB|I6;+NjMPICZ7RY~p1RY)EOmr%cq7j=){jZCr3oqU8;L^Apieho6CUilKx( zzXNwH1kV*JQO1Zl&NU;7qbc35nO4B30(jvM$4k(yg^S<|w{kA;W1!792if6i--;R! zmTz26twq`@hlmzmY!4QA>vNy~(pF=^-SAC*v@k50BtAdQftvmq{+=zWhm02P@Y2K{ zI=NJl>5eJw#Nc<`-5E3vC6p7jxt3=N-w>?V4|~vMFOnjHP5 qA)du=VGt#h%*>%?sln)V%FJ`D0q6R5|YBdH+{)5XEhns>Bh z)av(TG#uPXX?6Sii>aSns3LPs(ltCBdTJppyC3YSv(l6knyo48P8S%MQYnnVn1an= zo@UV-7u$UrC 4mB7Oj8tn; z;g4JqQr6@YIVyv|k_wUFu$m3Aa@)V(L8kE-F?F&%*P2`^`?S44S^6?^n@{w$ie@WV z5mY2~<}s(Usoq>)7)Q3E_Uu^F(Wg<@$R~&Mwp_y&suZ+{oW}?NdN3eMkAQEi=g`iI ztViS6B~UdW+L#r&mt+G<{441R*$TUsBU4TC3P+Rfahd#-uvp-SsZNfoqS)#}vQO7u zrhcQA$HgZ>o0(J8v&=gfUF-K1Jh``^uOVp{@hos7mU+l@zTFAA*r~%}Lz~hovYV$* zR)^C~hc+5ZjwItY66P)M^@lRnS$=x9Ge|+MqnY-JpGhuI@2+xz>2 LAD+B3Qfd)*=1L;%oVAgUtN1s&mF0Anck_RA2zU#t~d*?;`H z7Prh(=wEcP2xcQT;3<@X8n)ldZ|;SFKShh$>nAT#X=k8^G4Sm{!kmu|G~DZ|Gp*BA z#6SAQR?^UV=W#{2knv AuoN^MfC*b}Z*^>}e??A8MqJtn2PQ%@Cp@~LXAqq2M^7r{ z&L%Q2Qt`3S#7$A2Irc=~lU6uo=IEWFf7RXx!$F}hwGno6)e8h 5!b3>?4!&b~wg#2Zmpe9) >~~n zznqaw=6Y(EP4jzz@w`epw!(d-9sC%ze9Fg6R4yJuw;t%m%OSM61s;Bq?SBJrfWK@- zJ(HKevB6O#t`V( KYPhilRBmXAIGXgzP_#e~l8uW`IG@=5ca0ZXZUAym+9i7czBt zq^clbNATr`e9rO4MEx;3M^8yc@P-hH(!P5S%@!{}Eu3n -=Rm z&_uZ260Ng>u;dmNDlri~wo-i!hE$B?CgUI7dv{C6as5M0t? 9B6Z pLfKqlILT?aLW4uVaz7c z{Pl$DF{svnmO6KGJrgP=*&wWDwxr1Gs`A^@G3#XV>jO*06$OQ7Ykh^J)6-hV;`>dr zQ+RV`+7m@dEeYwL`WhA4#$7zHE%rmC**@pp!t^`)su(ASiRCIKBGeo$bW`_dablAR z9Ua<@Z>)@CHQXRee;Y?S*)4B7|HoWHi4}{lGH^n{DO3MZBtF;w$WjQYgaSTTr^x^C z)T!8CPV-%9Z^+kW-0MC3U+YK}l;$(j!h8hCHRk^Sl{E5Sws(A$QK|~#(ekfh1q0Y_ zOt7i)5P$z4{OPA{pbHClKcF9p_&=hg00N@kW<57|BBsmtugL{CMkrdicP}jer)(@& z{y*RTq>91*Ln(aT!s(3fj?n*qTgfm{FQ>jWT*d!w>-7R_O=uxt)eroa!~)jeX$^Db zUhqHS1$>UYBfaG{=>h#ecxHmMBi%h*8-Y6h56D$Y_|tlxGw+lCLydn!*!c!VvKPR| VTJiw>+XDn7B_=Og{lhTu{{jB^XlDQb literal 0 HcmV?d00001 diff --git a/doc/devel/gitwash/branch_list_compare.png b/doc/devel/gitwash/branch_list_compare.png new file mode 100644 index 0000000000000000000000000000000000000000..336afa3746040f118c073e7d02a5843bc8eed152 GIT binary patch literal 10679 zcmZv?1yCKq)-{R*_uw8vu;A_z2pSv??(XjHF2UXXpa*w2!QI^ izypo z9TfuN3xwp)AIfgar)%zBn9gqxmkVr?32fFL5d69HSQ=(!0be#D9fru@BU-=YHcJ8I zwQ#Xjau{0kQV}SCXKGDHM5YbOUAH;FUOcPx{lOKwje) zdhz9sIqhAiwNs_JPnZf^ 2Q&cS-)s3mm&rE6fKp;I6_``dps-JZ92 znl3v%Q;G&wOxiQrhxzSqwt3oqLh38$66eSFH8br`I_E7v7tkfZl%ulot#4JmTJHd* zH_lhoGOWuoh7Moz CDFBf(9tjF%2##%R|sVZyTE7o5F5(7vCn* 9%l|>O%0U@%7Twy?Z?OA-obO&^Z*#g3?xEW%vNKgZt57FD3`AhaG&f z41i}7kP5yh87W-ZF)D|*AFBObR|)SYKyFjwiFYG~xD$Q9AZ*TU|ElPgN7{_$HPpk} z`89w4Rl1cNoYAc)ya!xejvr=Oh!rPCNTz+^SPL(D-F&)ZW!jEO}%l8MpRioAo#(2tH zH)B@W%YUusKq*THoQK9Cl&MCv2=+rvGiBn)=Cs%9OvXgIAp?$mfGoV k6vVqc)m1?Ba%aR8ryhqq IU)QA0IgC-o2dpK ShLK4AjT%HKx{(c_Ap$q)Xlw&|M=jhi!IQ+wZlv`=AVoky7OH(aXxWDO{9qoU6 zjeQCL;6=2LB3_B6AvKw!sK-BsG!y*m1KaxyjXMA8Nun7!e>nrvM1YeopMn*iVSsXo z{8I1Dryt@SeMJ3a!(6sYCV$F*z>Tm!?-}};f*kjwyQo(|{-f>E4v~>~^9?W*ZH@B9 ze#~XJGznUM5jmW3l|m9%=x0Zyu`w2?Rhqq5){hlyK2g1ATc#CCcPJmYz@V6atb6VY z-)8cyr*m!m$_viJm2AUT_0u=Uk OJs3NW%XI=7PSp{s-oSCGu(ix8bFDoTq*9?e&>L zYP)u()%jSkQ0Gwq;Ukc`Hkh@ Q>^yE|-M)ST;Q zXng0W+v||J7CP)x2dKe0p=ipLYW#R9E!g_cP-MO5#@&995QQZroNonnevJFRl6mv+ z47^hd>%*I<7^d_y?q0YX=a%9IBfmF{h=1MNeCe4A4Jw_l1%Fieui}SWR9g)heJ4f| zqRcRhwK2GN$$j~0JdLBHJ(`WKxatL)l0QZ0SWEtpB30nRsU4oozFJXpqVn14s{P6v zDXV~$+MN3Ls@<9~QL}PO{M9aKN;!POuBUY3;G|rX{8yB~gE;hn4n1Dos^y=-4CwFQ zIs1P`TcLj-EwaQy@b#99lDVTn^_>J=(1T11HA87Wz<>=Rf+pS!#;Wn@TJ6#P7WI#9 za{`>wS+3+3s?Tt>@RV7%d5KI82J-PtJpXZ%US8C@W;+27s= W 3XmPW&StQvzpN@P_Oliu!eJgg-GVR-wN-#BZIPHxWvB#*UW4lqoj zH76i9pA4iT8$_gvMZa81lk}%w6@59skMjTI=T1FnC<34 2JwP-g3^(hqzF^iWB7 z|Ll<>(kPO_%CDi;D`+30V?&*};IU3~D@><*eOU+m$?iZ$&)bzRLlIdxL*AnnZ+w^7 z%IndyirjzDmzv{Po#7^cp6pmN>9ilB#1IY}@vlF~R$|cT*JPJu$bCtsZ*BaXo!XQD zD&u{;@e?tif6K&zW(J9!aFpCPl!x)9#7z2mXv44e75ZLcZ=CZ5tq@6CrQ$TLJQvO4 zdzprjaOU=?10popw}IbxA1)PF!PYI`8B(_^%O5>%VNn6i;Z`%SC^l9cNM^SUhxOtf z^dEo0Z>_!z-#K*S36o|cisar@DqH*%#4&Z3et4Mc;ri;liE&-Ma#Va@j6|%#kkEUj zB^sBCF*KRH0Bgk0Kf!S z=; Jx3rA zmRDC6v*mY4w <- ztv98l*PmSP7kyqggA9D=)wbxkeX~(Tu?@SM3mNWKmd-s7sp+5_&_P{whL>(H>1I?< zB;;nlqKdx(6Q V?G}-&x7zjP!Jdx th2bhrc =YIKYr3woRzUZAX^V7*CqO$%8rnf3>vl~zvd$)JU^ zFtSf>4~;A;FD3BuL*;gxT}}BeowD>dnOtYZfM4V<+typ7i^lp70R5Wv2w?M~eXrC> z+!Lp#I=5SX{F?hZ;mGIs4E^DWeg6q0=Ja-PfsDB^df%3ayi1dGYCEhj8w_Es<`8zv zah>-tLIZbGBkHcd>dfqcnc96PTsp4g8RNQg!Wro4)Z*NT_2&3uT0y9p`|pr=Jk8{> zuBe~*D%8C$Dvmk6^C)++e`E!{=Yyv%1=NV9ZK({hIVY`a`wMEWI^i~vl$~$oKm2>Y z*I=3*wfPU93AlfQVr|kooOsHbEA2Bj!iBr?E^F$m_f4@wj);8m=5RQsaE>_I3M#SL zDfgh~(S4tTEqE du)M;4cdc&!5$V>WUg zPOzHYZ-m2= SW%}N6jyY zj@m?hC-+i7fl;xg&7b}rKpO?&qqSB?ugba3W=gO6L;P7qjJh#zyHFZ)Q06oW%jA4# z=>}6Ri|OKyi3ciNHAr|Iv~0Z6fc&*8Sh&Wc!bNK}H>kMR+%HUmaus8#S=e-^ChOO$ zHdZua9O@oOQ}c6pBx7eK*Xc9RMcI=x9O i;;vfjFV~wx+?*^Wd?ceeWa2#FVb$!d27t4w)3d k70dy^=S^M@%d}VX)hT_Mq*R# zv=n0qL # gj9g0h?K0 4Q0x0lRK4JP89gm$IbScu1T?LI7IHj7vN;S@+;2B^zU{BUI%TNE`vdDi`8) znHA^$=GpfF_r`;4Z=yBb^47!>oh8v^sIi3Y$A_4(jrNEuOcg2MTJ97Eq0P%$#@>Wh zSLhBEu*Urb9tG*k1sm;tEib4%cg~FI;W^%}Dd7(bE^J5gZ=tn!Bdeg&Y7?S0l8mk- zJ$U=H1e~@0yR#(`Bjs81_qT |!pz&5F#E#-oy6ptC zS$~^*pHp!bl1|7R_qj64l2@`Nx0pK)c{rh$c|uSm=E+Tbd&_uEYhX`p%XZKFJyzD9 z;1brhp&>hr4K|I|*Z%=&z0$zDpQ_tig=E8$Y`g!MW8HAC5Z&H+C|X9-93H+YcoFEi z_w;JE{P#qrR3k7(%+cKGC&$#Q+<@3WP7e31AXeay-i3~8=k++RdW{~WOB*o&Fm>oe zh0?U!CVWyY;tcRi(1Pfb0VD-u3R>qOCowy&@4Z!lxp?7fw;Icg&ZteSIBm&Sf?{=c zI{$jV+~i0%Qp#=W%0(GhKT`FNLPmE@Ei`;h<`nczI~G~32d(w8(z+_-rwuAq^NB6b zWB#?(m6N5R{*=c~z??6%2%lX21UD6v)4Wds!RiArUVQD?LG*2C`Q7D=S^#`%B0hfq z8WVG7utB1^HlhN$iH*Pe`EMHh!d+&!H*&>(oyE3hQm0?%?)be!XG8Dp>G~1BJ>2Fl z0)?nLO{XQPB=lB)bY`SRt)oXB-$`SYgBB1GlCBd&5Y0(Z;nHfS9;4)V+>S|wQ&J9Y zrTK(mB@Y59=il=~h|p|+M@vku)jc?t56*7dwhEtf0@6PNofQB&haJ__71$=qP&=?p zZ+TcGCj{Xt$F6s0NGY=U CCzu?-tn3ZGY+TTB0IB`y*RX_%ihuah%Z S_-QQoi8& zjk|XJDa=-AZgfwOw#}#sp+uzi_c%v!A|a r>Qd2?H@dFRm eE(F7#X>ZFfH?)ystTC(&5w!Z?N |4^E;I%Xye zzeUbjfN;4_##zAL=y`ARm7HAe`TqIrW6BhXYgo5r;Y<1v)seW2uzG(7<52dh)0*sE zO8Rzcw@O{~kuAg|a&ekwLgtRVM^j|&6#$h13}Gf@uza$-Nh-Vt(y1~$!1CcT2MYv5 zjy#2|#1zdbm{f!d)y1nbv;HF3>#5cz^BrI>HlB1Y4iO+}G1De 33>G zt_qw)2-Y_)P@-l>EWwP0-O5QR54ns86j)nE)EN7$&dUlB2}x2~nr}bVa@UY5=r?rk z2SekvznotV{7&lgKqhoL0R(=B5P1BX0Bd-fUCTEYzFk7`MJRT=EWdp FIpLP0ykhuDmC!a| zfI}>y+$*4*p-;n?IE&$>p6BI-Pi=U_-ji>isOQ@L?&m^wkCN{@r)$R>BC&Lr3uYV5 z;8-yWQ+80PU*rWwZSBo@tUj?|0<&a^?`Y*pyxg6FglrUd^;Y8@y-!3_=KWQFYN67^ zCRcZR6AS*s0iJ t-m-a}cK_#PoW7Nz)Ay8k+9q}Ix#Sm)Z)}rNeR7j2SkrMJQ#HT*avv)e z8g^ABA~JI6>XxY10no~QNzsZU;O@g?X?=;@vg;AS$zVEulf`%SRF3O3of~^F9H#Ic z_eqNt!2jo@r7rDZPivF~BIF}f>?I#Bde9Ky;hPH=6gCQBD%mu&u#=kkQhcO+weyb| zOy;@-_1smmIY-W!(?NzF7_fg$y}{3A=2!*jnUkTHXwgBpj*_ZELz!cq3JLC|x@(md zG0^31hmLL*(_f^e){ckd)(0D5Y->fs#ZsQ31+kaHPdPF}6`wF*n}4}noG+CbVJ}G@ zOu?NX(t8<`s5PZ>lbU`|tz`L_G_ia_yq2&Noyp<(-F3EXyG!D5VDPz{?KqUf$QQmm z&U-$tfKPR>H8nO{&ve716yJ(5?dOc~mN`)a$!$?)Oe$`&&C4(z$~y-xc_J18#VmSP zJIK*9xp$GK=YgzCZ;`>M#77N7t=H-gSK?gTnu-tJl#fBIf6rDXZM6HZtosfOJum+D zG6$*R)Vd0;PV$CBm+xO(=Gkc^+k9nhLiQFW&GvHo#%v)_#@H!$5}0sEY6vARaIK>u z^k*^d#M2fhm+6?)_UdmJ3B?c1?v(3|opNi@QZnXM0S_WhXDiq<#d&%uV};^-@X!!v ztl=ts79qtVz+K&o?cC7kdu^aVrhu!!;NTfE1eTRHxQ(>3FjdV%i}2SJ2;wZ=4o-o9 zHZ5|)SifHYVi`?(>use~KOS~(BWOiK4Ad9G%$A8R(o=_T3D&t CXIAJ*f&!OxV$6gb1)NEC-fi z@E;_s+EF8=bY$kQI;=|dEHGqZovr+GF@YV=HvA~WB%&_)LhDFHc>>Zz#ywOf=9?mA zA$nZO4;$;V<_P>q7Bl-5w_@3>LFXsy_Sd_G=AH!nRZfzyJl`BzrbLs=nG#Em}K_aKa~ zbdNGR+G$=db%N00HfxC}1ZksJ!``GNTJU$)k=J$71CM}4whGL_Nj4jyp!n54d{ JhYDK4ig(x_Nor-BkNhiM^I=KngWJXut NHMEtdl)@+ousw(9^==1esi3MREC8g+v!Ru73ef 6N$6vpz {8KocDN zJaD+P#dFvo%yqh4Ze%lJbS8aXaKq%(V`R1HRrWxz-WvT*CBhrJW#jT2dx_BfWGe34 zA$ZXc=DY=>vdX1^W)5{WRsY3NT9D1}J^Ou!-&9+DIbnGIvyee7LlDEVSc*W_)PCic zN@Ou nG*i)aCOm&(0_0*3FvD5nF#L`%(3zqY7~ z>aM+#04d}=>jT~!v3&NoPj-ob5gbLgQ8BZ&Y~ ^kP(k0APR6I4 % zaj|e5g@R>&IA@uY=Zn0NJ@E*GWuedp>mzn98GYoU|AS0X^B#mGCmmq?Ompcc>5z}KFVN3i5=U#$u5BQVQ90Qh zE02OgGMoQdqQswbs?dn_mumIbr%nZBpJ)6Pwgm@QDb1?|hV5hHj22rrE{3^~yi+|f z=W3(JtMjFW24cwMokVu~t*h$%`ug9pf#-jhhok9qyMkpARO1^BFhdvu@v*drI7b!? zQ|LeVk%oZ4z%n54j}eO`6N3-{fDHzNajB-}*wbf*Rc#p!Y^UwA3BCChOdhVv1|F*j z_*9U_o?~{`+HQ#+jnOhx=}jJ2Ct8ly5?SZ-zK<_gA nW<)!tK>vI=%06m#^3U`glor28@=!9>AR zL=DdxO8h}WQ_+mEC;(;keY;%C+F@&2Sm#czxj@69AzQDzccEoP&)D}4r!&1Nvqjh0 zifK8h&5it=ZX*AgKLLN90=4dgvFHiUzQFl@2lTK!wRk|4?r)81{F|b!7eys4YvW5? z60MkNX0d%>+e^yp!r8z{(z?drbZYa3c@=rAHQ`|m%7@znS(PlP!QRpCp0Qa*25gYG zJcpHNRwWZd36E>PeESzy!(8 jBK&%9arj(<(+ 0aa9mIP#MM?hc-nevf#oN9`OMaZHiA9L#DJJx!4&&Zj`ZWBC39LPkxQAGHjY#* zbUM?rtF^!2cLKxQCRz-J)$eAq1o5)v*Vt$F&^%iISx2OQBteOOzW$hd=A`E2kd9?= zmbhQ GTU#e @|R}!%$q)n20V296AKe%U{YO<5d}Jt$Cbw41fEj`MMw#g z?T(JgRQ;<`A`>r`jL_sjAb~vAWC2;@adePZUDzR7EcBN=M<}b2&7?kJ_fAhGEEcyd zbIiI8ydK^A&cT2*B@4zaG D|=_yq`sC?r%jMVYy5TYmAm2G^E4s;(2S9yuF?RL6`Ng)$Gix% kH7&+WTRnT$Bt`A41UGtra*kvI;^j?d(5Z$8_$% )Fbdf=6qp`r}xg zQD?l9fN}h(9L05Bn7;G?k=*hA`;2Reqq+F}o<8*DV(^7KK{U?2f1sLKc*_f}1JDT> z*+#5EC9heO%Hvx)h(v9~mjh?2$eT;5;ksP~yg`I;CUe4g{G$z>HuT#1z(|+jL!g9q zQ%(wbQj=)lYz~jgS^$oovl#fG)*$I9MAe89DIGCKZ+Y~1h*0Z2UTOMkoRt(l m2T~T6-GE`s>!5y} e4KAKPue8Z71hpX@2u+3>a%wkI+AGJK*yw0lz-gK!c8Ya{NwnJy}rN?PgW~ z(X`&g%3yJU{^}wv0>6B%Gpf>F(8begTxYT-Tv6XH7dEs^dRkmnOBagkl8wNt6Mqt7 zX^`CvKe?HDb)XHnpQ2(>f%8b%s3fDM$P($Kk5{eMikzd*^K8ZVz>Fu9#CR&cXVt@1 zPI_@DvkT%r+P7$~lW`H3GwLjzRIQOJMgdwQ@ERRy-&bzJQw%JZ6W3T!(HPTx7l^-B zaE2&0M(#H=Gh-b1Au4IU!CZ@+7~Zyz1r-mFw+j{rT7ljnlQUuXxSx6dR1*x|VuY$^ zC(FFlNb+%0{|IoLs?+8*#&(JNL3SYL2)k9US=JvmBwuY cHr0Q8%(#9okZ)Lg2U2mp5$*q5rRP zCA{jtl9K;9!js90iZT9I6&Qbj_>bL#C;R90k2d=s!{rLkal+Ky`39rH=aj7ZO3in& z+u?i350{76m@Ss0fd9BR(@8GC{Qnp5|0(f*48MP>{;TN!5%Dx9zWO4Wm5XA3Bf 1.7 you can ensure that the link is correctly set by using the +``--set-upstream`` option:: + + git push --set-upstream origin my-new-feature + +From now on git_ will know that ``my-new-feature`` is related to the +``my-new-feature`` branch in the github_ repo. + +The editing workflow +==================== + +Overview +-------- + +:: + + # hack hack + git add my_new_file + git commit -am 'NF - some message' + git push + +In more detail +-------------- + +#. Make some changes +#. See which files have changed with ``git status`` (see `git status`_). + You'll see a listing like this one:: + + # On branch ny-new-feature + # Changed but not updated: + # (use "git add ..." to update what will be committed) + # (use "git checkout -- ..." to discard changes in working directory) + # + # modified: README + # + # Untracked files: + # (use "git add ..." to include in what will be committed) + # + # INSTALL + no changes added to commit (use "git add" and/or "git commit -a") + +#. Check what the actual changes are with ``git diff`` (`git diff`_). +#. Add any new files to version control ``git add new_file_name`` (see + `git add`_). +#. To commit all modified files into the local copy of your repo,, do + ``git commit -am 'A commit message'``. Note the ``-am`` options to + ``commit``. The ``m`` flag just signals that you're going to type a + message on the command line. The ``a`` flag |emdash| you can just take on + faith |emdash| or see `why the -a flag?`_ |emdash| and the helpful use-case + description in the `tangled working copy problem`_. The `git commit`_ manual + page might also be useful. +#. To push the changes up to your forked repo on github_, do a ``git + push`` (see `git push`). + +Asking for code review +====================== + +#. Go to your repo URL |emdash| e.g. ``http://github.com/your-user-name/matplotlib``. +#. Click on the *Branch list* button: + + .. image:: branch_list.png + +#. Click on the *Compare* button for your feature branch |emdash| here ``my-new-feature``: + + .. image:: branch_list_compare.png + +#. If asked, select the *base* and *comparison* branch names you want to + compare. Usually these will be ``master`` and ``my-new-feature`` + (where that is your feature branch name). +#. At this point you should get a nice summary of the changes. Copy the + URL for this, and post it to the `matplotlib mailing list`_, asking for + review. The URL will look something like: + ``http://github.com/your-user-name/matplotlib/compare/master...my-new-feature``. + There's an example at + http://github.com/matthew-brett/nipy/compare/master...find-install-data + See: http://github.com/blog/612-introducing-github-compare-view for + more detail. + +The generated comparison, is between your feature branch +``my-new-feature``, and the place in ``master`` from which you branched +``my-new-feature``. In other words, you can keep updating ``master`` +without interfering with the output from the comparison. More detail? +Note the three dots in the URL above (``master...my-new-feature``) and +see :ref:`dot2-dot3`. + +Asking for your changes to be merged with the main repo +======================================================= + +When you are ready to ask for the merge of your code: + +#. Go to the URL of your forked repo, say + ``http://github.com/your-user-name/matplotlib.git``. +#. Click on the 'Pull request' button: + + .. image:: pull_button.png + + Enter a message; we suggest you select only ``matplotlib`` as the + recipient. The message will go to the `matplotlib mailing list`_. Please + feel free to add others from the list as you like. + +Merging from trunk +================== + +This updates your code from the upstream `matplotlib github`_ repo. + +Overview +-------- + +:: + + # go to your master branch + git checkout master + # pull changes from github + git fetch upstream + # merge from upstream + git merge upstream/master + +In detail +--------- + +We suggest that you do this only for your ``master`` branch, and leave +your 'feature' branches unmerged, to keep their history as clean as +possible. This makes code review easier:: + + git checkout master + +Make sure you have done :ref:`linking-to-upstream`. + +Merge the upstream code into your current development by first pulling +the upstream repo to a copy on your local machine:: + + git fetch upstream + +then merging into your current branch:: + + git merge upstream/master + +Deleting a branch on github_ +============================ + +:: + + git checkout master + # delete branch locally + git branch -D my-unwanted-branch + # delete branch on github + git push origin :my-unwanted-branch + +(Note the colon ``:`` before ``test-branch``. See also: +http://github.com/guides/remove-a-remote-branch + +Several people sharing a single repository +========================================== + +If you want to work on some stuff with other people, where you are all +committing into the same repository, or even the same branch, then just +share it via github_. + +First fork matplotlib into your account, as from :ref:`forking`. + +Then, go to your forked repository github page, say +``http://github.com/your-user-name/matplotlib`` + +Click on the 'Admin' button, and add anyone else to the repo as a +collaborator: + + .. image:: pull_button.png + +Now all those people can do:: + + git clone git@githhub.com:your-user-name/matplotlib.git + +Remember that links starting with ``git@`` use the ssh protocol and are +read-write; links starting with ``git://`` are read-only. + +Your collaborators can then commit directly into that repo with the +usual:: + + git commit -am 'ENH - much better code' + git push origin master # pushes directly into your repo + +Exploring your repository +========================= + +To see a graphical representation of the repository branches and +commits:: + + gitk --all + +To see a linear list of commits for this branch:: + + git log + +You can also look at the `network graph visualizer`_ for your github_ +repo. + +.. include:: links.inc diff --git a/doc/devel/gitwash/dot2_dot3.rst b/doc/devel/gitwash/dot2_dot3.rst new file mode 100644 index 000000000000..7759e2e60d68 --- /dev/null +++ b/doc/devel/gitwash/dot2_dot3.rst @@ -0,0 +1,28 @@ +.. _dot2-dot3: + +======================================== + Two and three dots in difference specs +======================================== + +Thanks to Yarik Halchenko for this explanation. + +Imagine a series of commits A, B, C, D... Imagine that there are two +branches, *topic* and *master*. You branched *topic* off *master* when +*master* was at commit 'E'. The graph of the commits looks like this:: + + + A---B---C topic + / + D---E---F---G master + +Then:: + + git diff master..topic + +will output the difference from G to C (i.e. with effects of F and G), +while:: + + git diff master...topic + +would output just differences in the topic branch (i.e. only A, B, and +C). diff --git a/doc/devel/gitwash/following_latest.rst b/doc/devel/gitwash/following_latest.rst new file mode 100644 index 000000000000..4419abd82d69 --- /dev/null +++ b/doc/devel/gitwash/following_latest.rst @@ -0,0 +1,36 @@ +.. _following-latest: + +============================= + Following the latest source +============================= + +These are the instructions if you just want to follow the latest +*matplotlib* source, but you don't need to do any development for now. + +The steps are: + +* :ref:`install-git` +* get local copy of the git repository from github_ +* update local copy from time to time + +Get the local copy of the code +============================== + +From the command line:: + + git clone git://github.com/matplotlib/matplotlib.git + +You now have a copy of the code tree in the new ``matplotlib`` directory. + +Updating the code +================= + +From time to time you may want to pull down the latest code. Do this with:: + + cd matplotlib + git pull + +The tree in ``matplotlib`` will now have the latest changes from the initial +repository. + +.. include:: links.inc diff --git a/doc/devel/gitwash/forking_button.png b/doc/devel/gitwash/forking_button.png new file mode 100644 index 0000000000000000000000000000000000000000..d0e04134d4d086d0c78c45188848c4a0b71b157d GIT binary patch literal 13092 zcmdtJQ*dVA6E+w%*vbjfrh*qBoc%6Wg}U2`08}+qUg|^ZS1{=jPP8KNoxNUiI|q zs?}Ays@L;$hbt*aA;RIofq;M@%1Dc=fPjGN|Fbn * zTHgUM)Ne)9WC0l7en!F`(4=#u!e##CAt(uPa59|jqfeXP>7H)$(t~j%>9?t!Zl%+1 zQ(n$T6ZEpS7(L)pet;g-9he0eusJ;IV6MJ@HV}dv3=AyGrIqYIi@+aG+%M4{F<>%t z?|;xg0O|h|=qZO<|D!6eU8S+n_6z=JW1B*BJ1^Av;UOe3F|l;<;X1@K-w;9Q*-S}B zRUs>D;*DpUn-n#d!xjVpl8dXkeZI$AhpwG7CpVV~r8+m)u(hxwm*t2%iSEslwYH9x zZab-kD)edkM9towQBP0r3pcwn)Pp8o8e#*-2Q&B`*EB{
6durO|K`|Fo!xa zKHgvPw=3dsJQcn@e$IKbyB3?t0OEZ=-xX!&D!4s}&zTOm+?O4wi+gc}VJg`+!O?3k zHDbn^HhJW!p|Kd L@A!kkE@DB13Md9_-*-TJg(KN?{+#IU)R96RIT;lbNv zw;sadd<5frA;88~- 3{E?j0{t?nH`0$!O5LYwiq9+F6NIiX? zVR^m2c|M%|n6nwB)nuEl#Ldp$peM&=zexp_g0NrUtB$WqwA8sy{Ap+iU3D<^rl((w zhK>$DG x*M*gEiIAH@ZkeVY^}u)BaQgvg*%4RZwxotW}M1KNJCv6U5io z7Y?(LA2X=y^;WceCMPWV=V@s! b;q5LPaMkjGHk6$Ikkc3px{OQeQ^Y-4^Vg(MH z1;X3IsjAUoibXaK;;X1*Zj=7(mSM+Rsv8@z{}&NEr47ZfS)hniJCVTV7*I7JD2SG@ zN&_8 JTBoXKdi@QML>Q+6EMf)9ROrSiX0zFre)w5tGngm8Jb= zYvF0-dtX?(Dkf&3uRh_;pwbd^Br4IKrQzq*cru+PL@rq-f{2Jn8ix(mN~bF4>-+O{ z?6lxJ0yHuahL^+N&L=#bCR^>NBBRZe4Z&peC;Fa-U*%Ry2rHfE5FL1rJp<{v1>QrH zUUfGxP(JL~{TTyBN1pe_o>pij(bkcjhTZ|{XH#kShty`5`XQ_J{c+-pTxaYk`&3 3MoajcDBan2lc@KN9%cwz8O&G 7x&AkSo{p;(q(eWl!W};Y zE@?R4sbyQ3I&K1LdRVZ*-|3=(kxy5H<#IP(a&(nQVWTFCr8z^f^MXTd^*o|WM5coM zQu}Ycs>Gq!TiJmR7UBxSU*eJJLOuG_rG97@7rOlDHq)Cufu<# |Z4eU6DA?#Y} zhz+MR0&mg?L_(>&?of%4Z-XcVz?@6H!}V)_J`ixDNJmS34wo41752EHTlU=iwSL(t z$C??w>}gkRG8xJGo%ff!^$gmp(S*y1oc00dm9iwtm!Rv&<>F f_d(I-s(@HQH@JZ4yMZW zQjs>jHuQePj3E-xx#d)%R({Es>ke2+Lti0ON4{3T@yj|ufAM-#XyL4mT`9t`jp>j$ za3q2@Nw_^8a-Jb2Y=6p bd*b zhp8kK7)-+hJ1^Cf+>G$z=)O$c<7JS~_$yEQ?P)}=AanMA_o}FL`_!e&${xE@zsBhP z!i0uQxJ?d?!K5(U7<%0X3pd!ZnB3<2e(_K$WKp9yX)~;`bD?+&;La+C)-v7I#Z77+ zg6Z0`Czuo%xjKfThYNg~(3@13 B$m{`)EV-X9S0g9sG)MzvWiz0J%VUS6 zOob%eC8-6|STK=g75BzruSr;$z@5ME^MzYtV|_5E+Ff^FT5$#rq<8+X?>X6`G0wN+ zUxF}{&<~WE#sk#JeEQYA8ceW7hdX1-(LHv=S5nh{ILWQvCknS9N9RUgm&OdN>eJm! zE}20z(^OyQR7c3hmRH6ve;`m-P(5q&v)PZ;<;m(`{y2?1GGBtpB#;2-yP)}fV# f+j@>1$jvMc7yDD{4VI9+{gKL7DQmh9;s?&j>tw|XFRMAFw2J+S9O}8s4x-K zv)E-x4e0MPU$?fjwCwnNT0cyPDy-gUu^KpT?Jbd)$hifjzC#Cwpy9{rM@<`EK~ Kswc{J85O&l8 3?Pt84XbKn(bM`G`+ZOvZc@FEw;jn!d*l@I#~=*5G4~c z@L|NTr}rgOkjm;|^e|<8`DwzXHPkd12AW7h0dH`WhV{T$OqjP|pD7y`8zv+!r(rP` zICMncklJvM@xY`SN<*OEjK|oyZnSVde|zD}n-|ZDBhUx;s9#Vj@n=9QC_q9mBDO&~ z;4?Y#>N0KPF>RR06T#o#U#rcf+{p2AqZK_0=4d*XDGucQ^d?8ZGswr?-F;`0Yg_#N z>C#~xjMnR{H*!JW=2@T)jI!_~)FmOZz&uez;g&ZV53Rlo2@PVWx7QA(=_jfnuSCjI zk|L?@Eo6y;phRQvPCWF7 CR@$iIQ zZ78x5{*KrNvG4C_loRX&)NFuS+Z +>%P4;~3yJlWyD!NmF&tReHvGMTK zJkDp4mDdY9GWl6j-s=9fk*EV(z~+5z3Y_PPc^(H}*`hMQjxj6!C^43srHwhEQ>Fto zkBrJ+m92x#2W-NCaK>U}KF!!F1i&)O-DwA2R|9IJnguj+lF}(#p%(XE#vOC($8acn zaNwYOoqGow4#Cm!=uXPLnl3@{@#M0YLU}x%1s4^O_f`QvUK|Moy>KpQ6=h{3;)e9# zk@|jV(Z=wa3nD7VUId@hZ4X5??sC_evIy!vVwYP`6IopuOu(6$!*R`VHk{7>1$l;k z7YJa~A2>BW=ft=ih5fyMW+>|MygQw531DNK<$|4LQDTrZkq@UtqB3RMC7wz1KnZSz zZ`yhA$HWo5;^^Q%r$&H;U@{m+gOw{w_(@HOJ={W|$l|t|8{=gzuqwovlr8Tg0(Y_P zXat>Vn>t&rN<|veN~oocC0o_6KuMWMRKnkQ6N_EG$TQ;X0Hz_fFgJaB-a8LtD1d#Q zR$Ar^!ytq}%1dD4JWm#rxXTEe9ksdM9fI6Bo!Nkq-hj;1IH~dw9Fc@SRxzwR6F+>L zEifMGTm-9#hnx*Lr!b7%8~w4XI!(OA=% 0`3dCU9`aO^~xpscf&5nSgo+P)Qd**yo6W<0rDZD~k=PlvGj9ZA;^NcCeG zd#cgKOnaivcWp;#h*9njUsHxX7FmzhxiXeq4+3deLlSOHAd7vS<`@W5+lj`*QnhO* zj)y*MCiZxJzdCM)6&5Y0bE09 s`7YIp%gFBt&BG zD>`(Z4X;Fs47QLACqbjyS*v4vQ{|B+lFSrVWJkWFIUu 3`s^WDse3ZIb2h#qzN0ko8NpBOx7gdntpL65)#|ch_tF<%MB@Ug z#a}*kC7tLr`bI}Y^c_uR27COw%S0_Ks0|Dc!(TyR;bLKh+}zyMeRHtAhleK)gwqd@ zd7A5rb=2Q@HxvVgUWq#*)9DmINDFISoeWL%;Pqf=-B{~vDUi4Xz~1)eE!R;pgN%2l z%#5K`E&~}0`;K#c4Wx0o?Da%q=Jw#wBD>; ng |P_5=oo&-Afc4_08J7XU6hk!P+X-+&i=! zHkt~N=6{-^a;H5I`PlX~L>c)ymr<=D`v_4|c)5WYv@s1!`0LO+oM=JXp11;_9PVQZBD0I#-RFXy^ Lh#1F`Tee zSus=Jdg*4>z-;&vm-;#h1{RUEm7==jD3dEdxGvP>#F}9K)wDj+B(AR#9$dY-V)bqw zlITX#5eAh1jb{~&rBf~dSv(D>n6^sp+ni6NY!9#GWT-4sqGfWs<5PLP&|A?Hux_Ue zR{!g-V@dg)g-aR9=Jg>!gIxb(ghSZw@X*RAk&dLaDm$P9=Zt_50ZM={XZ2pCwL@=B zgRixJK3ZpdJiklnJL0i;fJD|yUQSL-T3R}MWzUc<@b>&~w}Fz? 1V-~CUOv5kN$Ll>Mmk)_|gQfQj4x1ptUb|B?$kPZqGj>T4H(4{I2J7VZ zp5g53!PSu^%P;*Du4RZ=F#3tX$G>? N5Kw{tUhSBZ)Qi9nmtbDJHVAnI;t6L|7sxx2o&ONnr|put|njA^Qc5hlQf z`nq^eU%jD5FcU6j4|YQ<`kP(Eu5jfuI5pVT7T&7(7^6~`cZlM>Zd-Gy=ry0-L?38p z5b@QRY9(XSCZxNssTd&gR}G<*jTA661I+Z3T5go=pJb_0R2^gv>$j4T)Y?jmEzE-I zO$Ooo)d-9FD3K#gg9fD22e*HtjGj%6Z*L~p+Ft13=xPxZDQiUj$njN#F86x%Qq!1E zj%;Q^Xg0Ut{bTFjD#YL~6}Xf%abeH0BHMOA0Q+DzG 9jT^Xtf|nZ z9#C TYPCD7)@oQ8Y_kuQ%WxQVxdLn@#qr0KS6SecK$A9s*dE~(W;;2cmwZL)y z$ZU2V)G*%AVk@Nzii|b^mueFa1 sWe!+LsngL&r#>xv!HS>^AJx z;A&T>!NK<2<69ToO^O?VYnX8EPN!x2KhlWm)03_0e=LuF0wG_XF*Mr8cf7_gKU{l+ z?ufq67?$CDGQ^gDWD$VP$8(o)G`h mR+hzOmndekEM6oZybt51mKZC=fJzy5p_F`x%V|boEcv z=dqE`Ng)u=4eyhWg#J(qek+!b7#du08R_^`CQ->may*_UW%+mX@!?lz#~Szd-u@*2 z`(yOHvSVoT(a{n)rio*m3p?(kos*|PW_Fm6SZ8BMtU{#UlCW8qhxFQ-HKyOcAR6Js zHtOK+&|w{XIGFa zF^R_bDEZgHF@{{h6GnYPd!Yl(WHq+K$`8IaAbJ=IBP~uSbUv$rx=263+xI6mq4S9* z4cwA(|J6kZ(PAa}!5bGN$^b>NpX8jj(bSDqPy!+Q#r~Jd+}?7N8s71o;AH(xJ7&w+ zH@{SgaekznRb>8THIp NQ$t`RF=iH8@+qB?r}t_`#{)$1>)oF~U{Qig2XjGneZE zM0AyMHyx`diaS2;x5A|3ZnofTB6l06n$HOcpiTb6AMfgf$jSLLW|mN(f;y5GwmNF! z=Y`=HI1)v~ohmg3Gme#G1b+kr;@fWL@_T=MRDv&+jvD|?_enf1$3@r_xo;+Bdb_;7 zpw8{U0O(lyQ$T-5a?GH`RbxTTt_0uFb{>h9G-n`BW6O^P)L7`6vd_+M_u9+PE$1A* zC}*Ir=00x5PcP#^!dD1fqlyQ*luz`;A!<>kfz2c46Jp!v9fJdrKEl*4EbEDrwD7Fe%T%C?cj2&^WXT0M3H^zHc1_7jstE=A4bYrq7pUzIQ4 z_$Ce);M$wK?=4ER%GfC8+=ZMFSOqdX(l&^b_36!0k%hpd1{cZEC~-$}wml7T6sYCd zY(L$c-Y`YwGQ;+-F9xcd%GL(ON5UUaP-e=FQ^DP}CRr4p?%k|^u?NMt Vew@sk@hAXIiUI-Qdp)v&;_QaAcG zQjk3`sN8l&(EeeA@pwBD7Jstdr#X_KBbmVhK%>*l9t59`CLP4EYfcK=uKoH6-og0? zTd%Bv@sXeN?>jilDjqdIUjF;O;%+>Wzi6i)9;)t=>G7)BZo8Bc7ytc5B8;n>E&Ju_ ziSZBK7y%jKzqiP YK7vYFWwdoWKQreAoP3CaW*gMHL~BpN9V4rr1#Ih#2r3f z&ppJ`+wvRPyN4=&ht`t0Y4-kPnfvJwGEgoE72``7qP@L4QT?g(ObCv=X1o!>6ZD9W z`mAIDWpz4MoS3IA7Z1Z};15 r+iJmBhSU*?1s9wx z-)btOIZ`Uk;S 8`2Fm&NA8ruBA$9vt2EnxMF9d^s62SC3#yof+oy5bn}izkI&rM4F0uQ z?2&Jj2^=yb3AEP1sOKCO22vWLf*Wep%%w#A%W|BkyB>MpHKj9a6u6 9S)L>7exMXH%YPYfE`l6Yt8zmdeC|>Y|GXfP(Ux@d4EXl%< zDJ#+bnJ2UG12W!05Xk(!xgv^{I@I43&|~Yr^)7DoKiLz_Ma8Ai`^LT|wqUHU<;asE zvj-s8#&vH#*TALKfA!t40A?Du7zhAfOSzL|6$?R?5B1X1Zh-TVu<`i#k*T(j@p35Y z(a=;>w}_hMd=Y@qiE1K>rxg{FUQ@wxzc)(J%nr47v~o @_Q zKom^>h_>X_4N}W)Xe85@F^C_olzhVF!X5H}D2c`Z7rC76pKOhL$(S-_7#L|y8T8}} zAs=m7doTP$ XQ_1=_p6Wg@x@fV=4aRQuafUpeNLik+y(wfdDR#rlNxj7r{!UJM z3Ts2Akz)FdK`e-6NN+qO%jN!UaJ+_wsPE*PUjYy{l&nUlea5TTo&g!|Y{~xIM9Oqe zYm#UZCo8DQsuWC8DQ{Lr|6&Z-n^(i(y;F9_Nrb=S*)Dn3(QB{tcYdat`C%a z20_P|Z#zJ4dB|P9uaX3xorWuDDTm+|!Q)+bwo2DIXmVAU&^3fczd=+^PL=i|yXa6u z(wEahW)?}q#F_GtefK1$Gl>*~*!LL^Y@~tn=^}v8*^=ZV*4e#D7r6+PXU%q!8F&M@ zVLO@4kH=22o$y;4MU<^C>A|tAIygKQ*_*}PQei`oWHSqDl;4v(Fbmf1ul&`t6A4xm zuazB^X6t0wP*C;DY)*cp9g0+_+rq0o_|xbURVFpsAM#ofw5ObUpxBbkSCc&NET&vF zH&jSlc5|)C&uPn+V9Ob+ztkn*eF-P4G<>7ph7wJsoOzUf*90xAy-|W+V3!YOa)Ug~ zq)yGX_ua6|Pm+~xp{g>i>4AFAsn|Vlq}#!Pl+IW;3bi-3J6a}C7o`< 0UTq?KKey2-?_xy#SJ&IFFk~?Qf*6W`{kin~*Z0&wyy&+ky4@ zTQztcHE4mL&F#saE^ ndN-Pa&|}E>S*BT4#X|EL)<^+tE LMemccd_+83zql}3!~Lp z@q< zaOntNkq4?qn|ww1-;{&+YsNsYE#!|4j- zwBki92sZ4Ub-Nw?j1WV@K6QYxL;Z{~xJ@c$c^@$?S$Y8G;w&L_^O|(L%*q>`BQyVe zk_sVgOcclW!X`N!DST&eD&F}B)5*8A8<`$D`+*Nj{Py2pnZg7-7=b^UrDjCT`)lb& zXSn1f5(bbrJzI7TZskVm-bi^DLw1bwl~$r^a7OcI8lh3Ean~;Ncv&1|*Eb7|?zhUr zf*nSRO@F~vtwZ*j%!p=7rFk@qYU=Qt%A-*W=$cLxVWWEPx_xxefG*D`3U3BXDk9-( zBcz9io9#Y| !PMZP3v zwQNcF1)OK0`YD%F=V66TE@E<_zM+=5D6x625Xr4t>M9QNKBe!^E6${KCcq03f2a^@ zE-~D@MUk%6Nc|(sjuS|Y$~a0(h27Alh7)iKvHd zO|b?{`fOL!y!)GAN23NP)P)!9dK@`MAU6mjwJd<- ?>hGJLU59!`-BE_&u=a%-M6C5!?fkUeZggLI%N)|XVQBra?? zj!30!^7`4&pf9NxC8;3T5sDV(UMK&UdozSHR#bf`{gO-7Sm-kfbQUJ|dNZICClH9K zKW5x{*mZwfk6{FC_w8_Y(o{*5TgTGE7h4yO_R{lbe(uE$6iAk&tmXGZC(^`f{B)#1 z@~YtjW2jcbx9a<{L8EjfHQcJ*4~ysu652m?P&Mti`HIX7u4I;mQJVwo>B6ZYH=35X zl6$OmoihCUx5g#S*y?q0;2^k^W}6A>)*_-*83Cj-Sh?zsse%1-=9An&)XavRp=kCD zzvz>SBuOJcL1SFOi45#uSH!dQN;~$N>r;Pi;;|#Aio6+i#PIuafB62oBkf$Ov{r!S z$g>TL8Ju0so1I#$f0eLG0*!8-7C~a<3!H02?@jr!3@hoO*=G{-ctTF)@BV1u#FuMs z93OKF=Gqeuob`qU0U3OZcAa&)S#A92p7=azu6AM4d?g!N^ g zh9?E7Q;m}T)1#6CR$??3DX7?*M# !JL}^*GBQNPi0HJ) zz3XI+gC@iiu|-8DF)zD%uPyl|U0(#5N>IL~7{sZ=&RWS~%gQYSI|`6#K{~`zdDGa` zLPSB_f@79(;7dP@{?9r&YzpNO%-S<4~OlITI?TqY5<0#xtE^%~NAnR08f^+>uXJ;}tF>e&@r zyn!JUpe&gBQ8b7f?4Ex6PNSpZToKt}0j$gC4lhBAHnC3~eNbpsQ1v_v0^vP~Wc**U z%NM4!`*+BJGIJ}56yaVtyTm!HNZv8&R8V;<&({}a@7k6OTXFEae3o;rFBNukAmul) zog={x`YN56Zrq?a7E^NJus(8(2Am_R?&1*Pz?J)%Z@&UeNd<$gbUD{(QV|Jl3hHfb zIXln0pX(=cqct+Y8+zt9#D}Kp1d35pfT88z3NK?~DH~I0zHu&$Os{FW%p>Xsd?S4=gr^dcGyOI}_h;4uL zc#P|1!>DQ6Bv?ASoeALQiI|J*c69jm)xca0eA+AhYrQs Buyy@%Gcupn1<+ zoxv?TD5|F fhd3Q$*=YJ6-Nku33%8NevUd- z#{Fi1ZTus4rn%orpjDC;ic}YF<~NAf {HCby1wEb({+c0|gg4okNR1 zj%#wJ*MLM|QWP$}ZZCYM@ZIR-iff^EIl+@2748D>d&Iw52yRQ_sDeaw^q^o;>!HEB zvj(@luo}Se2~}Wyx0z>sbS@<%%$$;aB=ZcqD$Y}5jbFVbJGiR<-49zA0l_wY6w#!A zE|yRW4d0wK(1^c`T5AW1Wh)SVE=ge*d5ZC(gBBBXIdGVSP()!U;UbD>Tr4~eWdOMh z9Pr^QbW}BLyNC;*fA5;4DyjgE)V;r}hmB7SEvn+z>~>&{O}U^cBG8R2W(A%PSpQ(Q zrC@BJku7j^>&jhiM|}VO0RN|s_g5ndnSQMS*aeY09?tgJ$DmGTwITJif^+*#^JcA4 z@w uVNSHF}8;*NO_2w!?FM z`pORoPMi{JY!;yoW=&qK{+7fg5NE|Z>8TOe59kj}8CsZrGyI%zN5_5DV7FS2pmc`P z_-Kgy82qUx)QD*u)QUo`Ff%} JiRLH|*)K1bx~go5G+0RRtGjs^Vo|$2BKRB$aNP+>`oAjJOMU!Z%!P z_<)clvgvJ9?nxgBu57x?lSsdjM!TRBrUp?vR2467yN`k5vmyD(TKWdhVN`gd0cU8TDotYxqCpY;vM}U=||mMTr-T*uEkIZ^dCiwexvQfCq<&={<@IkHl?p zk#;dHLIMAI47&6^vZ{ R2KLPa74?acv)bts(ee096kl 5MndSR;7aEJVH zCr}Thfe?(MVVXImvCDoupfXEATMrRh5cE4UNzwnkhgwk maWcH=M0JN zfrpR~tiVUn2=Zn0(R=m&&DwQu5p3+y$?7WP@U%hCN3=f6efcoU6APlo7itW}b};-Q z_-JxsMnPVnn%e{MDzT=9rb5o0-;oP;a5b8N{9v50gAT^w$?XQ+h+aq3nju+(L!se~ zz~?LkyBiB2wQ_hZp_Ez4y--5VO?)_GwoxCX6=fxs07f+e+3q^9jBV8ldo2tL`i@Ga zLyh*#FEI)xnBW|(FMTwixDk+Re-NC^eLIfi@;mw}OV#KVCmL&68B=FAW&dM0v4zJh zZHEY*wH`U4-DsaDu{-;Kt|csJ;769AeCSj@;_eTu+>9g8b94Eikj~s;x$5^?S1AbB zP<=WpmDw}pj@juD;?$vp*!0sf^%+G@i{4~2^#ZZ(9PYYXZl4^wDf8_ofmxo&jcn{? zQ{B?3_Yj6$TL@yI1>SLUQaR=UAH r$hcRNctGnF2DjZO$dFO(Wxc4Eil|qCy~F!fgE^^ znY3|pr$)g%{iCf0UP?L_UlxK2&3KWk{h4Ib_6pKf7Q8N|=jmWy(I5FF@Z#AL&$u*4 z7iZclJ{8CoQ(jQA@>ouE&OepaAI3+Rl-+xl#U6fPO_~%ZE_%r`J|Mv-V+0cD&LmDx zjZQ*?ZZ))$u}&%{e#=r*`$v{CZ5)U%Xln g`>c}o98ZN=6crip-P?ddv_lTQ}jiWYeyBJaCpSx)U(|L8MyT}a$ z5F{kmmr`lF>F`Py+_9&xBCli6`tFiU$U=}%94>8)1*F^Ksww0M-{p?q+#73l@V!&G z&tS5=1C6Ja`+wYzOm?GojH(x@TEgE|%m3!(Jw7`G*IYwAS G0PLfSV-5a*c-i2tmqMV-h`}?-!U4K3V-S%kI07@SHi0wsxOb zrafr{L}$a7Ss|&)n8i=AdCv~n_cxzUnI1Ga%*rLl>hf^73F%*8PdXQ)pZY1J&BJM4 z2k`uzjn8SDj|qDSy7I-CRaBl|&HtOT5fH k_>6W!EI zS?|r{z@%%Ck%S~%hVu# T^*U~M;uUO=w+a^$d^#(do zOl%tU>OyPBdk OB#3ghM~ z)*~4iCi5bHx_L#WUr|^gt->2un|8weH%(d#j{(XoUP~HUD wS^cXvNb#KRXgwzz~zMMg^}BS2jxha(;`PX!%R_dMt%!C2j$Ke*0P; zI`xnlBD> {jf0GkrrOB-IZO}HDPug?{Dk)p z3lV&`Hu$`lgVEcLFqt;`At_xe`zBqx1!*xqQbnFs?E&B2DON@P2sYcRV6^1EUC?-4 zQmTbHNSYj#o<<6&8JSJB+KshSW|{nwefeo67#yQK(NH%Z_dd?%r1LM@J~VPQjTG(E zn3aRbc%Z|l1A@(^EHr$9I>VBagO3gzkjYX--DcTZPBzGbyyEHUwP()iwjQ0)X6Yvl zx!#k064jw&4RfSRkn9+G9S8#MB0iUbl*pOE#XwNgwX1gx{6j9KA~eS0EduV3?w|99 z;!#uTT47^<<`W15sZH5BzPvQo+N^A1f!feA&}m5NX+)d NIakNN=iO7+c6zZ3 zpPWe4TzBfBrk(EYRRthX|Fa|3%t4@gP{*rQdMI-R!(`}|<}^~Z3zSa=OA7MQIygW4 zp?h}GhfiO8@IEZT;+9U_%KwNt{hoo7Nlr@Y?<^}%GP(YLr#ym$8{4qC3;w6R{u5FK z!PNitx%hbVC;!t&|MM6V@zZTP^y^RjHwN-gTm1#-Vc0yAOj;iPe?euM+fWZ59sj5G pI{h~x;ncG$^MAG7Hq;kiGX{lA^2xWLe`7BoG7<{n)uKiL{|CB|K&Joz literal 0 HcmV?d00001 diff --git a/doc/devel/gitwash/forking_hell.rst b/doc/devel/gitwash/forking_hell.rst new file mode 100644 index 000000000000..350d50e7fccf --- /dev/null +++ b/doc/devel/gitwash/forking_hell.rst @@ -0,0 +1,32 @@ +.. _forking: + +========================================== +Making your own copy (fork) of matplotlib +========================================== + +You need to do this only once. The instructions here are very similar +to the instructions at http://help.github.com/forking/ |emdash| please see +that page for more detail. We're repeating some of it here just to give the +specifics for the matplotlib_ project, and to suggest some default names. + +Set up and configure a github_ account +====================================== + +If you don't have a github_ account, go to the github_ page, and make one. + +You then need to configure your account to allow write access |emdash| see +the ``Generating SSH keys`` help on `github help`_. + +Create your own forked copy of matplotlib_ +=========================================== + +#. Log into your github_ account. +#. Go to the matplotlib_ github home at `matplotlib github`_. +#. Click on the *fork* button: + + .. image:: forking_button.png + + Now, after a short pause and some 'Hardcore forking action', you + should find yourself at the home page for your own forked copy of matplotlib_. + +.. include:: links.inc diff --git a/doc/devel/gitwash/git_development.rst b/doc/devel/gitwash/git_development.rst new file mode 100644 index 000000000000..3808ca9fa1c4 --- /dev/null +++ b/doc/devel/gitwash/git_development.rst @@ -0,0 +1,15 @@ +.. _git-development: + +===================== + Git for development +===================== + +Contents: + +.. toctree:: + :maxdepth: 2 + + forking_hell + set_up_fork + configure_git + development_workflow diff --git a/doc/devel/gitwash/git_install.rst b/doc/devel/gitwash/git_install.rst new file mode 100644 index 000000000000..a87224d4e412 --- /dev/null +++ b/doc/devel/gitwash/git_install.rst @@ -0,0 +1,26 @@ +.. _install-git: + +============= + Install git +============= + +Overview +======== + +================ ============= +Debian / Ubuntu ``sudo apt-get install git-core`` +Fedora ``sudo yum install git-core`` +Windows Download and install msysGit_ +OS X Use the git-osx-installer_ +================ ============= + +In detail +========= + +See the git_ page for the most recent information. + +Have a look at the github_ install help pages available from `github help`_ + +There are good instructions here: http://book.git-scm.com/2_installing_git.html + +.. include:: links.inc diff --git a/doc/devel/gitwash/git_intro.rst b/doc/devel/gitwash/git_intro.rst new file mode 100644 index 000000000000..786eb84d5bd3 --- /dev/null +++ b/doc/devel/gitwash/git_intro.rst @@ -0,0 +1,18 @@ +============== + Introduction +============== + +These pages describe a git_ and github_ workflow for the matplotlib_ +project. + +There are several different workflows here, for different ways of +working with *matplotlib*. + +This is not a comprehensive git_ reference, it's just a workflow for our +own project. It's tailored to the github_ hosting service. You may well +find better or quicker ways of getting stuff done with git_, but these +should get you started. + +For general resources for learning git_ see :ref:`git-resources`. + +.. include:: links.inc diff --git a/doc/devel/gitwash/git_links.inc b/doc/devel/gitwash/git_links.inc new file mode 100644 index 000000000000..a679f2d78a36 --- /dev/null +++ b/doc/devel/gitwash/git_links.inc @@ -0,0 +1,54 @@ +.. This (-*- rst -*-) format file contains commonly used link targets + and name substitutions. It may be included in many files, + therefore it should only contain link targets and name + substitutions. Try grepping for "^\.\. _" to find plausible + candidates for this list. + +.. NOTE: reST targets are + __not_case_sensitive__, so only one target definition is needed for + nipy, NIPY, Nipy, etc... + +.. git stuff +.. _git: http://git-scm.com/ +.. _github: http://github.com +.. _github help: http://help.github.com +.. _msysgit: http://code.google.com/p/msysgit/downloads/list +.. _git-osx-installer: http://code.google.com/p/git-osx-installer/downloads/list +.. _subversion: http://subversion.tigris.org/ +.. _git cheat sheet: http://github.com/guides/git-cheat-sheet +.. _pro git book: http://progit.org/ +.. _git svn crash course: http://git-scm.com/course/svn.html +.. _learn.github: http://learn.github.com/ +.. _network graph visualizer: http://github.com/blog/39-say-hello-to-the-network-graph-visualizer +.. _git user manual: http://www.kernel.org/pub/software/scm/git/docs/user-manual.html +.. _git tutorial: http://www.kernel.org/pub/software/scm/git/docs/gittutorial.html +.. _git community book: http://book.git-scm.com/ +.. _git ready: http://www.gitready.com/ +.. _git casts: http://www.gitcasts.com/ +.. _Fernando's git page: http://www.fperez.org/py4science/git.html +.. _git magic: http://www-cs-students.stanford.edu/~blynn/gitmagic/index.html +.. _git concepts: http://www.eecs.harvard.edu/~cduan/technical/git/ +.. _git clone: http://www.kernel.org/pub/software/scm/git/docs/git-clone.html +.. _git checkout: http://www.kernel.org/pub/software/scm/git/docs/git-checkout.html +.. _git commit: http://www.kernel.org/pub/software/scm/git/docs/git-commit.html +.. _git push: http://www.kernel.org/pub/software/scm/git/docs/git-push.html +.. _git pull: http://www.kernel.org/pub/software/scm/git/docs/git-pull.html +.. _git add: http://www.kernel.org/pub/software/scm/git/docs/git-add.html +.. _git status: http://www.kernel.org/pub/software/scm/git/docs/git-status.html +.. _git diff: http://www.kernel.org/pub/software/scm/git/docs/git-diff.html +.. _git log: http://www.kernel.org/pub/software/scm/git/docs/git-log.html +.. _git branch: http://www.kernel.org/pub/software/scm/git/docs/git-branch.html +.. _git remote: http://www.kernel.org/pub/software/scm/git/docs/git-remote.html +.. _git config: http://www.kernel.org/pub/software/scm/git/docs/git-config.html +.. _why the -a flag?: http://www.gitready.com/beginner/2009/01/18/the-staging-area.html +.. _git staging area: http://www.gitready.com/beginner/2009/01/18/the-staging-area.html +.. _tangled working copy problem: http://tomayko.com/writings/the-thing-about-git +.. _git management: http://kerneltrap.org/Linux/Git_Management +.. _linux git workflow: http://www.mail-archive.com/dri-devel@lists.sourceforge.net/msg39091.html +.. _git parable: http://tom.preston-werner.com/2009/05/19/the-git-parable.html +.. _git foundation: http://matthew-brett.github.com/pydagogue/foundation.html + +.. other stuff +.. _python: http://www.python.org + +.. |emdash| unicode:: U+02014 diff --git a/doc/devel/gitwash/git_resources.rst b/doc/devel/gitwash/git_resources.rst new file mode 100644 index 000000000000..e081328967a3 --- /dev/null +++ b/doc/devel/gitwash/git_resources.rst @@ -0,0 +1,59 @@ +.. _git-resources: + +================ + git_ resources +================ + +Tutorials and summaries +======================= + +* `github help`_ has an excellent series of how-to guides. +* `learn.github`_ has an excellent series of tutorials +* The `pro git book`_ is a good in-depth book on git. +* A `git cheat sheet`_ is a page giving summaries of common commands. +* The `git user manual`_ +* The `git tutorial`_ +* The `git community book`_ +* `git ready`_ |emdash| a nice series of tutorials +* `git casts`_ |emdash| video snippets giving git how-tos. +* `git magic`_ |emdash| extended introduction with intermediate detail +* The `git parable`_ is an easy read explaining the concepts behind git. +* Our own `git foundation`_ expands on the `git parable`_. +* Fernando Perez' git page |emdash| `Fernando's git page`_ |emdash| many + links and tips +* A good but technical page on `git concepts`_ +* `git svn crash course`_: git_ for those of us used to subversion_ + +Advanced git workflow +===================== + +There are many ways of working with git_; here are some posts on the +rules of thumb that other projects have come up with: + +* Linus Torvalds on `git management`_ +* Linus Torvalds on `linux git workflow`_ . Summary; use the git tools + to make the history of your edits as clean as possible; merge from + upstream edits as little as possible in branches where you are doing + active development. + +Manual pages online +=================== + +You can get these on your own machine with (e.g) ``git help push`` or +(same thing) ``git push --help``, but, for convenience, here are the +online manual pages for some common commands: + +* `git add`_ +* `git branch`_ +* `git checkout`_ +* `git clone`_ +* `git commit`_ +* `git config`_ +* `git diff`_ +* `git log`_ +* `git pull`_ +* `git push`_ +* `git remote`_ +* `git status`_ + +.. include:: links.inc diff --git a/doc/devel/gitwash/index.rst b/doc/devel/gitwash/index.rst new file mode 100644 index 000000000000..48053bc19b71 --- /dev/null +++ b/doc/devel/gitwash/index.rst @@ -0,0 +1,16 @@ +.. _using-git: + +Working with *matplotlib* source code +====================================== + +Contents: + +.. toctree:: + :maxdepth: 2 + + git_intro + git_install + following_latest + patching + git_development + git_resources diff --git a/doc/devel/gitwash/known_projects.inc b/doc/devel/gitwash/known_projects.inc new file mode 100644 index 000000000000..297235287796 --- /dev/null +++ b/doc/devel/gitwash/known_projects.inc @@ -0,0 +1,41 @@ +.. Known projects + +.. PROJECTNAME placeholders +.. _PROJECTNAME: http://neuroimaging.scipy.org +.. _`PROJECTNAME github`: http://github.com/nipy +.. _`PROJECTNAME mailing list`: http://projects.scipy.org/mailman/listinfo/nipy-devel + +.. numpy +.. _numpy: hhttp://numpy.scipy.org +.. _`numpy github`: http://github.com/numpy/numpy +.. _`numpy mailing list`: http://mail.scipy.org/mailman/listinfo/numpy-discussion + +.. scipy +.. _scipy: http://www.scipy.org +.. _`scipy github`: http://github.com/scipy/scipy +.. _`scipy mailing list`: http://mail.scipy.org/mailman/listinfo/scipy-dev + +.. nipy +.. _nipy: http://nipy.org/nipy +.. _`nipy github`: http://github.com/nipy/nipy +.. _`nipy mailing list`: http://mail.scipy.org/mailman/listinfo/nipy-devel + +.. ipython +.. _ipython: http://ipython.scipy.org +.. _`ipython github`: http://github.com/ipython/ipython +.. _`ipython mailing list`: http://mail.scipy.org/mailman/listinfo/IPython-dev + +.. dipy +.. _dipy: http://nipy.org/dipy +.. _`dipy github`: http://github.com/Garyfallidis/dipy +.. _`dipy mailing list`: http://mail.scipy.org/mailman/listinfo/nipy-devel + +.. nibabel +.. _nibabel: http://nipy.org/nibabel +.. _`nibabel github`: http://github.com/nipy/nibabel +.. _`nibabel mailing list`: http://mail.scipy.org/mailman/listinfo/nipy-devel + +.. marsbar +.. _marsbar: http://marsbar.sourceforge.net +.. _`marsbar github`: http://github.com/matthew-brett/marsbar +.. _`MarsBaR mailing list`: https://lists.sourceforge.net/lists/listinfo/marsbar-users diff --git a/doc/devel/gitwash/links.inc b/doc/devel/gitwash/links.inc new file mode 100644 index 000000000000..20f4dcfffd4a --- /dev/null +++ b/doc/devel/gitwash/links.inc @@ -0,0 +1,4 @@ +.. compiling links file +.. include:: known_projects.inc +.. include:: this_project.inc +.. include:: git_links.inc diff --git a/doc/devel/gitwash/patching.rst b/doc/devel/gitwash/patching.rst new file mode 100644 index 000000000000..6f7733125c88 --- /dev/null +++ b/doc/devel/gitwash/patching.rst @@ -0,0 +1,134 @@ +================ + Making a patch +================ + +You've discovered a bug or something else you want to change +in matplotlib_ .. |emdash| excellent! + +You've worked out a way to fix it |emdash| even better! + +You want to tell us about it |emdash| best of all! + +The easiest way is to make a *patch* or set of patches. Here +we explain how. Making a patch is the simplest and quickest, +but if you're going to be doing anything more than simple +quick things, please consider following the +:ref:`git-development` model instead. + +.. _making-patches: + +Making patches +============== + +Overview +-------- + +:: + + # tell git who you are + git config --global user.email you@yourdomain.example.com + git config --global user.name "Your Name Comes Here" + # get the repository if you don't have it + git clone git://github.com/matplotlib/matplotlib.git + # make a branch for your patching + cd matplotlib + git branch the-fix-im-thinking-of + git checkout the-fix-im-thinking-of + # hack, hack, hack + # Tell git about any new files you've made + git add somewhere/tests/test_my_bug.py + # commit work in progress as you go + git commit -am 'BF - added tests for Funny bug' + # hack hack, hack + git commit -am 'BF - added fix for Funny bug' + # make the patch files + git format-patch -M -C master + +Then, send the generated patch files to the `matplotlib +mailing list`_ |emdash| where we will thank you warmly. + +In detail +--------- + +#. Tell git_ who you are so it can label the commits you've + made:: + + git config --global user.email you@yourdomain.example.com + git config --global user.name "Your Name Comes Here" + +#. If you don't already have one, clone a copy of the + matplotlib_ repository:: + + git clone git://github.com/matplotlib/matplotlib.git + cd matplotlib + +#. Make a 'feature branch'. This will be where you work on + your bug fix. It's nice and safe and leaves you with + access to an unmodified copy of the code in the main + branch:: + + git branch the-fix-im-thinking-of + git checkout the-fix-im-thinking-of + +#. Do some edits, and commit them as you go:: + + # hack, hack, hack + # Tell git about any new files you've made + git add somewhere/tests/test_my_bug.py + # commit work in progress as you go + git commit -am 'BF - added tests for Funny bug' + # hack hack, hack + git commit -am 'BF - added fix for Funny bug' + + Note the ``-am`` options to ``commit``. The ``m`` flag just + signals that you're going to type a message on the command + line. The ``a`` flag |emdash| you can just take on faith |emdash| + or see `why the -a flag?`_. + +#. When you have finished, check you have committed all your + changes:: + + git status + +#. Finally, make your commits into patches. You want all the + commits since you branched from the ``master`` branch:: + + git format-patch -M -C master + + You will now have several files named for the commits:: + + 0001-BF-added-tests-for-Funny-bug.patch + 0002-BF-added-fix-for-Funny-bug.patch + + Send these files to the `matplotlib mailing list`_. + +When you are done, to switch back to the main copy of the +code, just return to the ``master`` branch:: + + git checkout master + +Moving from patching to development +=================================== + +If you find you have done some patches, and you have one or +more feature branches, you will probably want to switch to +development mode. You can do this with the repository you +have. + +Fork the matplotlib_ repository on github_ |emdash| :ref:`forking`. +Then:: + + # checkout and refresh master branch from main repo + git checkout master + git pull origin master + # rename pointer to main repository to 'upstream' + git remote rename origin upstream + # point your repo to default read / write to your fork on github + git remote add origin git@github.com:your-user-name/matplotlib.git + # push up any branches you've made and want to keep + git push origin the-fix-im-thinking-of + +Then you can, if you want, follow the +:ref:`development-workflow`. + +.. include:: links.inc diff --git a/doc/devel/gitwash/pull_button.png b/doc/devel/gitwash/pull_button.png new file mode 100644 index 0000000000000000000000000000000000000000..e5031681b97bcc3b323a01653153c8d6bcfb5507 GIT binary patch literal 12893 zcmeIZWm9E4)Gds=ySuwJx^Zu`ad+4_H14o**T&tUad&rjhsND$pmA=WbDsCZTes@o zKX5;+wX%|#q-xC6Olpjo2xUcSWCQ{PFfcG=Ss4ixFfeexzhyl*n7?nUv0tu#Kk$w+ z+Rk8Lh?xI8;9wb9cwk^;V6qaTY98R1`mjD~L(88I+dmX!WCF a}aIAEb~deL{_9HDq2{vbo#y_S@A77~HSf=LHZl9Bad3*$ol zTXxJP@5TP~9d`Vs|L_0bmel{O{*Ntrl_>8`8<#S2a^e~q8m=dbZLi9OQpiuQui`AM zo M?Qsv4uF+o~xu^<6>%`6vWNU&PGN>jq{GJ9;cF_NrJ~?W3tEPHE0np zJ8_BqKG(WAQI`djbS~9t^|IwA#0y%x@Dqj&1s~XR1MRyC1V<_z x-kNO zh79@Jw0I!>Md2TGu)=zMYo7jGtOb>;mhLT oQ=gso~NblHFI6huz*P@~lfyPDh z{*Ij%RSK}rx!h>kZ`t-6$P*2k%@>CSzrI^k#gAsNBP`DE>GViW2|dfHDPR}!yrb%V zy%GR#cHj2Jt hgvrak>6Q{I!@DHi!3n zflT*keCW0Gz0~!uE_UDjC5qp*qnn5mAppkd1FXyu!QIKk-IFaKui{~Q>D&9v*x1-= ztuf?Zms9$z`dV9`UBYu3^a}XG)znQSP+~U7tw!tn{bAZ@M1-xi*!L^amLr?<(8#;A zpZ_Ly9+J4Xw^!?NyZ6=_f{05&O?}v0p|oGT4b5kIN9UX4^^QoSz;?8vz8EtYWDev6 zPr?i{w|^u1c}x zrb|E7c^!AaARr; CTB!jWupA z5RxF^JJDy3Ws?qeWQyIsoGb|=>ENOH`Un@aOb%4eqCB0I?-YD@rM+VjoFJ0blEFKb zW)aO@24~ZaJaF1wzK#c)j>KZ4C^Bi+OL!QbG|UJ=?&sRv+}@%;4ObUR$KebkPRvA4 zzU>g<#y{t)ek$H@8jLh|ebaheV^oH*>kU8p^{mZ!ANq1Vetwq!Gyy_u&|8x;WFivw z(|f9YO`wz(%U6bjR3xBc`j{MEx}XScm0ZnzLU?%=#RD4~@f#^^=$4k(a0bk4k3*%^ zT=Wj6XYP=yK;rUThYCHRN0Y3P(55mCUlBO~zPwO&a?&ALoEWo}8RcX0rM65BOsdPm z!Gky33I!58v>WwDE6sKoA9fWw?)F2ofy@JmiHM@pIe~%M??8|H(*@XEznAh_9TTBb zcGKZJtA!Ft20EqEV#9#&iEMhD-@md$4)|ksd0U{RF??nZ*Wl9tlZd}*KXA{0LW2k7 zqHwuF_yWjVx6hU6vkqBd<-21Z?-QqR3L7ze4ZvNQPRQ=QOE#CujT7UwKz|n5JSn0l z#|wzbTuuxUO>UFv%9=r+saK=7;9HMI^j^!TH)nX7t6yR7xP#5YBrCALB+un=`x&oN zy0p0bKYWav#>`^zDVf-^*2Wm44j(ndqxw{Do<~b+*BWjYX1kw0*3kzyK2g7al7tE0 zP<6i;p>-msvN`m-q~&Bq-co6* ~ZS zumP2ZVay5m{Y5Q>Eah(b{Dny9#fYolCs{@aJ5~wElvjrq4O03dxfg IIJXDx%dO|$ST396rn^=<4Mt%JAbM~? z_qHZZSQ;u*vuu073e`!?fmp-mp8nAr5L#1$(wBV5d2?;oyRj`V+7WH%;k<_cxZefB z3B5sb(=Le+ukqOmWd-c8P_p^1%W%02g?KQ#`*s^%rOz9-*k|`54d=DHo)`GNzu>W( zK)pO(dPmKNJzy+XQ-;hNai#eD4h35{o0^-YJK^?3&H3E%9<*rgy_vJST|vh%0M_Cq zq2ptM^mT1dggaq5_T7!AfzEjzPv2dB&>FpGIeee{8AwhJQHpXUUZMbFIu1QJOw^ZB zrsHuO^D!#V8#q&97br>309}67;c9-xY7z2vd2**O2)g+5m-jV%|KD&CJ3`_uZ<(_- zlOsq7i%K%7sZ(4!5%3$mjwYWti5o zqj81PV{hLNpL~}IwVYUpJC5Xg*B88^-+f3*02KpA)VW6c>d5{4Eih|(B2i&;-QUOn zUy^}6Uol;jmC=5Ah%Z7%W4UeD8V~qvk>kgx_@$IOvh~R<3+wJ$5jKhG(s<0tvRRP! zSteeNPO?R3a^NdLkC+YtYtTsu7MF*2_Ns|xnvZuTm-S`He4V)G0uB~*(US1vLZ{9t z1&`<`Vr@m$c9QV^NFWZ9YR6jn>jhW5#BXhejf+=0)-c{jtTABB4yjMhujRcQWjde{ z6KCgMCPK14P9p!YD85+m(8_L&aYyk7-aL%; z3Fg}6ZU_ AKQ^YJ^V%zoz?o^dUjlOPAv|=B>TD$Qth0*8>bcye3WX> zHG}Zi4hSSxnw^V`+!cm))uI$_AM*9Aokf2u@RFF5;LT;4O424UCrP**pAr(c8on?} zTI2%r-=sp*KFjeLc z3y?`lgTv(;!x>Ay8P&jIN$DDJ%`koYeiv*nVNiTM5dBBu8ArD)uCFU|ckgZ{Sh{U9 zRNiUVQ$;W~`jXeJJ{?UsW4K?70C9%rn=zVpfs<81u^QhYc8Pv6>{fZ+cvoQdpk^=Z zU8g)AeNKqNNVO@}?|`{r^lp (Sc^l;1hJkO}k^di9C zr1HFL5eT&<9}EZLa%07iRS7S)*ixc7_If6Qa|yhgz3BYV1NVB|FILI5iYHUYxu>;^ zAZ<5Wzn{z%hOw0ufop}!G8ImS2c1hw`q{1No^(e`*4Ls46wu^FIRjqe&CNLv#IBAh zX*zr|nYq% 5@@6 _!^>5=(1|Ym#KUo w9hk;MO2Mvqzm%*P)Z<7RFHS3fmG)Yz(N zq7mPxj!|R#nI+|f|nS&lktBLedu+i znwfmDFZ<~2xKyb9W BWcv?G07le=f4Tp>zjO92$GUd=t^> zM5S!4W2~Jw!-a87Wc$I2#pFrz{f-$+7n+pHTz}DZyW1BI6_plORIGbmvtlW59$4y$ zHy}@wl-HV;OwG>PQ#~p3HazM3S<06B_6zZZ)BR2r;%iTpK&;fXY2LOUJE^zg#bA%H z-dSKC?~@+Ij!~Gej8WG9{Fex7EH4W#HlavRGCFgF&w8Y1%2zCR=5oNf|3nHiyYGvO z%lR_$?d@$~)bY*kz-o`b@ap#gLLPfKtH~)!dfz`03;AV1FJ@r;^QpU4_&s~8pr$9w zbqr9E{Uu@iF8!lA@9V)um_&_Xh2q|PDn-B7qe!Zo!Vr}<>pemhDB1=HwOzk0F3wh_ zYd4r{?k0$gx-JjwBbOU2FRYvWd$s_uW^_QoQo8RB0Huu<%i3h}%&}FY`D~>q0`N(y z^QnA_xK`dIx8$B9+rK^+bDgH^%S9&57cov;6VHM@KtL)p*5UvxIhKGx(Oe)HGYZIt z@Ma`uKugFF!0^?pMA f!!(}iLS-TLEeO_-T8rN225Iz6d#1dOv|F+V zxw5=qR(iv4n&o(MrlR8mE-(#uYhhb*w?l`iwUUb(ldm7rO!{n)144S_W~9#&gizer zb^2VsERR`2v4@6}QV_+>@D&PLU!-d+6t$7P;kE=?5;OXGr89et*%2`d@Wyl)m{wGd zdM%iL_6*G^=GQvE*jiYmFl>yP6S7Ut1Hb07N7Hxg^~X?dK<|)}a1wQ`a|eJdzjQ4Nkw>o hw2DQz^EY+x*IoK3uEP|a+dr?ojVWh#3&?=acL$X%Yn#J>0 z3P~m@=%kh0nws&fFwyv++)|d2m1_lwcei}CAAW7i&^BW@K*AV=Kd}N5+Ff*9bU#rm zoDV%IuVAcW3F6XgiguH7OZM8#e?&ND-)vbn+7}L_vXTx8e` &b88MAyEcm<_SF)kJ;Yo)kF?rcdLr=ADQn@TE1n*w0QV^g+oieG82ka6`B)`=lF2 zwuVU`hTvxft@>{74e1!K3Uos=6~w7cy5siX`(M$aHBVk1IZEvQ8Tuxs&Y=_KTWiJ= z+EfMZY+&f~#}Dh*(;w?jVFMzr%P@bCEGlfD@ucW6ElFR0ja$CvE83G#d{njCit&i* z3C lxy53fC}|0b>v>+rY%sW?P}byI@GVf1@JtT)T5A83hG|e!B~L%EBa& z-+Ua)m@`$oLjJVlRdH*g0azTy>Y~GE3uWt;!`1ua=5|3;)Y;bFf?J*|Vs)__uCgzs z-lX=xf&$gx=Aj_lw|%CrY*%#v6QKh-U7JtY`?)^}MxW(9t8t(ZrgP~aC(j$diFPRS z(#d0i9^xk`HsP?f60ArA!7wQ?5o+6XceP)MdRLvd^aR873igN~Ne@HbENwnjL*~jH zK~R-X)t&@P{ iGoSoB4J(smVY~+RR6b*rsu3Wo?D|ts($)! Kz)_vjJq>M~7r95*n<; zg~{Ge;^}y?1~W55Y19JjKg)@{juPwU@XAgl&1FNwBb?Ip<2|FY4*F%51)iTEPqZ2a zq<~xZZ7xJ -MU>*#SF@wn5suEK0Mik^i2{b= zx_Xl#go0c>mTGS<#Wvg(W{hkziNhnZnaM2SfY9Ck#|$-o(b83BE(<65{wLPTxPziF zyc`Xu%M)YQ)>Fh4_7vKQR8In!C4okVZ3D1udV05)VCbU}i)eag%BoN%v+&Ypz215X zfuJ_LK{C|@Lj?;dx0D2KcztYX6pp*C6&eOrvOIb4^rF;eOOw&j9`^`Zjbk(HM#?5l zZOxLMwNknvLk5Df%1}Q(b#kVe-*BWEY*ao(G-ho(#ylM+lHNpX=`MkK2wbh461iPy z;%JPg+3>nKB-(CHb8TXZY3$~r`w9njD#)l`?6Ppjb)7a;D%|(S4OUG?K37Ya5fc;R z*G-)0$7qvuAL$u*nc9LQsJJ8#^Ty_6l71%8YikBfsws{e;=$763=(Q;o8Ml&<%>rt zmnYk|s`!Vq4&s^7mclI^_DuB4#OuoBjLnj_ITpjY{frqOJ9JA-U`j+kX2`l=qK;t> z@dl`y8zU?Y>dAyyW2{%6ur?nL=?%`4$XlHQJ3Az2TE~39xu(m27{_L6;43Z!RAQVWx|?_I$Ixi6Z#Ohf-cieI(&>RLO?)P30kV*RXdd)@hGky@8hfRPQ!{ zJ;S {3cweVDrWZ!2`@KIRdSOo@J