From 73eb78d8635c619d039fda42c9d47ecb8108e8e2 Mon Sep 17 00:00:00 2001 From: Christian Schabesberger Date: Thu, 21 Feb 2019 15:21:38 +0100 Subject: [PATCH] add description about how to do hotfixes --- assets/hotfix_branch.dia | Bin 0 -> 1462 bytes assets/rebase_back_hotfix.dia | Bin 0 -> 2242 bytes docs/05_releasing.md | 45 ++++- docs/img/hotfix_branch.svg | 160 +++++++++++++++++ docs/img/rebase_back_hotfix.svg | 310 ++++++++++++++++++++++++++++++++ 5 files changed, 508 insertions(+), 7 deletions(-) create mode 100644 assets/hotfix_branch.dia create mode 100644 assets/rebase_back_hotfix.dia create mode 100644 docs/img/hotfix_branch.svg create mode 100644 docs/img/rebase_back_hotfix.svg diff --git a/assets/hotfix_branch.dia b/assets/hotfix_branch.dia new file mode 100644 index 0000000000000000000000000000000000000000..33c6a961eb3deaa115667cf99eba606bf745706f GIT binary patch literal 1462 zcmV;n1xflJiwFP!000021MON{Z>vTSe$TH!Y!wT^>2fEC!tjR7)g|`61w7g@UrnVlIWGz$uIzC*SMOKZN1bGf zCTE&1Xy4+1EIGm7s+H^Tna$cM-x8izyxB%E1rc%B7DOua$loV2nN$oyEO@;C!M;zo zlr0=}m2I>VL~Jk*C@bQCb;8sXrskTa3FbgEccweGW4zj=Io$GX;lj6t<8KQ`LLPRzDU*Rym<^bvP_h@SxxdEsC<-k3Y zsL1Eyw(-drCf!Ypn{VT zp6&Ek*cjmfm&K`)(M`4$B|883O!bL2k-Wh`*cviS^kC_l zfgA*&=CmE8khZ8{YeiLk!JDhK+k>fYCmiPb)Gyg^l`d= zOrh%ulXnjtp=})GtA~njv8vfRPO4j0{V&T4RENa2-SW6f$%x?Ia|d zg%@#F92eZwatTgS_7|;pY+da$qA-mPSOsqC2@D!nQg<-OQaKLn0w&34$BQm;iISRt ztY{cs0g@k%H3N~w*rH?xS6_oQwpWt;s(DN=G#;f*Xd?@Tbh}tboW4LR#^J@o<*M|? zFhG+sk@p4?@0M~rL)6wrx+W2vRHwheGdp2_J!5~fGyBgpTQafPGyBgp-E`apNuRn8 za6NTr(~;o-3AkoEWLfkt2=faq%XNn=m9voCliu1I5J28Gzm>89NF(ZI{sMCzJypkR zSIvu%u;4OVqplFO`QS=~W49U?nE3S@WeuT|RrexF>Llg(?HRwlR)smG4Fj~IeYCm; zD1wR!jmCzC9J9{|&2UW3m_mW}9o079e+N1Aj(zuz6;3#GkMFR1tmh=VbJ1XFu4T$; zf@$cs-Dlm9A=%p0K(_s0B5gWNkS+LQzkhC8M`A^v2Zri>x>e07kzIx)s+ogEuI9MrM;>u?Hr;h2F3UuxbD(}lT(i_@% literal 0 HcmV?d00001 diff --git a/assets/rebase_back_hotfix.dia b/assets/rebase_back_hotfix.dia new file mode 100644 index 0000000000000000000000000000000000000000..004a422d18262bcb1230a93a59c72fc3958e9275 GIT binary patch literal 2242 zcmV;z2tD^7iwFP!000021MOYkbLzMie!qVO!+j-+ep=G9$A3m6*=wsN5rGYMlO>yyOMr}G^jiywdbvW`YCD$T+qei$PF$0HRl zk|2zi595FR{^vU}{^{}4k3s1Fp#PSszaHr;;>;X9j8}QS`QiTl_4O4*Z<(JbDTu;n zkg5Cs_)+BF>q7VA$4{ftZUup#`{rDA*3a`aoImGk6#HxSFrNF1KbC3o90%jFR8?+~ zL`gb&@uP?F=cnp5zOO2}->d0J?Hhlo=Be`kXs;aVmz0-PzENqt;`JuULR}<(+Z+^W zsmJ`^DN~iobfI|p`1xo0xolE(Vp~^JLt8=ewVy7-_z*{rPE-yB1_EQOhl5EWA*UR@ zkIDIP^N)p#J{B(hShz5oZIU!k{V+d-oF_@7{J2ET(`R)#PPXtPZDPl|)uR_rVV)-^ z+W+K7S(gr!r@zg%b7$@{4TIwocdtZCEy0_94;NOylGiZESFI=3El{IBl?Z8mLiO1y>2_OY#8kP!*FNDp_fSjP^TA4N* zD}3d>ay7R)P%kZh^$~k+^K6nhZ^AO?M^D;Eh~9LQ{5Ttrvi!{$jMiP1iK*yC<>A8L zHSY6Uuu|c2)!2sZN)Ca5`!CuLbl(cQTjC{H`|IZsDF@+p6}=2fuOG{Jt(w156+f@5 z;p~XgNJ;0-iKdr2JDv6@+@VzNmH;sr77;r14?sVCW$% zpb8amIE-5*OZQjsWQFV-TPkA@%_?MD&~25;=>#<6!2eY4X}WW&74Vi&VTkPS~t3 z#K|S0Bf?g{W(Q>a{>f;iXHVtr=Skr9nM6E!kp(PE6jqn52E_i2@HYJV6LZim63@qJULELIX`X zfCTD83W&$)?JCJ3#;==@)QWpoZP^u)!+<#<>4c;ck^>6KU)0x7r7d!j4dAMJoEuKY z7jtq~UllRx6-bETDT07&k}=^pCgg>NHCJC}CzWJd7n@2728$*^4;@vUP%mLvOb`PQ z?R!^EMLF~O^|M@(X2v$Mb7pSiXHLa_tcsP6ER7E-jS$Anj&qE*yt0Jkaj8ZHALkG8N!ZXxqZsu zcEfUmfVr@o3(L8%oPFO^_7BK0R(Ok6V{saTn)`!O4v5J(W$+f9(^Zl`gp zfektz^(LhvUuwN;cBYC}*7A3?Z%kELW)`B-?~^XoQZBuA7fq?pLDzPeQ!k zPZL1cRmvI(V#*36B80hP=?RaROj9m|_59biel{0ns7TD^L|~T$`#*L2P}oRUmPA_2Y}`8vW|0}NrO@RrSJmJ43F;FSwrU3X3y zA_Mqn)R3;QPWL9O%p*wCyGA0&_-K^#GB;NeVKJ+$wT~@D1)1n~M0NxCO_3K*7ONGJ zP?F;%%dECONysj(?3N#n!uyV)I47@+TFxtLqZT?8wMgsKV&or{*dQT|RV1vI`Klg~ z)V}&_?xv*#Q>XrJWR`cz9z`~@N6(XvY=F&q5T|m2Fu)AkecTyVKt+DKR*c0VHJMvC zyzRvR4c>dmLCxI_lDT^qM~E#%YZ<%z<~%Cn_h6ni(P}b z=Y7DY7fro9vOPwh-He>qcdcF@>*4jG@AJ$M>YtWR0Ay55IA9Dxs}BuTNFI=^NYVd> z%pqYeP2Z&)v>T(#Jh=JY7{vgh6cc2OgEDC~H_FJj5{VcjBTI=nmf9>YM!phV+J6Y$ z{Y)o2o$Pe7vrTr&0c0mG>GlJNUYOKZjRXauMtCwLv5DIeNbKv*=58L5s6FC|PIq3b z?i77=C;L7(6>+fPoBAiHWb52%B0&p&5F)5iWB^LH5zy4s* zKY#t@=ih#HAtCF(&e3L)E+ll5569vDo3ZO<5@K9rn@i8?ZK(>$1C&z_Pq)YzW8^k` zcJ$P4jE;u<_#6*?XC5k#i(hPf{IvIz Qj*p-I3y59TzUzDd0D9_MBme*a literal 0 HcmV?d00001 diff --git a/docs/05_releasing.md b/docs/05_releasing.md index ee5130b..06c40c3 100644 --- a/docs/05_releasing.md +++ b/docs/05_releasing.md @@ -67,7 +67,7 @@ All maintainers (people who have write access to the release branch) have to be you have time for coding. Do not introduce new features while being in release phase. When you have pushed a quickfix you will want to updated the __release candidate__ you put into the __issue__ corresponding to the __release pull request__. -Increase the version number in the filename of the Release candidate. e.g. `NewPipe__RC2.apk` etc. _Don't update the actuall version number however :P_. +Increment the version number in the filename of the Release candidate. e.g. `NewPipe__RC2.apk` etc. _Don't update the actuall version number however :P_. ![release_branch](img/release_branch.svg) @@ -92,18 +92,49 @@ you will want to do these steps: ![this_is_fine](img/could_not_decrypt.png) -### Fix branch +As described aboth NewPipe is a web crawler, and therefore might brake randomly. In order to keep the downtime of NewPipe as low as possible when such a shutdown happens +we allow so called __hotfixes__. + + + +- A hotfix allows work on the master branch instead of the dev branch. +- A hotfix MUST __NOT__ contain any features or other bugfixes. +- A hotfix may only focus on fixing what has caused the shutdown. + +### Hotfix branch + +Hotfixes work on the master branch. The reason for this is because dev branch might have experimental changes that have not yet been tested properly enough to be released. Master however should always be at the latest stable version of NewPipe. If this one brakes due to a shutdown you may therefore want to fix that version. +Of course you are not allowed to push to master directly so you will have to open up a __hotfix__ branch. _If someone else is pushing a hotfix into master, and it works this can be considered as hotfix branch as well._ + +![hotfix_branch](img/hotfix_branch.svg) ### Releasing +If you fixed the issue and found it to be tested and reviewed well enough you man release. Here you don't need to undergo the full release procedure of a regular release, which might take up to a few days. +Keep in mind that if the hotfix might turn out to be broken after release you want to release another hotfix. +Here it is important to release fast, and after all a less broken version of NewPipe is better then a full broken version ¯\\\_(ツ)\_/¯. +This is what you will want to do when releasing a hotfix version. + +1. Hit merge Pullreqest +2. Create a GPG signed tag with the name `v0.x.y` +3. Merge __dev__ into master on the extractor +4. Create a GPG signed tag with the name `v0.x.y` on the extractor +5. Create a new release draft and write the down the fix into the release note +6. Copy the [release note](#release_notes) into the fastlane directory of releases +7. Increment the __small minor__ version number and the `versionCode` +8. Hit `Publish Release` +9. Rebase the hotfix back into __dev__ branch + +![rebase_back_hotfix](img/rebase_back_hotfix.svg) + ## Versioning Versioning NewPipe is simple. - __Major__: The __major__ version number (the number before the first dot) was 0 for years. The reason for this changed over time. First I wanted this number to - switch to 1 once NewPipe was feature complete. Now I rather think of increasing this number to 1 once we can ensure that NewPipe runs stable (part of which this documentation should help). After this (2 and beyond) well god knows what happens if we ever reach 1 ¯\\\_(ツ)\_/¯ . -- __Minor__: The __minor__ version number (the number after the first dot) will be increased if there is a major feature added to the app. -- __Small Minor__: The small minor (the number after the second dot) will be increased if there are just smaller bug fixes or features added to the app. + switch to 1 once NewPipe was feature complete. Now I rather think of incrementing this number to 1 once we can ensure that NewPipe runs stable (part of which this documentation should help). After this (2 and beyond) well god knows what happens if we ever reach 1 ¯\\\_(ツ)\_/¯ . +- __Minor__: The __minor__ version number (the number after the first dot) will be incremented if there is a major feature added to the app. +- __Small Minor__: The small minor (the number after the second dot) will be incremented if there are just smaller bug fixes or features added to the app. #### Versioning the extractor @@ -111,8 +142,8 @@ Versioning NewPipe is simple. The extractor is always released together with the app, therefore the version number of the extractor is the same as the one of the app. #### Version code -In android an app can also have a [versionCode](https://developer.android.com/studio/publish/versioning). This code is a `long integer` and can be increased by any value to show a device that a new version is there. -For NewPipe the version code will be increased by 10 regardless of the change of the major or minor version number. The version codes between the 10 steps +In android an app can also have a [versionCode](https://developer.android.com/studio/publish/versioning). This code is a `long integer` and can be incremented by any value to show a device that a new version is there. +For NewPipe the version code will be incremented by 10 regardless of the change of the major or minor version number. The version codes between the 10 steps are reserved for our internal fdroid build server. ## Release notes diff --git a/docs/img/hotfix_branch.svg b/docs/img/hotfix_branch.svg new file mode 100644 index 0000000..a0517f1 --- /dev/null +++ b/docs/img/hotfix_branch.svg @@ -0,0 +1,160 @@ + + + + + + image/svg+xml + + + + + + + + + + master + + + + + + + + + + + hotfix + + + + + + + + + + + + + + + + + diff --git a/docs/img/rebase_back_hotfix.svg b/docs/img/rebase_back_hotfix.svg new file mode 100644 index 0000000..c968d5d --- /dev/null +++ b/docs/img/rebase_back_hotfix.svg @@ -0,0 +1,310 @@ + + + + + + image/svg+xml + + + + + + + + + + dev + + + + + + + + + + + + + + + + + + + + + + + hotfix + + + master + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + REBASE + + + + + + + + +