<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Git looks really nice, until&#8230;.</title>
	<atom:link href="http://changelog.complete.org/archives/690-git-looks-really-nice-until/feed" rel="self" type="application/rss+xml" />
	<link>http://changelog.complete.org/archives/690-git-looks-really-nice-until</link>
	<description>Viewpoints on technology, society, and government</description>
	<lastBuildDate>Sun, 05 Feb 2012 03:11:59 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>By: Jonathan Swarthin</title>
		<link>http://changelog.complete.org/archives/690-git-looks-really-nice-until/comment-page-1#comment-2008</link>
		<dc:creator>Jonathan Swarthin</dc:creator>
		<pubDate>Wed, 27 Feb 2008 21:25:09 +0000</pubDate>
		<guid isPermaLink="false">http://changelog2.complete.org/archives/690-git-looks-really-nice-until.html#comment-2008</guid>
		<description>&gt; Many projects that use git require you 
&gt; to submit things using git-format-patch
&gt; instead of pushing/pulling from you.
&gt; They don&#039;t want your merge history.

In typical blogger fashion you assume too much.</description>
		<content:encoded><![CDATA[<p>> Many projects that use git require you<br />
> to submit things using git-format-patch<br />
> instead of pushing/pulling from you.<br />
> They don&#8217;t want your merge history.</p>
<p>In typical blogger fashion you assume too much.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Karl Hasseström</title>
		<link>http://changelog.complete.org/archives/690-git-looks-really-nice-until/comment-page-1#comment-2005</link>
		<dc:creator>Karl Hasseström</dc:creator>
		<pubDate>Tue, 26 Feb 2008 08:08:53 +0000</pubDate>
		<guid isPermaLink="false">http://changelog2.complete.org/archives/690-git-looks-really-nice-until.html#comment-2005</guid>
		<description>The kind of history rewriting that Linus et al advocate is to rewrite
near-term history so that it&#039;s pretty, but not touch long-term
history.

The idea being that the mistakes you make and correct in a single
afternoon (or maybe a week) are going to look more like noise than
information in the long run, and you&#039;re better off just recording
history that&#039;s designed to be easy to read. Whereas longer term, you
can&#039;t keep the history in your head anymore, so you use the tool to
record the history that actually happened.

The end result is that when you look at the history, it&#039;ll be
carefully composed in the small, and historically accurate in the
large.

It&#039;s all rather like writing a diary. You edit and revise all you want
as you write each entry, but don&#039;t touch the older ones.</description>
		<content:encoded><![CDATA[<p>The kind of history rewriting that Linus et al advocate is to rewrite<br />
near-term history so that it&#8217;s pretty, but not touch long-term<br />
history.</p>
<p>The idea being that the mistakes you make and correct in a single<br />
afternoon (or maybe a week) are going to look more like noise than<br />
information in the long run, and you&#8217;re better off just recording<br />
history that&#8217;s designed to be easy to read. Whereas longer term, you<br />
can&#8217;t keep the history in your head anymore, so you use the tool to<br />
record the history that actually happened.</p>
<p>The end result is that when you look at the history, it&#8217;ll be<br />
carefully composed in the small, and historically accurate in the<br />
large.</p>
<p>It&#8217;s all rather like writing a diary. You edit and revise all you want<br />
as you write each entry, but don&#8217;t touch the older ones.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: John Goerzen</title>
		<link>http://changelog.complete.org/archives/690-git-looks-really-nice-until/comment-page-1#comment-2002</link>
		<dc:creator>John Goerzen</dc:creator>
		<pubDate>Mon, 25 Feb 2008 15:40:45 +0000</pubDate>
		<guid isPermaLink="false">http://changelog2.complete.org/archives/690-git-looks-really-nice-until.html#comment-2002</guid>
		<description>I don&#039;t think so.  That assumes a &quot;don&#039;t commit until it compiles&quot; policy.  Or at least a &quot;don&#039;t keep commits that don&#039;t compile&quot; policy.

As far as I can see, such a policy is a huge loss, because you lose all that development history.  Which, let&#039;s face it, is what a DVCS is supposed to help with.

This is more suited for a stable vs. development branch sort of thing.</description>
		<content:encoded><![CDATA[<p>I don&#8217;t think so.  That assumes a &#8220;don&#8217;t commit until it compiles&#8221; policy.  Or at least a &#8220;don&#8217;t keep commits that don&#8217;t compile&#8221; policy.</p>
<p>As far as I can see, such a policy is a huge loss, because you lose all that development history.  Which, let&#8217;s face it, is what a DVCS is supposed to help with.</p>
<p>This is more suited for a stable vs. development branch sort of thing.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Anonymous</title>
		<link>http://changelog.complete.org/archives/690-git-looks-really-nice-until/comment-page-1#comment-2001</link>
		<dc:creator>Anonymous</dc:creator>
		<pubDate>Mon, 25 Feb 2008 15:26:42 +0000</pubDate>
		<guid isPermaLink="false">http://changelog2.complete.org/archives/690-git-looks-really-nice-until.html#comment-2001</guid>
		<description>Major tradeoff, though: you lose the ability to grab a random version in the middle, compile it, and run it.</description>
		<content:encoded><![CDATA[<p>Major tradeoff, though: you lose the ability to grab a random version in the middle, compile it, and run it.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: John Goerzen</title>
		<link>http://changelog.complete.org/archives/690-git-looks-really-nice-until/comment-page-1#comment-2000</link>
		<dc:creator>John Goerzen</dc:creator>
		<pubDate>Mon, 25 Feb 2008 15:12:21 +0000</pubDate>
		<guid isPermaLink="false">http://changelog2.complete.org/archives/690-git-looks-really-nice-until.html#comment-2000</guid>
		<description>Yes, I quite agree with this.  If I implemented something in a way that I discover is broken 2 years later, knowing my path to that particular implementation is often quite interesting.  And useful.</description>
		<content:encoded><![CDATA[<p>Yes, I quite agree with this.  If I implemented something in a way that I discover is broken 2 years later, knowing my path to that particular implementation is often quite interesting.  And useful.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Pierre Thierry</title>
		<link>http://changelog.complete.org/archives/690-git-looks-really-nice-until/comment-page-1#comment-1998</link>
		<dc:creator>Pierre Thierry</dc:creator>
		<pubDate>Mon, 25 Feb 2008 10:41:19 +0000</pubDate>
		<guid isPermaLink="false">http://changelog2.complete.org/archives/690-git-looks-really-nice-until.html#comment-1998</guid>
		<description>It&#039;s very strange that Linus thinks that WIP history is useless. In my experience, it&#039;s invaluable when it comes to understanding code, especially when it&#039;s broken or unusual.

Epistemology also somewhat contradicts that. There&#039;s far more about science than its mere results. And often the path to the results is very complicated, sometimes quite convoluted. Having people think that the path of ideas that led to the results is the one exhibited in publications is detrimental to science.</description>
		<content:encoded><![CDATA[<p>It&#8217;s very strange that Linus thinks that WIP history is useless. In my experience, it&#8217;s invaluable when it comes to understanding code, especially when it&#8217;s broken or unusual.</p>
<p>Epistemology also somewhat contradicts that. There&#8217;s far more about science than its mere results. And often the path to the results is very complicated, sometimes quite convoluted. Having people think that the path of ideas that led to the results is the one exhibited in publications is detrimental to science.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Rémi Vanicat</title>
		<link>http://changelog.complete.org/archives/690-git-looks-really-nice-until/comment-page-1#comment-1997</link>
		<dc:creator>Rémi Vanicat</dc:creator>
		<pubDate>Mon, 25 Feb 2008 07:37:12 +0000</pubDate>
		<guid isPermaLink="false">http://changelog2.complete.org/archives/690-git-looks-really-nice-until.html#comment-1997</guid>
		<description>Well, If you only want to save your history, you can do something like:

git tag before-rebase-$(date +&quot;%Y%m%d&quot;)

then rebase. Git will remember the old branch, but use the new one.

You could also do use stacked git (stg). With stg you maintain a seri of patch on top of upstream, rebasing them when needed. Stg will remember, separately, the history of each patch.</description>
		<content:encoded><![CDATA[<p>Well, If you only want to save your history, you can do something like:</p>
<p>git tag before-rebase-$(date +&#8221;%Y%m%d&#8221;)</p>
<p>then rebase. Git will remember the old branch, but use the new one.</p>
<p>You could also do use stacked git (stg). With stg you maintain a seri of patch on top of upstream, rebasing them when needed. Stg will remember, separately, the history of each patch.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jan Hudec</title>
		<link>http://changelog.complete.org/archives/690-git-looks-really-nice-until/comment-page-1#comment-1996</link>
		<dc:creator>Jan Hudec</dc:creator>
		<pubDate>Mon, 25 Feb 2008 06:56:58 +0000</pubDate>
		<guid isPermaLink="false">http://changelog2.complete.org/archives/690-git-looks-really-nice-until.html#comment-1996</guid>
		<description>It&#039;s obviously not a Git problem, but a policy problem. It is just that Git makes that policy easy, because it&#039;s Linus&#039; policy (which does not mean the pull/push policy wouldn&#039;t be easy -- it still is).

I recall seeing a long mail from Linus (I can&#039;t think of good terms to find it right now though), where he argues, that recording the work in progress in history is worthless and only the final changes, split into logical chunks, should be recorded.

Linus compared it to math assignment -- you have a lot of papers with various calculations, but you only hand in the result and the direct calculation that leads to it. The rest is not interesting. And patches should be the same -- you do the work in random order, change your mind a few times in the process, but you should only submit the final change, split into logical chunks. That makes it easier to review the changes. It eventually even makes the history more useful, because it is simpler.

Besides the history being easier to read , one practical upshot is, that you can then effectively bisect the history when looking for when bug was introduced. If you included the work in progress, the bisect would wind up somewhere in the middle of that with something hard to understand if it worked at all, because the guilty commit might be a work in progress state where something else is broken that prevents you from testing what you want.</description>
		<content:encoded><![CDATA[<p>It&#8217;s obviously not a Git problem, but a policy problem. It is just that Git makes that policy easy, because it&#8217;s Linus&#8217; policy (which does not mean the pull/push policy wouldn&#8217;t be easy &#8212; it still is).</p>
<p>I recall seeing a long mail from Linus (I can&#8217;t think of good terms to find it right now though), where he argues, that recording the work in progress in history is worthless and only the final changes, split into logical chunks, should be recorded.</p>
<p>Linus compared it to math assignment &#8212; you have a lot of papers with various calculations, but you only hand in the result and the direct calculation that leads to it. The rest is not interesting. And patches should be the same &#8212; you do the work in random order, change your mind a few times in the process, but you should only submit the final change, split into logical chunks. That makes it easier to review the changes. It eventually even makes the history more useful, because it is simpler.</p>
<p>Besides the history being easier to read , one practical upshot is, that you can then effectively bisect the history when looking for when bug was introduced. If you included the work in progress, the bisect would wind up somewhere in the middle of that with something hard to understand if it worked at all, because the guilty commit might be a work in progress state where something else is broken that prevents you from testing what you want.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Anonymous</title>
		<link>http://changelog.complete.org/archives/690-git-looks-really-nice-until/comment-page-1#comment-1995</link>
		<dc:creator>Anonymous</dc:creator>
		<pubDate>Mon, 25 Feb 2008 04:55:00 +0000</pubDate>
		<guid isPermaLink="false">http://changelog2.complete.org/archives/690-git-looks-really-nice-until.html#comment-1995</guid>
		<description>I have never run into a project that won&#039;t accept a git pull rather than a mailed patch.  In any case, that sounds like an issue of human policy, not git mechanism.  Git *can* create a self-contained construct that includes history; see &quot;git bundle&quot;.  However, if people refuse anything except the output of &quot;git format-patch&quot;, then I don&#039;t see what Git could do about it.  Furthermore, some people prefer a linear history, and use &quot;rebase&quot; rather than &quot;merge&quot; unless the merge has some significance to them.</description>
		<content:encoded><![CDATA[<p>I have never run into a project that won&#8217;t accept a git pull rather than a mailed patch.  In any case, that sounds like an issue of human policy, not git mechanism.  Git *can* create a self-contained construct that includes history; see &#8220;git bundle&#8221;.  However, if people refuse anything except the output of &#8220;git format-patch&#8221;, then I don&#8217;t see what Git could do about it.  Furthermore, some people prefer a linear history, and use &#8220;rebase&#8221; rather than &#8220;merge&#8221; unless the merge has some significance to them.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Yaroslav Halchenko</title>
		<link>http://changelog.complete.org/archives/690-git-looks-really-nice-until/comment-page-1#comment-1994</link>
		<dc:creator>Yaroslav Halchenko</dc:creator>
		<pubDate>Mon, 25 Feb 2008 04:06:43 +0000</pubDate>
		<guid isPermaLink="false">http://changelog2.complete.org/archives/690-git-looks-really-nice-until.html#comment-1994</guid>
		<description>development-with-merge

Pardon my ignorance -- may be I didn&#039;t comprehend the problem in its entirety since I do not usually submit lots of patches off git repository.

Why not to keep branch upstream from which is branch-off your upstream-devel from which you generate and submit patches which modified or not accepted virtually in upstream (which you fetch and rebase or I just conventionally do merge origin/upstream which should result in simple rebase since I don&#039;t modify upstream directly). Then simply merge origin/upstream also in your upstream-devel. If there was a change to your patch -- there would be a conflict in that place which you can explicitly &#039;resolve&#039; once and forever, and continue your hacking?
or if you hacked on top of it before upstream absorbed it, then branch-off temporary branch at the moment where you submitted your patch (let that commit be aaaaaaaa and new branch name  upstream-devel-temp), merge origin/upstream into upstream-devel-temp, and then rebase your changes on top of merged upstream? (then remove prev upstream-devel and rename upstream-devel-temp into upstream-devel)...

or am I too confused and thus confusing others? ;-)</description>
		<content:encoded><![CDATA[<p>development-with-merge</p>
<p>Pardon my ignorance &#8212; may be I didn&#8217;t comprehend the problem in its entirety since I do not usually submit lots of patches off git repository.</p>
<p>Why not to keep branch upstream from which is branch-off your upstream-devel from which you generate and submit patches which modified or not accepted virtually in upstream (which you fetch and rebase or I just conventionally do merge origin/upstream which should result in simple rebase since I don&#8217;t modify upstream directly). Then simply merge origin/upstream also in your upstream-devel. If there was a change to your patch &#8212; there would be a conflict in that place which you can explicitly &#8216;resolve&#8217; once and forever, and continue your hacking?<br />
or if you hacked on top of it before upstream absorbed it, then branch-off temporary branch at the moment where you submitted your patch (let that commit be aaaaaaaa and new branch name  upstream-devel-temp), merge origin/upstream into upstream-devel-temp, and then rebase your changes on top of merged upstream? (then remove prev upstream-devel and rename upstream-devel-temp into upstream-devel)&#8230;</p>
<p>or am I too confused and thus confusing others? ;-)</p>
]]></content:encoded>
	</item>
</channel>
</rss>

