<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Development | Luis Cacho</title><link>https://luiscachog.io/category/development/</link><atom:link href="https://luiscachog.io/category/development/index.xml" rel="self" type="application/rss+xml"/><description>Development</description><generator>Wowchemy (https://wowchemy.com)</generator><language>en-us</language><lastBuildDate>Thu, 22 Jun 2023 00:00:00 +0000</lastBuildDate><image><url>https://luiscachog.io/media/icon_hu4fa4dbbaafd6f1b45a88958b9b4a0dd0_11007_512x512_fill_lanczos_center_3.png</url><title>Development</title><link>https://luiscachog.io/category/development/</link></image><item><title>Update all the git submodules</title><link>https://luiscachog.io/garden/update-git-submodules/</link><pubDate>Thu, 22 Jun 2023 00:00:00 +0000</pubDate><guid>https://luiscachog.io/garden/update-git-submodules/</guid><description>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Example command&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">git submodule foreach git pull
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>References:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>How to update submodules in git?&lt;/li>
&lt;/ul>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>&lt;a href="https://stackoverflow.com/questions/33714063/how-to-update-submodules-in-git" target="_blank" rel="noopener">https://stackoverflow.com/questions/33714063/how-to-update-submodules-in-git&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></description></item><item><title>Change author email in commit</title><link>https://luiscachog.io/garden/change-author-in-commit/</link><pubDate>Tue, 30 Nov 2021 00:00:00 +0000</pubDate><guid>https://luiscachog.io/garden/change-author-in-commit/</guid><description>&lt;p>Just works in the last commit&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">git commit --amend --author&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;John Doe &amp;lt;john@doe.org&amp;gt;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>References:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>How can I change the author (name / email) of a commit?&lt;/li>
&lt;/ul>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>&lt;a href="https://www.git-tower.com/learn/git/faq/change-author-name-email" target="_blank" rel="noopener">https://www.git-tower.com/learn/git/faq/change-author-name-email&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></description></item><item><title>vim settings for YAML files</title><link>https://luiscachog.io/garden/vim-for-yaml/</link><pubDate>Mon, 04 Oct 2021 00:00:00 +0000</pubDate><guid>https://luiscachog.io/garden/vim-for-yaml/</guid><description>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-vimrc" data-lang="vimrc">&lt;span class="line">&lt;span class="cl">&lt;span class="k">set&lt;/span> &lt;span class="nx">ts&lt;/span>&lt;span class="p">=&lt;/span>&lt;span class="m">2&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">set&lt;/span> &lt;span class="nx">sts&lt;/span>&lt;span class="p">=&lt;/span>&lt;span class="m">2&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">set&lt;/span> &lt;span class="nx">sw&lt;/span>&lt;span class="p">=&lt;/span>&lt;span class="m">2&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">set&lt;/span> &lt;span class="nx">expandtab&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">syntax&lt;/span> &lt;span class="nx">on&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">filetype&lt;/span> &lt;span class="nx">indent&lt;/span> &lt;span class="nx">plugin&lt;/span> &lt;span class="nx">on&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">set&lt;/span> &lt;span class="nx">ruler&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>References:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>Vim Settings for YAML&lt;/li>
&lt;/ul>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>&lt;a href="https://www.krenger.ch/blog/vim-settings-for-yaml-files/" target="_blank" rel="noopener">https://www.krenger.ch/blog/vim-settings-for-yaml-files/&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></description></item><item><title>Create GitLab merge request from cli</title><link>https://luiscachog.io/garden/gitlab-merge-request-from-cli/</link><pubDate>Fri, 03 Sep 2021 00:00:00 +0000</pubDate><guid>https://luiscachog.io/garden/gitlab-merge-request-from-cli/</guid><description>&lt;div class="alert alert-note">
&lt;div>
Do not push your branch before the following commands. If you push your branch before it will not work. Git response is going to be &lt;code>Everything up-to-date&lt;/code> and the merge request will not be created.
&lt;/div>
&lt;/div>
&lt;ul>
&lt;li>Push &lt;code>my-branch&lt;/code> to the remote repository and create a new merge request from our branch to the &lt;code>main&lt;/code> branch of the project.&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">git push -o merge_request.create origin my-branch
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>Push &lt;code>my-branch&lt;/code> to the remote repository and the target branch &lt;code>work&lt;/code> with the merge request title &lt;code>&amp;lt;title&amp;gt;&lt;/code> and a merge request description &lt;code>&amp;lt;description&amp;gt;&lt;/code>, setting the merge request to remove the source branch when it&amp;rsquo;s merged:&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">git push &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> -o merge_request.create &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> -o merge_request.target&lt;span class="o">=&lt;/span>work &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> -o merge_request.title&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;&amp;lt;title&amp;gt;&amp;#34;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> -o merge_request.description&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;&amp;lt;description&amp;gt;&amp;#34;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> origin my-branch
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>References:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup> GitLab Documentation&lt;/li>
&lt;/ul>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>&lt;a href="https://docs.gitlab.com/ee/user/project/push_options.html" target="_blank" rel="noopener">https://docs.gitlab.com/ee/user/project/push_options.html&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></description></item><item><title>jq select objects based on a value</title><link>https://luiscachog.io/garden/jq-select-based-on-value/</link><pubDate>Thu, 26 Aug 2021 00:00:00 +0000</pubDate><guid>https://luiscachog.io/garden/jq-select-based-on-value/</guid><description>&lt;ul>
&lt;li>Initial json input&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-json" data-lang="json">&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;ACTION&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;domain.list&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;DATA&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">[&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;TYPE&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;slave&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;AXFR_IPS&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;none&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;DOMAIN&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;domain1.com&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;TTL_SEC&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;SOA_EMAIL&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;DOMAINID&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">11111&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;DESCRIPTION&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;EXPIRE_SEC&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;RETRY_SEC&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;STATUS&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;LPM_DISPLAYGROUP&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;REFRESH_SEC&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">0&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;TYPE&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;slave&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;AXFR_IPS&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;none&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;DOMAIN&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;domain2&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;TTL_SEC&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;SOA_EMAIL&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;DOMAINID&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">22222&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;DESCRIPTION&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;EXPIRE_SEC&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;RETRY_SEC&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;STATUS&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;LPM_DISPLAYGROUP&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;REFRESH_SEC&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">0&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;TYPE&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;slave&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;AXFR_IPS&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;none&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;DOMAIN&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;domain3&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;TTL_SEC&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;SOA_EMAIL&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;DOMAINID&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">33333&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;DESCRIPTION&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;EXPIRE_SEC&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;RETRY_SEC&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;STATUS&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;LPM_DISPLAYGROUP&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;REFRESH_SEC&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">0&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">],&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;ERRORARRAY&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">[]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>Return the &lt;code>DOMAINID&lt;/code> from &lt;code>domain2&lt;/code>&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">jq &lt;span class="s1">&amp;#39;.DATA[] | select(.DOMAIN == &amp;#34;domain2&amp;#34;) | .DOMAINID&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="m">22222&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>Return &lt;code>DOMAINID&lt;/code> and &lt;code>TYPE&lt;/code> from &lt;code>domain2&lt;/code>&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">jq &lt;span class="s1">&amp;#39;.DATA[] | select(.DOMAIN == &amp;#34;domain2&amp;#34;) | .DOMAINID,.TYPE&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="m">22222&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">&amp;#34;slave&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>Return &lt;code>DOMAINID&lt;/code>, &lt;code>DOMAIN&lt;/code> from &lt;code>domain2&lt;/code> and &lt;code>domain3&lt;/code>&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">jq &lt;span class="s1">&amp;#39;.DATA[] | select(.DOMAIN == (&amp;#34;domain2&amp;#34;,&amp;#34;domain3&amp;#34;)) | .DOMAINID,.DOMAIN&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="m">22222&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">&amp;#34;slave&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="m">33333&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">&amp;#34;slave&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># or&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">jq &lt;span class="s1">&amp;#39;.DATA[] | select(.DOMAIN | IN(&amp;#34;domain2&amp;#34;, &amp;#34;domain3&amp;#34;)) | .DOMAINID,.DOMAIN&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="m">22222&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">&amp;#34;slave&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="m">33333&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">&amp;#34;slave&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>References:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup> Github Issue&lt;/li>
&lt;/ul>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>&lt;a href="https://github.com/stedolan/jq/issues/370" target="_blank" rel="noopener">https://github.com/stedolan/jq/issues/370&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></description></item><item><title>OR statement within jq select</title><link>https://luiscachog.io/garden/jq-select-or-statement/</link><pubDate>Thu, 26 Aug 2021 00:00:00 +0000</pubDate><guid>https://luiscachog.io/garden/jq-select-or-statement/</guid><description>&lt;ul>
&lt;li>Initial json input&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-json" data-lang="json">&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;nodes&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">[&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;name&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;crc-4727w-master-0&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;cpu&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">75&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;memory&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">82&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;name&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;crc-4727w-worker-0&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;cpu&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">65&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;memory&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">70&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;name&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;crc-4727w-worker-1&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;cpu&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">60&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;memory&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">68&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>The jq select filter with a comparison
&lt;ul>
&lt;li>Is going to show the nodes that the cpu usage is greater than 70% OR the memory usage is greater than 90%&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">jq &lt;span class="s1">&amp;#39;.nodes[] | select(.cpu &amp;gt;=70 or .memory &amp;gt;=90)&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>Result&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-json" data-lang="json">&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;name&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;crc-4727w-master-0&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;cpu&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">75&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;memory&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">82&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>Get variable types in Python</title><link>https://luiscachog.io/garden/get-variable-type-python/</link><pubDate>Wed, 11 Aug 2021 00:00:00 +0000</pubDate><guid>https://luiscachog.io/garden/get-variable-type-python/</guid><description>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python3" data-lang="python3">&lt;span class="line">&lt;span class="cl">&lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nb">type&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">variable_name&lt;/span>&lt;span class="p">))&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>Update local branch with upstream content</title><link>https://luiscachog.io/garden/update-local-branch-upstream/</link><pubDate>Wed, 11 Aug 2021 00:00:00 +0000</pubDate><guid>https://luiscachog.io/garden/update-local-branch-upstream/</guid><description>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">&lt;span class="nb">cd&lt;/span> &lt;span class="nv">$working_dir&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">git fetch upstream
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">git checkout main
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">git rebase upstream/main
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>Gitkraken Ambassador</title><link>https://luiscachog.io/gitkraken-ambassador/</link><pubDate>Mon, 09 Aug 2021 00:00:00 +0000</pubDate><guid>https://luiscachog.io/gitkraken-ambassador/</guid><description>&lt;details class="toc-inpage d-print-none " open>
&lt;summary class="font-weight-bold">Table of Contents&lt;/summary>
&lt;nav id="TableOfContents">
&lt;ul>
&lt;li>&lt;a href="#gitkraken-ambassador">GitKraken Ambassador&lt;/a>&lt;/li>
&lt;li>&lt;a href="#what-is-gitkraken">What is GitKraken?&lt;/a>
&lt;ul>
&lt;li>&lt;a href="#what-i-like">What I like&lt;/a>&lt;/li>
&lt;li>&lt;a href="#what-i-dont-like">What I don&amp;rsquo;t like&lt;/a>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;a href="#wrapping-up">Wrapping Up&lt;/a>&lt;/li>
&lt;/ul>
&lt;/nav>
&lt;/details>
&lt;p>Hello again,&lt;/p>
&lt;p>I&amp;rsquo;m happy to announce that I&amp;rsquo;m participating in the &lt;strong>&lt;a href="https://www.gitkraken.com/ambassador" target="_blank" rel="noopener">GitKraken Ambassador program&lt;/a>&lt;/strong>.&lt;/p>
&lt;p>For me, it is a joy that the GitKraken team trusts me for this work.&lt;/p>
&lt;h2 id="gitkraken-ambassador">GitKraken Ambassador&lt;/h2>
&lt;p>I have been a &lt;a href="https://www.gitkraken.com/" target="_blank" rel="noopener">GitKraken&lt;/a> advocate even before they launched this program.
I always recommend it to all my friends and colleges because I have loved it since the first time I used it, back in 2018.&lt;/p>
&lt;p>Now, I&amp;rsquo;m being named Ambassador to actively promote it in community events, meetings with other Ambassadors, beta-testing of new functionality, etc.
Also, I will create some post showing/explaining how I use GitKraken in my job, that is A LOT.&lt;/p>
&lt;p>For joining the GitKraken Ambassador team, I received:&lt;/p>
&lt;ul>
&lt;li>Free GitKraken Pro Account ($79 value)&lt;/li>
&lt;li>Ambassador Starter Kit: Stickers, Swag &amp;amp; Resources&lt;/li>
&lt;li>Access to a private Ambassador Slack Channel&lt;/li>
&lt;li>Exclusive Ambassador Content &amp;amp; early access to beta features&lt;/li>
&lt;li>Access to GitKraken Product Team to share feedback and get exclusive insight&lt;/li>
&lt;/ul>
&lt;figure id="figure-gitkraken-kit">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="GitKraken Ambassador Starter Kit" srcset="
/media/posts/gitkraken-ambassador/gitkraken-ambassador-kit_huf7d90c66abed3660249e00acc8390404_323786_54c4e42921fd0867b5ce5477527bdfd0.webp 400w,
/media/posts/gitkraken-ambassador/gitkraken-ambassador-kit_huf7d90c66abed3660249e00acc8390404_323786_5078962bd1bd3456a4ecea9235ef4152.webp 760w,
/media/posts/gitkraken-ambassador/gitkraken-ambassador-kit_huf7d90c66abed3660249e00acc8390404_323786_1200x1200_fit_q90_h2_lanczos.webp 1200w"
src="https://luiscachog.io/media/posts/gitkraken-ambassador/gitkraken-ambassador-kit_huf7d90c66abed3660249e00acc8390404_323786_54c4e42921fd0867b5ce5477527bdfd0.webp"
width="760"
height="570"
loading="lazy" data-zoomable class=" img-light" />&lt;/div>
&lt;/div>&lt;figcaption>
GitKraken Ambassador Starter Kit
&lt;/figcaption>&lt;/figure>
&lt;h2 id="what-is-gitkraken">What is GitKraken?&lt;/h2>
&lt;p>Let&amp;rsquo;s start defining what is GitKraken for me and how I use it.&lt;/p>
&lt;p>GitKraken provides me the easiest, safest, and most powerful way to interact/work with:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://git-scm.com/" target="_blank" rel="noopener">Git&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/" target="_blank" rel="noopener">GitHub&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://gitlab.com/" target="_blank" rel="noopener">GitLab&lt;/a>,&lt;/li>
&lt;li>and more Source Code Management (VCS)&lt;/li>
&lt;/ul>
&lt;p>becoming the best complement to manage your source code.&lt;/p>
&lt;p>As an Infrastructure consultant, I contribute to Ansible playbooks/roles, Terraform provisioning, Kubernetes/OpenShift manifests, Documentation, and more, but my profile is not necessary as a &lt;code>Developer&lt;/code>.
I consider myself more a &lt;code>DevOps Practitioner&lt;/code> where, from my perspective, I write code for Infrastructure in a declarative way; that being said, my workflow is slightly different from a &lt;code>Developer&lt;/code>.&lt;/p>
&lt;p>That means I usually do all my code in VSCode. Sometimes I commit using the terminal and sometimes using the Kraken.
Once I&amp;rsquo;m ready to push my changes, I switch to GitKraken to review that I&amp;rsquo;m in the correct branch/tree/tag, if there are no conflicts, etc. and,
then I do push/merge it in a collaborative way and keeping the order that the project requires and that I want to show.
That personal workflow always helped me to avoid mistakes in my job.&lt;/p>
&lt;h3 id="what-i-like">What I like&lt;/h3>
&lt;ul>
&lt;li>
&lt;p>GitKraken has a pretty neat interface where it is easy to find all I need for that git workflow.&lt;/p>
&lt;figure id="figure-gitkraken-interface">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="GitKraken Interface" srcset="
/media/posts/gitkraken-ambassador/gitkraken-interface_hu540504d15ba8624c470cb1d3dc6ef633_30261_a9041ad587dd4e9887de8fd5f1daf3d4.webp 400w,
/media/posts/gitkraken-ambassador/gitkraken-interface_hu540504d15ba8624c470cb1d3dc6ef633_30261_0d06feefb3a90a18f4585d537f58fc5d.webp 760w,
/media/posts/gitkraken-ambassador/gitkraken-interface_hu540504d15ba8624c470cb1d3dc6ef633_30261_1200x1200_fit_q90_h2_lanczos_3.webp 1200w"
src="https://luiscachog.io/media/posts/gitkraken-ambassador/gitkraken-interface_hu540504d15ba8624c470cb1d3dc6ef633_30261_a9041ad587dd4e9887de8fd5f1daf3d4.webp"
width="760"
height="350"
loading="lazy" data-zoomable class=" img-dark" />&lt;/div>
&lt;/div>&lt;figcaption>
GitKraken Interface
&lt;/figcaption>&lt;/figure>
&lt;/li>
&lt;li>
&lt;p>Multiple git profiles support&lt;/p>
&lt;figure id="figure-gitkraken-profile-1">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="GitKraken Profiles 1/2" srcset="
/media/posts/gitkraken-ambassador/gitkraken-profiles_hu68cfcafd6d62723417a88074591da48e_119220_529569022b0d68eee4517c6404a87e4b.webp 400w,
/media/posts/gitkraken-ambassador/gitkraken-profiles_hu68cfcafd6d62723417a88074591da48e_119220_7cc430f8e189bb6efdd2b2cbb9169eb2.webp 760w,
/media/posts/gitkraken-ambassador/gitkraken-profiles_hu68cfcafd6d62723417a88074591da48e_119220_1200x1200_fit_q90_h2_lanczos_3.webp 1200w"
src="https://luiscachog.io/media/posts/gitkraken-ambassador/gitkraken-profiles_hu68cfcafd6d62723417a88074591da48e_119220_529569022b0d68eee4517c6404a87e4b.webp"
width="760"
height="428"
loading="lazy" data-zoomable class=" img-dark" />&lt;/div>
&lt;/div>&lt;figcaption>
GitKraken Profiles 1/2
&lt;/figcaption>&lt;/figure>
&lt;figure id="figure-gitkraken-profile-2">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="GitKraken Profiles 2/2"
src="https://luiscachog.io/media/posts/gitkraken-ambassador/gitkraken-profiles.gif"
loading="lazy" data-zoomable class=" img-light" />&lt;/div>
&lt;/div>&lt;figcaption>
GitKraken Profiles 2/2
&lt;/figcaption>&lt;/figure>
&lt;/li>
&lt;li>
&lt;p>Easy drag and drop Pull-Request/Merge-Request integration&lt;/p>
&lt;figure id="figure-gitkraken-pr">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="GitKraken Drag &amp;amp; Drop Pull Request"
src="https://luiscachog.io/media/posts/gitkraken-ambassador/gitkraken-pull-request.gif"
loading="lazy" data-zoomable class=" img-light" />&lt;/div>
&lt;/div>&lt;figcaption>
GitKraken Drag &amp;amp; Drop Pull Request
&lt;/figcaption>&lt;/figure>
&lt;/li>
&lt;/ul>
&lt;h3 id="what-i-dont-like">What I don&amp;rsquo;t like&lt;/h3>
&lt;ul>
&lt;li>Sometimes, when my computer has high resources usage, like when I&amp;rsquo;m running some containers/virtual machines, GitKraken produces a slow down for a bit like some other GUI&amp;rsquo;s.&lt;/li>
&lt;/ul>
&lt;h2 id="wrapping-up">Wrapping Up&lt;/h2>
&lt;p>So, starting today, I&amp;rsquo;m going to generate content related to Git/Gitkraken, and to achieve this, I will write about how I integrate GitKraken into my daily work.&lt;/p>
&lt;p>If you want to start using GitKraken, you can &lt;a href="https://www.gitkraken.com/download" target="_blank" rel="noopener">download the Kraken&lt;/a> and try it by yourself!
Furthermore, I recommend to use &lt;a href="https://www.gitkraken.com/invite/kkvpJVykg" target="_blank" rel="noopener">my referral code&lt;/a> when you sign in.&lt;/p>
&lt;p>Happy coding!&lt;/p></description></item><item><title>Delete git submodule</title><link>https://luiscachog.io/garden/delete-git-submodule/</link><pubDate>Sun, 08 Aug 2021 00:00:00 +0000</pubDate><guid>https://luiscachog.io/garden/delete-git-submodule/</guid><description>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">git submodule deinit -f -- &amp;lt;name_of_submodule&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">rm -rf .git/modules/&amp;lt;name_of_submodule&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Note: The &amp;lt;name_of_submodule&amp;gt; shouldn&amp;#39;t have the trailing slash&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">git rm -f &amp;lt;name_of_submodule&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">git commit -m &lt;span class="s2">&amp;#34;Deleted submodule xyz&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Example&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">git submodule deinit -f -- a/submodule
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">rm -rf .git/modules/a/submodule
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">git rm -f a/submodule
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">git commit -m &lt;span class="s2">&amp;#34;Deleted submodule a/submodule&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>References:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>How do I remove a submodule?&lt;/li>
&lt;/ul>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>&lt;a href="https://stackoverflow.com/questions/1260748/how-do-i-remove-a-submodule#1260982" target="_blank" rel="noopener">https://stackoverflow.com/questions/1260748/how-do-i-remove-a-submodule#1260982&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></description></item></channel></rss>