<?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: Wanted: Git Help for HIG</title>
	<atom:link href="http://blogs.gnome.org/shaunm/2009/04/21/wanted-git-help-for-hig/feed/" rel="self" type="application/rss+xml" />
	<link>http://blogs.gnome.org/shaunm/2009/04/21/wanted-git-help-for-hig/</link>
	<description>Fourteen hours to save the Earth</description>
	<lastBuildDate>Sat, 21 Nov 2009 04:45:44 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Calum</title>
		<link>http://blogs.gnome.org/shaunm/2009/04/21/wanted-git-help-for-hig/comment-page-1/#comment-154</link>
		<dc:creator>Calum</dc:creator>
		<pubDate>Wed, 22 Apr 2009 19:47:09 +0000</pubDate>
		<guid isPermaLink="false">http://blogs.gnome.org/shaunm/?p=113#comment-154</guid>
		<description>Yeah, I wouldn&#039;t worry too much about preserving history, tbh.  At this stage, I think it&#039;s not unlikely that the current devel version of the HIG will be scrapped and rewritten for 3.0 anyway... or perhaps that&#039;s just wishful thinking :)</description>
		<content:encoded><![CDATA[<p>Yeah, I wouldn&#8217;t worry too much about preserving history, tbh.  At this stage, I think it&#8217;s not unlikely that the current devel version of the HIG will be scrapped and rewritten for 3.0 anyway&#8230; or perhaps that&#8217;s just wishful thinking <img src='http://blogs.gnome.org/shaunm/wp-content/mu-plugins/tango-smilies/tango/face-smile.png' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Owen Taylor</title>
		<link>http://blogs.gnome.org/shaunm/2009/04/21/wanted-git-help-for-hig/comment-page-1/#comment-153</link>
		<dc:creator>Owen Taylor</dc:creator>
		<pubDate>Wed, 22 Apr 2009 12:34:02 +0000</pubDate>
		<guid isPermaLink="false">http://blogs.gnome.org/shaunm/?p=113#comment-153</guid>
		<description>It&#039;s going to be pretty hard to recover that branch. Not only is there the difference of tree structure, but a) the initial commit of the branch doesn&#039;t have the right parent commit, so it looks unrelated to history prior to 2007 b) older version in the branch are missing files *within* hig/C; the files appear only when first modified.

With a fair bit of work, git-filter-branch --parent-filter and git-filter-branch --tree-filter could be used to rewrite the branch &quot;as it should have been&quot; by using the right parent commit, moving stuff to the subdir, and adding missing files. If you decide to go that route and get something you like, find me on IRC for help in pushing the rewritten branch to git.gnome.org.

However, I don&#039;t see much useful history on that branch, so maybe it isn&#039;t worth it.</description>
		<content:encoded><![CDATA[<p>It&#8217;s going to be pretty hard to recover that branch. Not only is there the difference of tree structure, but a) the initial commit of the branch doesn&#8217;t have the right parent commit, so it looks unrelated to history prior to 2007 b) older version in the branch are missing files *within* hig/C; the files appear only when first modified.</p>
<p>With a fair bit of work, git-filter-branch &#8211;parent-filter and git-filter-branch &#8211;tree-filter could be used to rewrite the branch &#8220;as it should have been&#8221; by using the right parent commit, moving stuff to the subdir, and adding missing files. If you decide to go that route and get something you like, find me on IRC for help in pushing the rewritten branch to git.gnome.org.</p>
<p>However, I don&#8217;t see much useful history on that branch, so maybe it isn&#8217;t worth it.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mark Drago</title>
		<link>http://blogs.gnome.org/shaunm/2009/04/21/wanted-git-help-for-hig/comment-page-1/#comment-152</link>
		<dc:creator>Mark Drago</dc:creator>
		<pubDate>Wed, 22 Apr 2009 11:27:58 +0000</pubDate>
		<guid isPermaLink="false">http://blogs.gnome.org/shaunm/?p=113#comment-152</guid>
		<description>Maybe the subtree merge strategy of git is what you&#039;re looking for?  Check `man git-branch` which has a very brief description.  I haven&#039;t had the need to use it yet, but it sounds like it might be just what you need.</description>
		<content:encoded><![CDATA[<p>Maybe the subtree merge strategy of git is what you&#8217;re looking for?  Check `man git-branch` which has a very brief description.  I haven&#8217;t had the need to use it yet, but it sounds like it might be just what you need.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: garrett</title>
		<link>http://blogs.gnome.org/shaunm/2009/04/21/wanted-git-help-for-hig/comment-page-1/#comment-151</link>
		<dc:creator>garrett</dc:creator>
		<pubDate>Wed, 22 Apr 2009 09:15:54 +0000</pubDate>
		<guid isPermaLink="false">http://blogs.gnome.org/shaunm/?p=113#comment-151</guid>
		<description>(Note: The typewriter single and double quote marks got WordPressified into typographical marks.)</description>
		<content:encoded><![CDATA[<p>(Note: The typewriter single and double quote marks got WordPressified into typographical marks.)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: garrett</title>
		<link>http://blogs.gnome.org/shaunm/2009/04/21/wanted-git-help-for-hig/comment-page-1/#comment-150</link>
		<dc:creator>garrett</dc:creator>
		<pubDate>Wed, 22 Apr 2009 09:12:18 +0000</pubDate>
		<guid isPermaLink="false">http://blogs.gnome.org/shaunm/?p=113#comment-150</guid>
		<description>I made two experimental local branches, first starting from the hig-devel branch, re-writing it to move all the files to hig/C/ like so:

git filter-branch --tree-filter &#039;mkdir -p hig/C; ls &#124; grep -v &quot;^hig$&quot; &#124; xargs -ifoo mv foo hig/C/&#039; HEAD

Then I did a &quot;git merge master&quot; to merge in the changes. There were conflicts, so I opted for the branch&#039;s version with &quot;git checkout --ours&quot; (and then the conflicting files). I did a &quot;git add&quot; for those conflicting files, and then a &quot;git commit&quot;.

An option is to rebase the new version of the branch off of master with &quot;git rebase master&quot;, to move the commits above the trunk. It&#039;s a bit of a mess, and you&#039;ll get conflicts along the way. I did the &quot;checkout --ours&quot; thing for the files each step of the way, and then a &quot;git rebase --continue&quot; (after adding the conflicting files). After a while of doing that, it was finally finished. For good measure, I did a &quot;git merge --squash&quot; (and then the original branch), since there were so many conflicts.

Neither is perfect, but it moves the files to where they are supposed to be and they&#039;re both attempts to preserve much of the history.

I can publish the two versions of the changed branches somewhere (even to the official repository) if you&#039;d like to inspect them... just let me know.

If you do decide to make a modified version of the branch an official one, you would have to do a force push if you keep the same name, and make sure everyone else who checked it out does a force pull. I suggest just using a different name for the branch and removing the original &quot;hig-devel&quot;, to spare possible confusion.</description>
		<content:encoded><![CDATA[<p>I made two experimental local branches, first starting from the hig-devel branch, re-writing it to move all the files to hig/C/ like so:</p>
<p>git filter-branch &#8211;tree-filter &#8216;mkdir -p hig/C; ls | grep -v &#8220;^hig$&#8221; | xargs -ifoo mv foo hig/C/&#8217; HEAD</p>
<p>Then I did a &#8220;git merge master&#8221; to merge in the changes. There were conflicts, so I opted for the branch&#8217;s version with &#8220;git checkout &#8211;ours&#8221; (and then the conflicting files). I did a &#8220;git add&#8221; for those conflicting files, and then a &#8220;git commit&#8221;.</p>
<p>An option is to rebase the new version of the branch off of master with &#8220;git rebase master&#8221;, to move the commits above the trunk. It&#8217;s a bit of a mess, and you&#8217;ll get conflicts along the way. I did the &#8220;checkout &#8211;ours&#8221; thing for the files each step of the way, and then a &#8220;git rebase &#8211;continue&#8221; (after adding the conflicting files). After a while of doing that, it was finally finished. For good measure, I did a &#8220;git merge &#8211;squash&#8221; (and then the original branch), since there were so many conflicts.</p>
<p>Neither is perfect, but it moves the files to where they are supposed to be and they&#8217;re both attempts to preserve much of the history.</p>
<p>I can publish the two versions of the changed branches somewhere (even to the official repository) if you&#8217;d like to inspect them&#8230; just let me know.</p>
<p>If you do decide to make a modified version of the branch an official one, you would have to do a force push if you keep the same name, and make sure everyone else who checked it out does a force pull. I suggest just using a different name for the branch and removing the original &#8220;hig-devel&#8221;, to spare possible confusion.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Johannes Berg</title>
		<link>http://blogs.gnome.org/shaunm/2009/04/21/wanted-git-help-for-hig/comment-page-1/#comment-149</link>
		<dc:creator>Johannes Berg</dc:creator>
		<pubDate>Wed, 22 Apr 2009 09:09:23 +0000</pubDate>
		<guid isPermaLink="false">http://blogs.gnome.org/shaunm/?p=113#comment-149</guid>
		<description>So basically you have two independent pieces of work in two git branches, right?

I&#039;m not sure how it worked, but it&#039;s definitely possible -- the btrfs merge in the Linux kernel did that. I can try to dig it up, send me an email.</description>
		<content:encoded><![CDATA[<p>So basically you have two independent pieces of work in two git branches, right?</p>
<p>I&#8217;m not sure how it worked, but it&#8217;s definitely possible &#8212; the btrfs merge in the Linux kernel did that. I can try to dig it up, send me an email.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Santi</title>
		<link>http://blogs.gnome.org/shaunm/2009/04/21/wanted-git-help-for-hig/comment-page-1/#comment-148</link>
		<dc:creator>Santi</dc:creator>
		<pubDate>Wed, 22 Apr 2009 08:41:22 +0000</pubDate>
		<guid isPermaLink="false">http://blogs.gnome.org/shaunm/?p=113#comment-148</guid>
		<description>As daniels said, you can use git-filter-branch (you already have the history in git.gnome.org so no need to use git-svn).

Basically you need to do three things:

1) Reparent the first commit in the branch (using a graft file)
2) Move all the files to the corresponding place (there is an exemple in the git filter-branch man page)
3) Add all the other files (maybe with git-read-tree .

Another option could be export all the commits in the branch with git format-patch, fix the paths, and apply them with &#039;git am&#039;.

At the end the only difference between the two should be the commit date, it is preserved with git filter-branch while with &#039;git am&#039; it would be the present date (I think in the last git release or in the master branch there is a flag to use the author date as committer date).

HTH,
Santi</description>
		<content:encoded><![CDATA[<p>As daniels said, you can use git-filter-branch (you already have the history in git.gnome.org so no need to use git-svn).</p>
<p>Basically you need to do three things:</p>
<p>1) Reparent the first commit in the branch (using a graft file)<br />
2) Move all the files to the corresponding place (there is an exemple in the git filter-branch man page)<br />
3) Add all the other files (maybe with git-read-tree .</p>
<p>Another option could be export all the commits in the branch with git format-patch, fix the paths, and apply them with &#8216;git am&#8217;.</p>
<p>At the end the only difference between the two should be the commit date, it is preserved with git filter-branch while with &#8216;git am&#8217; it would be the present date (I think in the last git release or in the master branch there is a flag to use the author date as committer date).</p>
<p>HTH,<br />
Santi</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: David</title>
		<link>http://blogs.gnome.org/shaunm/2009/04/21/wanted-git-help-for-hig/comment-page-1/#comment-146</link>
		<dc:creator>David</dc:creator>
		<pubDate>Wed, 22 Apr 2009 08:25:43 +0000</pubDate>
		<guid isPermaLink="false">http://blogs.gnome.org/shaunm/?p=113#comment-146</guid>
		<description>I think you want a subtree merge, but it gets a bit more complex by originating from svn, especially if you want to preserve the original branch point.

Google for &quot;giit subtree merge&quot;</description>
		<content:encoded><![CDATA[<p>I think you want a subtree merge, but it gets a bit more complex by originating from svn, especially if you want to preserve the original branch point.</p>
<p>Google for &#8220;giit subtree merge&#8221;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: daniels</title>
		<link>http://blogs.gnome.org/shaunm/2009/04/21/wanted-git-help-for-hig/comment-page-1/#comment-145</link>
		<dc:creator>daniels</dc:creator>
		<pubDate>Wed, 22 Apr 2009 08:11:13 +0000</pubDate>
		<guid isPermaLink="false">http://blogs.gnome.org/shaunm/?p=113#comment-145</guid>
		<description>Import with git-svn or something, which is aware of svn&#039;s directory stupidity, and you can then use git-filter-branch to construct a more sane set of history along that branch, with fixed filenames etc.  Once you&#039;ve done that, you should be able to do a clean merge.</description>
		<content:encoded><![CDATA[<p>Import with git-svn or something, which is aware of svn&#8217;s directory stupidity, and you can then use git-filter-branch to construct a more sane set of history along that branch, with fixed filenames etc.  Once you&#8217;ve done that, you should be able to do a clean merge.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jesse</title>
		<link>http://blogs.gnome.org/shaunm/2009/04/21/wanted-git-help-for-hig/comment-page-1/#comment-144</link>
		<dc:creator>Jesse</dc:creator>
		<pubDate>Wed, 22 Apr 2009 07:22:04 +0000</pubDate>
		<guid isPermaLink="false">http://blogs.gnome.org/shaunm/?p=113#comment-144</guid>
		<description>I think what you are looking for is git filter-branch --subdirectory-filter  []. You can make a new branch with the full history, then apply this to it, which should result in a separate branch with the history that touched only that subdirectory. Let me know if it works out (because I could have used this yesterday also, but was to lazy to look it up :))</description>
		<content:encoded><![CDATA[<p>I think what you are looking for is git filter-branch &#8211;subdirectory-filter  []. You can make a new branch with the full history, then apply this to it, which should result in a separate branch with the history that touched only that subdirectory. Let me know if it works out (because I could have used this yesterday also, but was to lazy to look it up <img src='http://blogs.gnome.org/shaunm/wp-content/mu-plugins/tango-smilies/tango/face-smile.png' alt=':)' class='wp-smiley' /> )</p>
]]></content:encoded>
	</item>
</channel>
</rss>
