From 04f4d3a68ecef604425addc5f93aa0b73499f880 Mon Sep 17 00:00:00 2001 From: "Dustin J. Mitchell" Date: Thu, 21 Apr 2022 01:29:47 +0000 Subject: [PATCH] include images for contrib/branching --- docs/contrib/branching.md | 10 +++++----- docs/contrib/dev.png | Bin 0 -> 2740 bytes docs/contrib/dev2.png | Bin 0 -> 5995 bytes docs/contrib/master.png | Bin 0 -> 2144 bytes docs/contrib/release.png | Bin 0 -> 4397 bytes docs/contrib/topic.png | Bin 0 -> 3616 bytes docs/rfcs/protocol.md | 18 +++++++++--------- docs/rfcs/week.png | Bin 11317 -> 0 bytes 8 files changed, 14 insertions(+), 14 deletions(-) create mode 100644 docs/contrib/dev.png create mode 100644 docs/contrib/dev2.png create mode 100644 docs/contrib/master.png create mode 100644 docs/contrib/release.png create mode 100644 docs/contrib/topic.png delete mode 100644 docs/rfcs/week.png diff --git a/docs/contrib/branching.md b/docs/contrib/branching.md index 06c60da9a..15d87c0d0 100644 --- a/docs/contrib/branching.md +++ b/docs/contrib/branching.md @@ -13,7 +13,7 @@ Taskwarrior and Taskserver use the same branching model. Git allows arbitrary and low-cost branching, which means that any branching model can be used. A new Git repository has one branch, the default branch, named `master`, but even this is not required. -[![master](/docs/images/master.png)](/docs/images/master.png) +[![master](master.png)](master.png) No development occurs on the `master` branch. @@ -24,7 +24,7 @@ A development branch is created from the `master` branch, and work proceeds on t Development branches are pushed to the server. Note that there are no changes on `master` - all work is done on dev branches. -[![dev](/docs/images/dev.png)](/docs/images/dev.png) +[![dev](dev.png)](dev.png) All work on dev branches is pushed to the server. @@ -36,7 +36,7 @@ This can be a useful way to manage parallel efforts on a single development mach Topic branches are also useful for merging in submitted patches, because the patch can be merged, tested and corrected independently of other efforts before being merged and pushed. A topic branch is ideal for storage of changes before an eventual merge back to the development branch. -[![topic](/docs/images/topic.png)](/docs/images/topic.png) +[![topic](topic.png)](topic.png) No topic branches are pushed to the server, they are kept local to the development machine. They are private, and therefore hidden from the server. @@ -46,7 +46,7 @@ They are private, and therefore hidden from the server. When a release is made, the development branch is merged back to the `master` branch, and a tag is applied that indicates which commit represents the release. -[![release](/docs/images/release.png)](/docs/images/release.png) +[![release](release.png)](release.png) Because only releases are merged back, the `master` branch always represent the stable release. @@ -63,7 +63,7 @@ The second branch, with the higher release number is the development branch for This is where all the work occurs. Any fix made on the development branch can be cherry-picked onto the patch branch, if necessary. -[![dev2](/docs/images/dev2.png)](/docs/images/dev2.png) +[![dev2](dev2.png)](dev2.png) To address the confusion around branching, namely determining which branch is active. the answer is that the highest numbered branch is the one that patches should be applied to. diff --git a/docs/contrib/dev.png b/docs/contrib/dev.png new file mode 100644 index 0000000000000000000000000000000000000000..4f0b63ca66c283e314291c4fc7d81dd9580245fa GIT binary patch literal 2740 zcmeHIi#L>88-HEP)Fk&yVmO~p7iL`RxXe_{U^Ju=Da2q56EkCG7?~jvg;SJ+5TfXW zIHRPaaycrBP!SbIF6ENOeT-Y@b@@8y`_}sYfN!nyuC@1m_OpM_@7d4qS!=&>4))ei zh$;jC04UZ5jR#jgIP5lxf%ECGItsXmlMdP)1ORU0rbU7TxEEpItu26(X0>6^ZudXx z!gR62nR-(L;RGM57ZDyBNCQy-U><4;nt?=lk0rI1a%~z5C;rlDk8s5Q=%A|rS z(EYu!6ef`l1~UmOw?i4MNB?ice{&tC`xC*cSEKdUqyO$($D1Qo3jdoBYbvjLL77ny zbHw+Sp&-BY8+3zRl%m-jX8^z^xs@RTWL#4Q0MQ2yxT6?r8g8}E|4jcV@c*R1WZ--y zc;C-VyuBmv#BQeM)IMuph0mu2)FnxkvbkB2!VUAJR>PYcWBq@qa26e3Hkyzcg>EOa zuc1^=h%0_+NsoEk%UZ}jbEtAEt$*NRWOC{one)7tKfNy2yn3fObK9$3lSuqK?S?A% z5x;5KvF^=_TbgRm_H31-eEj2g_*oBjg;a`1T-2cr0{#;KzZ_|(0A0l>?rzCnlE=|&6dfc*#HrIFh zm-Ms!8V*s_^;hJNJKo-H`vIb~C)b{Hw=>Q(h)(=P`S4(u_SUcY;6u*Eq7NPoeLt2V z@Q@>^)mJA$YM-6kEGvtR$HKS=WX`5u3@9{kgR!OGwUOJMyP_cX%F9oXy4j}$J#7Bt z>Tgy#4{f|`TW=0}H6ZyN3Hq@u9`HI({=T z7cg`E3c%nv?@ZRk*sIY5>)kxYjmwh!$8}hq%JOE6PqCj4Z)@Fr^Q54(S+@As3Ntd9 zolT4Ht(&#U6>8OxxaVK^ezb&*^*k6pAFMEXS5K%EnJ`wKId%WO&G>=gi8qvKg%?En z%(LOl$%QD@Jw1IyE*v6q8efh#m$OhCf9*c>1>tm}m+ zoy{vELvt&RMVa(Qc%Xwqi*E#vb#}Brh$*Spa$0T*sIThM z-uW0!GfIA{?_=kZc39pLzqPb*ZCArCth0ykOU;ogsS3k^vZ@myIRi(js>1dwwwZie zH&g*tBf`!Z9TrlbBIncRQuMT9&#aot(sHI4@71-2eotg(d2`9<7%#4EzHGl@5nt{B z4aY+`%sIuig&G%dN6IFd0?}XV`G+l%kB2QMdSJxtgp%Ye;@3df=`aY`;ia>Hfoxk#Ce#zBN1$k{w3hFIZueQ@P29KdR1# zdpkZN2g}vxhE-?2{!qIxP^K0=*mxgfloFoPgk$4cCWwBJ$YVBW%|+R4!!(boeq|Rq z(F%#w^9RHl8$Y^w>SjGb@OphBgt5APX$Yte;=E)k%Mv_G=hq{65;BXE`DX{aTWcoi zbBZqI(o>BBlyNmDg|6yy5(?Gf$Fk09TUHSBR0#2c3EKjsXgN zEWP02EzP0{2@yv+ILWj6#@=RTolei&vZSs_C@L-Gl?eA%H?%boLdGYL6rj4HZtLCx z4KH$C(HB^HV2Tc$#c_xy%_dZSa&4aWWnLeAt6SuqU371EF9bf1ai8i=h7qziLe0jX zcB6Y}k*>U;uS&r^tcRvRPiuAfBE4 literal 0 HcmV?d00001 diff --git a/docs/contrib/dev2.png b/docs/contrib/dev2.png new file mode 100644 index 0000000000000000000000000000000000000000..a75b1a29696ac6f2a098d896dffed3bccb0143ac GIT binary patch literal 5995 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 P-#eA$)#WN7&x8I8kgw#U literal 0 HcmV?d00001 diff --git a/docs/contrib/master.png b/docs/contrib/master.png new file mode 100644 index 0000000000000000000000000000000000000000..a2a5cd24a61ee5924a5de19cce375328ca69258e GIT binary patch literal 2144 zcmeAS@N?(olHy`uVBq!ia0y~yV4MhKD{wFa$tQAK8G#f_x}&cn1H;CC?mvmFKt5w} zkh>GZx^prwf$Xc9ArU1JzCKpT`MG+DDfvmMdKI|^KvfJ3HWgMtW^QUpqC!P(PF}H9 zg{=};g%ywu64qBz04piUwpEJo4N!2-FG^J~)icpEP_pAvP*AWbN=dT{a&d!d2l8x{ zGD=Dctn~HE%ggo3jrH=2()A53EiLs8jP#9+bb%^#i!1X=5-W7`ij^UTz|3(;Elw`V zEGWs$&r<-Io0ybeT4JlD1hNPYAnq*5Ohed|R}A$Q(1ZFQ8GS=N1AVyJK&>_)Q7h;C z+=8Oi;$oorcBVF9l_+8edm!oqGV)9EfuT^8ne3TYl3E1RT#^WKot+U>H*OW^X89Lo zrUHEp)@=yYjVuOLZ=(P=nY;+eGi<|`>k;M!Q+`=Ht z$S`Y;1Oo$;e}GSjt9yYDIG#s|(GZ|Q2sme~R|Fb!q$J2MnBhqF^RxrLU)@E`EB`LZ zXOm3-vHhFuFT3ymTCW+mF@`aTy;kP^$kH&G{lgp1O(vhF2St5WjjevtD|A7M=U(Hq z%!h{rFYj!>zh-T@G{FJiYPfJExR`$s6kTX}o&5${^(KpD)YgWRkMp zF1X4!XLp{y+8F`ity2|Pd(JzzC>E3@&a~8-am(dFK-2!?u5puIh!o$93}#;0q2*P3 zn=9H({G9fwg|km?yXaT5S?`8X=RB*zqSPsiB-H)6pWewZQtIyjW|fzoE{-7?_ukI< z8Z7N7(jc#@>cG#W=sS6ugU3gKJF(r~-Me@1_Pz@OfBz=l-5sEy`m$yIt<3x8#k;rb zmv1(HKl|=ICTG29cA>0lW6vMsHQNNNqPH}Ku1M#W|8U4--{yzR z(@sVT9p2t|gnepQ%99q?@+<93JF4AJOg_Y@_CE8-p;5ZMY?NX#>kdAFb|nh33aQ4m<5|$XtC! zxaY>_!?m0Kwz(a7bFuDAdiF|w6}dmFvbfs!O=sAAvj6MuYw1UM9JyLpZG_F)wzL2y(4DW29Wuh(-*f6Sk}JHchzyA5YfEHt&@Y!aMWa9*n_%I^2dT@@Ek zINr&=bb@!!(Xh~t>qo9|i&a>xGdEiF_mJEB`;vxE*(r6`FReIpck3ogKfUS2H#Q`s zn5WG)DPncK?p<;!^Zd47hV!Q_`7O}uKhJTE+xM4`qg~A<4f9l7CI)8KrJkQ;)#bA2 zNX*ryiJRQEdMb-sO_eBkrZP`@Z|{w`W2^i(n=m~%7rXS6qr`-XPu)%}-L%$L``35t z37RE-t*9m}eHXF^R)IL^sxq8a4W8psu6&C*og%4Y9>~fD2 z@$URn93Qx?`u8h-`DQNbhuU5)|NKl-yAY}J0XtL4GNuI;4{m|V0#8>zmvv4FO#l#W BdanQg literal 0 HcmV?d00001 diff --git a/docs/contrib/release.png b/docs/contrib/release.png new file mode 100644 index 0000000000000000000000000000000000000000..a2a3f23466aa41424796a49a6e4da18b3b1b2dd5 GIT binary patch literal 4397 zcmeHKi8s`3`yczB#2{4D7(=!}6l2ELSY`~SK^bEmh7^XG$u6FXl(LLLC0VkiP?EBx zNMq(-Vr6a-MokV}z zU;Cu{`TQqSAnkWqoC0AxD==+ME!f}M94cZb3O_~(2%?f{G>*QJ9^x1Bf5iTi=Px|& z6opRVbb;#Ug$|^XsT?xhb7yx(I=|WfH{yS5*-`z-oT`7ZwSTk!8T*Y#z;+7%MZ4pXNYr(LP1sp8UP?7x$|%VZr+jw0Jt-8SO;^XYe>L`E&)e6d}0E;jroCaG!oA_wt? zj<>Z3a8ClI7b;h|mR)=f^ILWwT-^JE@_pTAdNbttyx>dtZjFu;!hv4CqTwrX5Q!X` zz`G;$OHE~G3Lc+b3;=u;J8t|sH70x)Y9{G zE>k|P<2VPCm)!eRKu#}`8bH3t$d)(D^~3Fy`g1WI6yJA{PZGMBFQ;!PEl2N%9ya{6 zx#{UUo!wb~7~t>^>&yIZ_;V~%p6M2Bwc7V zC@x;hxcI_HUQ7?FC0&sRy`_ewnl=ODqc3pXO06q<*baaCb?$gV&<9nb(wLP6xp(kO zyLV~TUH1G(Yk{9z%pGY?wVXnUtPf z7@)uwiHm%E*DKOP`?T>s{C**|M~RVFmfdAl={;%n@#T+Z&8n+3hf>~4p}QnvFX}^| zC~omX3F#jITJ51nA)|e@?)bmccMg(hkcC7*)FT%c zmwZQOY$f{DglmRoOS;~>zT`h7Yx_G88)3jGhM^PVhssS2a^v$^lZ?*Pt6YNSw|cbM zN-jn~OuPuNp;9~6X0>E6I4_UH&E}agN}I|zsfM`5+5f4Nr5G-2vS*DXcR~evL#lPk z8dPL-Qf$m?JritEzmT{Bl(gc{ufay_8X{X~Dc*np7OKq|qnGN4$x7tw-mDWJnBQ{j z)sATA$h3N#6bxxdtt%&i*?s+2DGkz4={w?7m&;tJI~KjK9X_R$ zlWBEe?QF;E{er`19~l%XP8VgDpSQzBP$MNQ7OfmF44{ydRD|3bSF(#i z)S2GBUPx&iOWU3zw!K8GBDZJ=mT^u74(c;^uc9?=ds7Yb(xn&ieF(7htyqtlFtGVC zhM&O{&5qbPf3OJ~=>G7PNHx2A^IWvLb=g!+b*}Ge zQ<~`$9XGqm9h`9?8P;o3QQ<3S>ojHd`r5GSuMM}H7%bJ4k`TN-PCqO>)@fGvrTf*4#Q4F0)y6H zFPEzmDd(*kB5zf_=u2C)I$=foJZSn|sOat7NP&KH>f4ser};wTWpoIAavoiDb~eyB z=hY1-8+Ep#|Ls}7j9uD}$-<(Lii1DVXn3A{hpReLqC1%fzp3{tsRYAfqA~mJRz=N} zUfJL`mb`Olky#%8uGGx4+Y`b}gG1~ZmO)tF9bfx}hdq@g*L(-_#F4w+3e;S;sDxkZ z{u-d)cKu?(Tju`hTx$HIN6VkL6(blYqZgn`1m^f zQOMQX;?dIrcBcHnfikSTE?Yz{(bqU*VxR$BWBTw>Kox5X%YE30sujyktUG)Ys$b?lXgd=BW4^IeYH-+lw96aTYaJoW9kH zWD9*d73^_plNb}MAY}()NpB-MB(5ihG-M*O&Wn$2m6&)y5}6Y=bSq3VWFhWIplno* zz8zy(&e2RUJgy2h!-H~pl6u6(1L7_!>C=6Qt$^Ox;#M4R!DJx!S`BxmDgb5C;_gkN zrLJjD;l?K}*G>y9m>vSdJ}Q~a{hW~4^Fj1pkIzSJY10|a0ie*eiADd9*ftFBK}=+v zewywXUbIexvY)i$B_Y}oN|279cma=%$bu#{FR6CE*Nj!{dh&oU28oAy^8S zeG|n6;2ee z8-!XBR87H4ApQxxnmd}D6&t*&@Lg-9Zu<;6IaGr5eKmp<$UDqA5BE_ljdcnn57-rm zhKM`vMl+tQ61fd2b!C69qq8+o{ca)B2@v++riQPfHFb}DG6mcevY@1cUaCHq=-sN_ zdQ{%{GIO+>{wpFP-u&X+v7*k==ywrWw=~27d2J>f!7Q1iHnEhfDgA0>_4^s|04e>Q zyq!AAR(=XD_D9^w?-g==jMetqA53yp4`S4pjhqic%q}=wjIz1KEk)L-C^_tYR=nu^ zI@z7WUtBCxFLv>rEkWua>su-a3~E$+|F2jJ}X z49j@_ask!YQW0r)k_DuNrQ&e<>##lgwUpwCyDe{+M+NX#ob1%IStBymp)W=^6TLE$ zs3aAX?V5DCO^yFvGV3n#rCDQ?CYj|&zYN@_s#@sb6Wx07jURHK^1OvTN%C>7irBZ> zE>_!cV{@`E)!X*MhH@7J-x%e>Gi33dIzLmTxY}NJhk##xH<^FV!0ukB8}H@K$*97t z1}67v`^J?Y37eCWQl8r_Wk2t+iqYG-WmB4#T5;c(!f99cYbM4l)Q$;FcWh7h3A~qM zA7#x#R@;9TuGdF(3Yw68KaFCA#_u>7&A{pUX|sEE^=D=FVRYnL=5T?-eV^_7VIx%# z^&v5{?q_d^OM_gf;hVIBuHjstXwazHhjc=2`xvaYU#t3zoL}_M`G(*zWy%QS z^03}$w@;2dE1)~=_cZFvzf%<9YG`+_v8wXFM!mMqkakW(J zlbYpmLHgCu7Ma!Kx>IN=v%NTm_aShsPHz5=MI>$-!{SH9V!GKcIe!uWw7D&++|1+r FzW}NI$Oixb literal 0 HcmV?d00001 diff --git a/docs/contrib/topic.png b/docs/contrib/topic.png new file mode 100644 index 0000000000000000000000000000000000000000..0314c7db0214477d62ae44e7b916357f9c35ef48 GIT binary patch literal 3616 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 literal 0 HcmV?d00001 diff --git a/docs/rfcs/protocol.md b/docs/rfcs/protocol.md index 8c13e2e71..d3d115b49 100644 --- a/docs/rfcs/protocol.md +++ b/docs/rfcs/protocol.md @@ -74,25 +74,25 @@ Each task SHALL have a 'modified' date attribute that will help resolve conflict On sync: -- Send a 'sync' type message with the entire contents of the backlog.data, unmodified, as the message payload. +* Send a 'sync' type message with the entire contents of the backlog.data, unmodified, as the message payload. -- Receive one of the following response codes: +* Receive one of the following response codes: - - 201: This means 'no change', and there is no further action to be taken. + * 201: This means 'no change', and there is no further action to be taken. - - 200: This means 'success', and the message payload contains a set of tasks and a sync key: + * 200: This means 'success', and the message payload contains a set of tasks and a sync key: - - The formatted tasks are to be stored as-is. + * The formatted tasks are to be stored as-is. These tasks will either be appended to the client data or will overwrite existing client data, based on the UUID of the task. No merge logic is necessary. - - The sync key will be written to the backlog.data file, overwriting the previous contents, such that it will now contain only one line. + * The sync key will be written to the backlog.data file, overwriting the previous contents, such that it will now contain only one line. - - 301: Redirect to : found in the 'info' response header, will force the client to resubmit the request to the new server. + * 301: Redirect to : found in the 'info' response header, will force the client to resubmit the request to the new server. - - 3xx, 4xx, 5xx: The 'status' field contains an error message. + * 3xx, 4xx, 5xx: The 'status' field contains an error message. -- If the response contained any error or warning, the error should be shown to the user. +* If the response contained any error or warning, the error should be shown to the user. This provides an opportunity for the server to announce downtime, or relocation. If no sync key is sent, the server cannot provide an incremental delta, and so will send all task data, which should be stored as above. diff --git a/docs/rfcs/week.png b/docs/rfcs/week.png deleted file mode 100644 index 49570073caf4523f6c163b72f3670829c33f80ef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11317 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