<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>VersionControl on billpg industries™</title><link>https://owl.billpg.com/tags/versioncontrol/</link><description>Recent content in VersionControl on billpg industries™</description><generator>Hugo</generator><language>en-us</language><copyright>© William Godfrey.</copyright><lastBuildDate>Sun, 09 Dec 2018 11:35:00 +0000</lastBuildDate><atom:link href="https://owl.billpg.com/tags/versioncontrol/index.xml" rel="self" type="application/rss+xml"/><item><title>GIT isn't perfect. (And other blasphemies.)</title><link>https://owl.billpg.com/git-isnt-perfect-and-other-blasphemies/</link><pubDate>Sun, 09 Dec 2018 11:35:00 +0000</pubDate><guid>https://owl.billpg.com/git-isnt-perfect-and-other-blasphemies/</guid><description>&lt;p&gt;&lt;img src="https://owl.billpg.com/images/HeWasSuchAStupid.jpg" style="margin-left: 5px; margin-bottom: 3px;" data-align="right" /&gt; I was embarrassingly late in the game coming to GIT as a version control system. Time has since passed and I&amp;rsquo;m now happily using it. The days when we had to lock files before we worked on them are thankfully a distant memory. My road was a little bumpy&amp;hellip;&lt;/p&gt;
&lt;h2 id="orphan-git"&gt;Orphan git.&lt;/h2&gt;
&lt;p&gt;It&amp;rsquo;s a new dawn, it&amp;rsquo;s a new day, it&amp;rsquo;s new version control system and I&amp;rsquo;m ready to download a project from a GIT server. The first step was to perform a &lt;strong&gt;clone&lt;/strong&gt; of a project. &amp;ldquo;Clone? That&amp;rsquo;s a strange word for it. Maybe this is just it&amp;rsquo;s own way of saying &lt;em&gt;Download&lt;/em&gt;.&amp;rdquo; Whatever you call it, my &amp;ldquo;clone&amp;rdquo; was ready and I can get to work. Later, I&amp;rsquo;ve done my work, tested it my dev-environment and I&amp;rsquo;m ready to check it in. Before I do that I need to check on any changes the others have done. Looking for a &amp;ldquo;Get Latest&amp;rdquo; option, I find &amp;ldquo;Pull&amp;rdquo;, which seems to do the right thing. Those changes don&amp;rsquo;t conflict with mine so I can continue. How do I get my changes back to the server? There&amp;rsquo;s a &amp;ldquo;push&amp;rdquo; option which sounds like it would be the opposite to pull, but that doesn&amp;rsquo;t do anything. Finally, I find &amp;ldquo;Commit&amp;rdquo; and it shows me all my changes with space to write my comments. Success! I&amp;rsquo;ve committed my changes to the master branch! Sounds final. The red icons next to the modified files have now turned green. There&amp;rsquo;s no indication there&amp;rsquo;s more to do, or at least none that&amp;rsquo;s obvious to this beginner. My job is done so I can now switch my workstation off and disappear on vacation for a week. Not quite. The thing called the &amp;ldquo;master&amp;rdquo; branch isn&amp;rsquo;t &lt;strong&gt;the&lt;/strong&gt; master branch. When I had the &amp;ldquo;clone&amp;rdquo; operation and thought the name was a bit odd, it turned out I had just made a complete copy of the code repository and it was now separate from the original. To finish the job, I needed to also perform a &lt;strong&gt;push&lt;/strong&gt;, but after having done the commit. And this is what annoys me about GIT - we profoundly disagree about what&amp;rsquo;s important. As far as I&amp;rsquo;m concerned, my local hard disk is just a necessary staging point to the way to the central repository where release builds happen. You perform a &lt;em&gt;commit&lt;/em&gt; and that has all the ceremony and pizzazz, but a &lt;em&gt;push&lt;/em&gt; deals with the big picture. Ask most GIT clients what&amp;rsquo;s important an it will answer that its own local repository is the focus of operations. The remote server is basically an after-thought. &amp;ldquo;Huzzah! We&amp;rsquo;ve done a commit! Oh, you want to push too. Okay then. Don&amp;rsquo;t forget to do the push again next time because I won&amp;rsquo;t remind you if you forget!&amp;rdquo; (I have, many times, ran completely pointless builds having committed but forgotten to push. The build server builds without my changes and I end up wondering why nothing I did made any difference.)&lt;/p&gt;</description></item></channel></rss>