<?xml version="1.0" encoding="UTF-8"?>
<feed xml:lang="en-US" xmlns="http://www.w3.org/2005/Atom">
  <title>Bryan Helmkamp - Our Git deployment workflow Comments</title>
  <id>tag:www.brynary.com,2008:/2008/8/3/our-git-deployment-workflow/comments</id>
  <generator version="0.8.0" uri="http://mephistoblog.com">Mephisto Drax</generator>
  <link href="http://www.brynary.com/2008/8/3/our-git-deployment-workflow/comments.xml" rel="self" type="application/atom+xml"/>
  <link href="/2008/8/3/our-git-deployment-workflow" rel="alternate" type="text/html"/>
  <updated>2008-08-21T15:40:58Z</updated>
  <entry xml:base="http://www.brynary.com/">
    <author>
      <name>Chris Hoeppner</name>
    </author>
    <id>tag:www.brynary.com,2008-08-03:1082:1092</id>
    <published>2008-08-21T15:40:58Z</published>
    <updated>2008-08-21T15:40:58Z</updated>
    <category term="Rails"/>
    <category term="Ruby"/>
    <link href="http://www.brynary.com/2008/8/3/our-git-deployment-workflow" rel="alternate" type="text/html"/>
    <title>Comment on 'Our Git deployment workflow' by Chris Hoeppner</title>
<content type="html">&lt;p&gt;The whole procedure looks like you&#8217;re using git as if it was subversion. Hard resets, forced pushes, etc, built into everything.&lt;/p&gt;</content>  </entry>
  <entry xml:base="http://www.brynary.com/">
    <author>
      <name>Bryan Helmkamp</name>
    </author>
    <id>tag:www.brynary.com,2008-08-03:1082:1090</id>
    <published>2008-08-16T03:50:27Z</published>
    <updated>2008-08-16T03:50:27Z</updated>
    <category term="Rails"/>
    <category term="Ruby"/>
    <link href="http://www.brynary.com/2008/8/3/our-git-deployment-workflow" rel="alternate" type="text/html"/>
    <title>Comment on 'Our Git deployment workflow' by Bryan Helmkamp</title>
<content type="html">&lt;p&gt;Good point, Tammer. I&#8217;ll see about checking for success response codes.&lt;/p&gt;</content>  </entry>
  <entry xml:base="http://www.brynary.com/">
    <author>
      <name>Tammer Saleh</name>
    </author>
    <id>tag:www.brynary.com,2008-08-03:1082:1089</id>
    <published>2008-08-15T13:42:31Z</published>
    <updated>2008-08-15T13:42:31Z</updated>
    <category term="Rails"/>
    <category term="Ruby"/>
    <link href="http://www.brynary.com/2008/8/3/our-git-deployment-workflow" rel="alternate" type="text/html"/>
    <title>Comment on 'Our Git deployment workflow' by Tammer Saleh</title>
<content type="html">&lt;p&gt;Bryan &#8211; this is a great post, and looks very useful.  We&#8217;re just starting to move some of our rails apps to git, and this will definitely be helpful.  One comment on the script:  you&#8217;re not checking the return values of any of the git commands.  If one of them fails, (like git co xxx), then the rest of the commands (like git reset&#8212;hard) will still run.  I&#8217;m not sure what kind of problems this could cause.&lt;/p&gt;</content>  </entry>
  <entry xml:base="http://www.brynary.com/">
    <author>
      <name>Micah Geisel</name>
    </author>
    <id>tag:www.brynary.com,2008-08-03:1082:1087</id>
    <published>2008-08-11T21:19:13Z</published>
    <updated>2008-08-11T21:19:13Z</updated>
    <category term="Rails"/>
    <category term="Ruby"/>
    <link href="http://www.brynary.com/2008/8/3/our-git-deployment-workflow" rel="alternate" type="text/html"/>
    <title>Comment on 'Our Git deployment workflow' by Micah Geisel</title>
<content type="html">&lt;p&gt;thanks for the post, i&#8217;ve been attempting to standardize a similar git workflow for my team, and its interesting to see another&#8217;s implementation. so please continue posting as this matures. quick thought: change your GitCommands instance methods to class methods, and you can eliminate the &#8216;new&#8217; keyword in your calls.&lt;/p&gt;</content>  </entry>
  <entry xml:base="http://www.brynary.com/">
    <author>
      <name>Bryan Helmkamp</name>
    </author>
    <id>tag:www.brynary.com,2008-08-03:1082:1086</id>
    <published>2008-08-10T21:48:35Z</published>
    <updated>2008-08-10T21:48:35Z</updated>
    <category term="Rails"/>
    <category term="Ruby"/>
    <link href="http://www.brynary.com/2008/8/3/our-git-deployment-workflow" rel="alternate" type="text/html"/>
    <title>Comment on 'Our Git deployment workflow' by Bryan Helmkamp</title>
<content type="html">&lt;p&gt;Henrik&#8212;Fixed thanks.&lt;/p&gt;


	&lt;p&gt;Jesse&#8212;That was my original reaction as well when we&#8217;re setting this up, and a few other people have shared similar comments. Functionally, we&#8217;re leveraging git&#8217;s branches as if they were tags that we can replace at will across our remotes. Because we never commit to the staging and production branches directly (which our rake tasks help enforce), we never lose history.&lt;/p&gt;


	&lt;p&gt;We&#8217;re interested in alternatives, and one of the reasons I posted this is to see if people had suggestions on how we could do better.&lt;/p&gt;


	&lt;p&gt;Looking at the docs for git-merge, I wonder if instead of a reset&#8212;hard we could do a merge using the &#8220;ours&#8221; strategy. That might let us workaround the problem with a vanilla merge, where we just want to replace instead and not deal with conflicts.&lt;/p&gt;


	&lt;p&gt;There&#8217;s also the possibility that it can be better done with tags, but from my brief experiments that seems to be problematic. We&#8217;d also have to force push tag updates, which I&#8217;m not sure is any better.&lt;/p&gt;


	&lt;p&gt;Thoughts?&lt;/p&gt;</content>  </entry>
  <entry xml:base="http://www.brynary.com/">
    <author>
      <name>Jesse Andrews</name>
    </author>
    <id>tag:www.brynary.com,2008-08-03:1082:1085</id>
    <published>2008-08-07T00:48:24Z</published>
    <updated>2008-08-07T00:48:24Z</updated>
    <category term="Rails"/>
    <category term="Ruby"/>
    <link href="http://www.brynary.com/2008/8/3/our-git-deployment-workflow" rel="alternate" type="text/html"/>
    <title>Comment on 'Our Git deployment workflow' by Jesse Andrews</title>
<content type="html">&lt;p&gt;I&#8217;ve simplified tag_staging, tag_production, branch_production &#8211; check out &lt;a href=&quot;http://gist.github.com/4294&quot;&gt;gist 4294&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;&lt;span class=&quot;caps&quot;&gt;BUT I&lt;/span&gt; really really really think this is wrong.  (not the ruby code, but the methodology).&lt;/p&gt;


	&lt;p&gt;You are loosing the best parts of Git by continually rewriting history.  Any time you see a push -f or reset in the normal flow you are miss-using git.&lt;/p&gt;


	&lt;p&gt;Anyone can stage a branch that isn&#8217;t a descendant of origin/production then rake tag:production.  All of a sudden all that history is gone!&lt;/p&gt;</content>  </entry>
  <entry xml:base="http://www.brynary.com/">
    <author>
      <name>Henrik N</name>
    </author>
    <id>tag:www.brynary.com,2008-08-03:1082:1084</id>
    <published>2008-08-06T23:02:20Z</published>
    <updated>2008-08-06T23:02:20Z</updated>
    <category term="Rails"/>
    <category term="Ruby"/>
    <link href="http://www.brynary.com/2008/8/3/our-git-deployment-workflow" rel="alternate" type="text/html"/>
    <title>Comment on 'Our Git deployment workflow' by Henrik N</title>
<content type="html">&lt;p&gt;Nice.&lt;/p&gt;


	&lt;p&gt;tag\_producton -&amp;gt; tag\_production&lt;/p&gt;</content>  </entry>
  <entry xml:base="http://www.brynary.com/">
    <author>
      <name>Chris</name>
    </author>
    <id>tag:www.brynary.com,2008-08-03:1082:1083</id>
    <published>2008-08-06T05:05:56Z</published>
    <updated>2008-08-06T05:05:56Z</updated>
    <category term="Rails"/>
    <category term="Ruby"/>
    <link href="http://www.brynary.com/2008/8/3/our-git-deployment-workflow" rel="alternate" type="text/html"/>
    <title>Comment on 'Our Git deployment workflow' by Chris</title>
<content type="html">&lt;p&gt;Thanks for sharing.  I&#8217;ve put up your rake tasks as a Gist: http://gist.github.com/4169&lt;/p&gt;</content>  </entry>
</feed>
