<story><title>Linus on keeping a clean git history (2009)</title><url>http://www.mail-archive.com/dri-devel@lists.sourceforge.net/msg39091.html</url></story><parent_chain></parent_chain><comment><author>lukev</author><text>This highlights the only thing I don&apos;t like about Git. It&apos;s an immensely capable tool, but it gives no guidance regarding the &lt;i&gt;right&lt;/i&gt; way to do things.&lt;p&gt;Our own teams have a set of practices which are similar but different from what Linus outlines here. And different projects on my company use different practices from those.&lt;p&gt;The worst thing is that there&apos;s no way of enforcing these workflows or practices other than out-of-band social conventions. And so minor mistakes happen, all the time. Our Git projects are never as pretty as they should be.&lt;p&gt;In other words, Git provides an awesome set of primitives for source control. I&apos;m not sure what it&apos;d look like, but I&apos;d like to see a product that built on those primitives to enforce a little more order on projects.</text></comment>
<story><title>Linus on keeping a clean git history (2009)</title><url>http://www.mail-archive.com/dri-devel@lists.sourceforge.net/msg39091.html</url></story><parent_chain></parent_chain><comment><author>mattdeboard</author><text>Like lukev said, git is &quot;an awesome set of primitives&quot;. How you build a workflow out of those primitives isn&apos;t set in stone (though, like most things, Linus has strong opinions on exactly how to use his products). This is basically what Github has done, with an extra layer of UI glitz, social, and (much-improved) notifications.&lt;p&gt;That said, IMO there is still quite a lot of room for customization in git workflow when using Github. For example, we don&apos;t &quot;send patches around&quot; as Linus says. Our private feature branches live on Github but we&apos;ve adopted the convention that the &quot;private&quot; branch name is prefixed by who&apos;s working on it, e.g. mdeboard-oauth, jschmoe-url-routes. If it has someone&apos;s name at the front, don&apos;t touch it. That enables us to still use the &quot;D&quot; in DVCS while retaining the ability to safely rebase our own work to keep our history clean.&lt;p&gt;The only reason I&apos;d want a git-based product to &quot;enforce order&quot; is a culture-related one: ensure that contributors/collaborators do things in line with the conventions we&apos;ve established. However, IMO it&apos;s always better to have a conversation about that than work with an overly prescriptive tool.</text></comment>