<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Kevin Gida</title>
    <description>The latest articles on DEV Community by Kevin Gida (@kevingida).</description>
    <link>https://dev.to/kevingida</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1211386%2F3d0088d5-4b68-495f-a39b-e0e92a220693.png</url>
      <title>DEV Community: Kevin Gida</title>
      <link>https://dev.to/kevingida</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/kevingida"/>
    <language>en</language>
    <item>
      <title>Trunk Based Development (TBD) ?</title>
      <dc:creator>Kevin Gida</dc:creator>
      <pubDate>Thu, 16 Nov 2023 14:43:37 +0000</pubDate>
      <link>https://dev.to/kevingida/trunk-based-development-tbd--2o48</link>
      <guid>https://dev.to/kevingida/trunk-based-development-tbd--2o48</guid>
      <description>&lt;p&gt;This post will cover a basic of Trunk Based Development.&lt;/p&gt;

&lt;h3&gt;
  
  
  What is Trunk Based Development?
&lt;/h3&gt;

&lt;p&gt;The easiest way to explain TBD is we have one single branch (usually &lt;code&gt;main&lt;/code&gt; branch) with open access to it, and every developer work directly on that branch.&lt;br&gt;
With this approach we embrace Continuous Integration, prioritize agility and fostering collaboration. &lt;/p&gt;

&lt;h3&gt;
  
  
  Pros :
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Always release ready&lt;/li&gt;
&lt;li&gt;Minimize merge conflict&lt;/li&gt;
&lt;li&gt;Quick iteration&lt;/li&gt;
&lt;li&gt;Encourage small batches of work and CI/CD&lt;/li&gt;
&lt;li&gt;Create robust code by encouraging refactoring&lt;/li&gt;
&lt;li&gt;Leaner codebase&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Cons :
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Requires discipline and communication among developer&lt;/li&gt;
&lt;li&gt;Relies on a lot of automatic testing&lt;/li&gt;
&lt;li&gt;Not ideal for larger projects&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Separate deployment from release. The idea is we are comfortable to deploy partially completed feature into production that is not yet “release” in a sense of available for people to use.There are many start with this type of release, But these are the 3 most common:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Dark launching&lt;br&gt;
We are deploying features that don't affect the end user or people can't see yet. For example it could be a piece of code that is not used yet, or we build the backend for some feature before adding the UI at the end.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Branch by abstraction&lt;br&gt;
Great technique to release big changes incrementally. Improve the abstraction in our code step by step to make cleaner interfaces overtime to improve its modularity. THEN, start to replace small component in our system with new one over many deployment and release&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Feature Flag&lt;br&gt;
We hide a new incomplete feature behind a software switch or flag. We continue to develop a new feature behind a flag, and when it's ready to release we flip the switch.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Git tips :
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;git pull -r&lt;/code&gt;&lt;br&gt;
This command makes sure the latest changes from origin are fetched before rebasing on top of them.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;git stash&lt;/code&gt;&lt;br&gt;
Helps you with this by stashing your changes locally.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;git rebase&lt;/code&gt;&lt;br&gt;
Git rebase (opposite to Git merge) integrates changes from one branch onto another by moving or reapplying commits to the tip of the target branch, creating a linear history.&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
