<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" 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/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" version="2.0">

<channel>
	<title>James' SOC Blog</title>
	
	<link>http://gsocblog.jsharpe.net</link>
	<description>James Sharpe's Google Summer of Code Blog</description>
	<lastBuildDate>Sat, 28 Mar 2009 15:20:17 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/JamesSocBlog" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="jamessocblog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Workspace wallpaper backend patches and video</title>
		<link>http://gsocblog.jsharpe.net/archives/15</link>
		<comments>http://gsocblog.jsharpe.net/archives/15#comments</comments>
		<pubDate>Wed, 23 Jul 2008 14:14:49 +0000</pubDate>
		<dc:creator>James Sharpe</dc:creator>
				<category><![CDATA[Google Summer of Code]]></category>
		<category><![CDATA[eel]]></category>
		<category><![CDATA[gnome]]></category>
		<category><![CDATA[gnome-desktop]]></category>
		<category><![CDATA[gnome-settings-daemon]]></category>
		<category><![CDATA[nautilus]]></category>

		<guid isPermaLink="false">http://gsocblog.jsharpe.net/?p=15</guid>
		<description><![CDATA[I&#8217;ve pretty much completed implementing the mechanisms in nautilus and gnome-settings-daemon to implement per workspace wallpapers. I&#8217;ve created a short video that shows the current state of the functionality:

As you can see the wallpaper is currently set for whichever workspace the appearance capplet is on.
I&#8217;ve put most of the patches (except the gnome-control-center one) into [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve pretty much completed implementing the mechanisms in nautilus and gnome-settings-daemon to implement per workspace wallpapers. I&#8217;ve created a short video that shows the current state of the functionality:<br />
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="350" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="http://www.youtube.com/v/e1QHs-STcHs" /><embed type="application/x-shockwave-flash" width="425" height="350" src="http://www.youtube.com/v/e1QHs-STcHs"></embed></object><br />
As you can see the wallpaper is currently set for whichever workspace the appearance capplet is on.</p>
<p>I&#8217;ve put most of the patches (except the gnome-control-center one) into bugzilla:</p>
<p>gnome-desktop: <a href="http://bugzilla.gnome.org/show_bug.cgi?id=543596">http://bugzilla.gnome.org/show_bug.cgi?id=543596</a></p>
<p><a href="http://bugzilla.gnome.org/show_bug.cgi?id=544241">http://bugzilla.gnome.org/show_bug.cgi?id=544241</a></p>
<p>gnome-settings-daemon: <a href="http://bugzilla.gnome.org/show_bug.cgi?id=544178">http://bugzilla.gnome.org/show_bug.cgi?id=544178</a></p>
<p>eel: <a href="http://bugzilla.gnome.org/show_bug.cgi?id=544223">http://bugzilla.gnome.org/show_bug.cgi?id=544223</a></p>
<p>nautilus: <a href="http://bugzilla.gnome.org/show_bug.cgi?id=544242">http://bugzilla.gnome.org/show_bug.cgi?id=544242</a></p>
<p>gnome-control-center patch is available here:<a href="http://git.jsharpe.net/cgi-bin/cgit.cgi?url=gnome-control-center.git/log/&amp;h=individual_wallpaper"> http://git.jsharpe.net/</a> but is still a work in progress.</p>
<p>I&#8217;d appreciate feedback on the patches.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/JamesSocBlog?a=OIVqp2-3Z8s:w7HaLHCVC0c:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/JamesSocBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JamesSocBlog?a=OIVqp2-3Z8s:w7HaLHCVC0c:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/JamesSocBlog?i=OIVqp2-3Z8s:w7HaLHCVC0c:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/JamesSocBlog/~4/OIVqp2-3Z8s" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://gsocblog.jsharpe.net/archives/15/feed</wfw:commentRss>
		<slash:comments>49</slash:comments>
		</item>
		<item>
		<title>DVCS Interoperability</title>
		<link>http://gsocblog.jsharpe.net/archives/14</link>
		<comments>http://gsocblog.jsharpe.net/archives/14#comments</comments>
		<pubDate>Thu, 26 Jun 2008 23:39:43 +0000</pubDate>
		<dc:creator>James Sharpe</dc:creator>
				<category><![CDATA[Google Summer of Code]]></category>
		<category><![CDATA[bzr]]></category>
		<category><![CDATA[DVCS]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[gnome]]></category>
		<category><![CDATA[tailor]]></category>

		<guid isPermaLink="false">http://gsocblog.jsharpe.net/?p=14</guid>
		<description><![CDATA[Its quite clear from the various discussions related to DVCS that there isn&#8217;t going to be one clear winner for the choice of VCS for Gnome; everyone wants to use their favourite DVCS. So here&#8217;s an idea, why not allow them to?
I think that the deciding factor for which DVCS to use is the quality [...]]]></description>
			<content:encoded><![CDATA[<p>Its quite clear from the <a href="http://blogs.gnome.org/johncarr/2008/06/26/is-speed-the-only-reason/">various</a> <a href="http://blogs.gnome.org/tthurman/2008/06/26/but-silly-questions-can-change-the-world/">discussions</a> <a href="http://blogs.gnome.org/ovitters/2008/06/26/git-git-git/">related</a> to DVCS that there isn&#8217;t going to be one clear winner for the choice of VCS for Gnome; everyone wants to use their favourite DVCS. So here&#8217;s an idea, why not allow them to?</p>
<p>I think that the deciding factor for which DVCS to use is the quality of the tools that enable interoperability between all the other possible tools. Obviously there is <a href="http://progetti.arstecnica.it/tailor">tailor</a> which automates migration of patchsets between different DVCS&#8217;s, but I want more native support within the tool I&#8217;m using; i.e if I&#8217;m using git I want to use &#8220;git&#8217;s terminology&#8221; to &#8220;pull and push&#8221; from the remote repository. I&#8217;ve found  <a href="http://github.com/pieter/git-bzr/tree/master">git-bzr</a> for interoperating between git and bzr, and similarily there is <a href="http://bazaar.launchpad.net/~bzr/bzr-git/trunk/changes">bzr-git</a> for the other way around,<a href="http://bazaar.launchpad.net/~bzr/bzr-git/trunk/changes"> </a>although I&#8217;ve not yet had time to see how either of the tools work.</p>
<p>Basically I think that the decision of which DVCS to choose should be based upon which DVCS is the easiest to import into all the others(or at least just the most popular ones!). This makes all the other points regarding speed etc really quite moot so long as these tools work well (In particular I&#8217;d like to observe how well they maintain merge histories between the DVCS systems &#8211; maybe when I get time in the next few weeks I&#8217;ll do some experimenting).</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/JamesSocBlog?a=-owrnyun9MM:XTrx9pIvl2M:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/JamesSocBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JamesSocBlog?a=-owrnyun9MM:XTrx9pIvl2M:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/JamesSocBlog?i=-owrnyun9MM:XTrx9pIvl2M:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/JamesSocBlog/~4/-owrnyun9MM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://gsocblog.jsharpe.net/archives/14/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Git-svn bare mirrors</title>
		<link>http://gsocblog.jsharpe.net/archives/12</link>
		<comments>http://gsocblog.jsharpe.net/archives/12#comments</comments>
		<pubDate>Thu, 05 Jun 2008 18:27:57 +0000</pubDate>
		<dc:creator>James Sharpe</dc:creator>
				<category><![CDATA[Google Summer of Code]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[svn]]></category>

		<guid isPermaLink="false">http://gsocblog.jsharpe.net/?p=12</guid>
		<description><![CDATA[I&#8217;ve been trying to automate the updating of my git-svn repos on my server via cron and I&#8217;ve finally succeeded in getting something working so I thought I&#8217;d share how I&#8217;ve got things setup since there seems to be a lack of information about how to do this.
First hurdle was git-svn doesn&#8217;t understand about bare [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been trying to automate the updating of my git-svn repos on my server via cron and I&#8217;ve finally succeeded in getting something working so I thought I&#8217;d share how I&#8217;ve got things setup since there seems to be a lack of information about how to do this.</p>
<p>First hurdle was git-svn doesn&#8217;t understand about bare repositories &#8211; it always looks for a .git directory. Fortunately this is easily solved since git-svn does support the $GIT_DIR environment variable. So I simply set this to . and run the git-svn commands from within the repository directory. So I initialise the repository with the appropriate git-svn init command and then call fetch to retrieve the svn history.</p>
<p>The next problem is that the refs fetched using git-svn are placed in refs/remotes which isn&#8217;t cloned when you do a regular git clone. So we need to plugin to the hooks to update the refs after we update the repository; an example script of how to this is provided below (Taken from <a href="http://repo.or.cz/w/git/dscho.git?a=blob;f=my-copy-svn-refs.sh;h=c59eb378df717a60a1ecefdba7c2ff9409ffec1e;hb=796428469a17406793bd567d07f9a8c6ed4408fb">dscho.git</a>):<br />
<code>#!/bin/sh</code></p>
<p>git for-each-ref &#8211;format=&#8221;%(refname)&#8221; refs/remotes |<br />
sed &#8220;s/refs\/remotes\///&#8221; |<br />
while read ref<br />
do<br />
git update-ref refs/heads/svn/$ref refs/remotes/$ref<br />
done</p>
<p>git for-each-ref &#8211;format=&#8221;%(refname)&#8221; refs/heads/svn |<br />
sed &#8220;s/refs\/heads\/svn\///&#8221; |<br />
while read ref<br />
do<br />
if ! git-rev-parse refs/remotes/$ref &gt; /dev/null 2&gt;&amp;1<br />
then<br />
git update-ref -d refs/heads/svn/$ref refs/heads/svn/$ref<br />
fi<br />
done<br />
I call the script from the post-update script (which you should make executable by running chmod +x hooks/post-update). This script suffices but doesn&#8217;t quite do what I&#8217;d like; I&#8217;d like the tags to be placed in refs/tags/svn rather than refs/heads/svn, but the script linked will do for me for now.<br />
My cloned repositories are available at <a href="http://git.jsharpe.net">http://git.jsharpe.net/</a>, unfortunately I can&#8217;t offer the git protocol since my host doesn&#8217;t allow it. As I get time I&#8217;ll convert more of the Gnome repositories; I&#8217;ve only converted the ones I know I&#8217;m going to be working on for the moment.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/JamesSocBlog?a=YJE1uPjhOrw:IW-5jTlZKFs:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/JamesSocBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JamesSocBlog?a=YJE1uPjhOrw:IW-5jTlZKFs:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/JamesSocBlog?i=YJE1uPjhOrw:IW-5jTlZKFs:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/JamesSocBlog/~4/YJE1uPjhOrw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://gsocblog.jsharpe.net/archives/12/feed</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Gitweb</title>
		<link>http://gsocblog.jsharpe.net/archives/11</link>
		<comments>http://gsocblog.jsharpe.net/archives/11#comments</comments>
		<pubDate>Wed, 28 May 2008 13:43:47 +0000</pubDate>
		<dc:creator>James Sharpe</dc:creator>
				<category><![CDATA[Google Summer of Code]]></category>
		<category><![CDATA[git]]></category>

		<guid isPermaLink="false">http://gsocblog.jsharpe.net/?p=11</guid>
		<description><![CDATA[Today I finally got round to activating ssh access on my hosting account which means I can set up gitweb to publish my git repositories. I&#8217;ll be pushing my changes to these repositories as I get things working. The gitweb interface is available at http://git.jsharpe.net/
]]></description>
			<content:encoded><![CDATA[<p>Today I finally got round to activating ssh access on my hosting account which means I can set up gitweb to publish my git repositories. I&#8217;ll be pushing my changes to these repositories as I get things working. The gitweb interface is available at <a href="http://git.jsharpe.net/">http://git.jsharpe.net/</a></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/JamesSocBlog?a=qufIzYkXNYE:iHhszDJL-UE:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/JamesSocBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JamesSocBlog?a=qufIzYkXNYE:iHhszDJL-UE:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/JamesSocBlog?i=qufIzYkXNYE:iHhszDJL-UE:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/JamesSocBlog/~4/qufIzYkXNYE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://gsocblog.jsharpe.net/archives/11/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Start of coding</title>
		<link>http://gsocblog.jsharpe.net/archives/10</link>
		<comments>http://gsocblog.jsharpe.net/archives/10#comments</comments>
		<pubDate>Mon, 26 May 2008 22:16:58 +0000</pubDate>
		<dc:creator>James Sharpe</dc:creator>
				<category><![CDATA[Google Summer of Code]]></category>
		<category><![CDATA[gconf]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[icecream]]></category>
		<category><![CDATA[jhbuild]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[uni]]></category>
		<category><![CDATA[vmware]]></category>

		<guid isPermaLink="false">http://gsocblog.jsharpe.net/?p=10</guid>
		<description><![CDATA[Well today is the official start of coding for Google Summer of Code, but for me I won&#8217;t be able to start coding for another couple of days; I have an exam tomorrow and a programming assignment due Wednesday so I can&#8217;t really begin work till then.
In the meantime though I&#8217;ve been getting Gnome SVN [...]]]></description>
			<content:encoded><![CDATA[<p>Well today is the official start of coding for Google Summer of Code, but for me I won&#8217;t be able to start coding for another couple of days; I have an exam tomorrow and a programming assignment due Wednesday so I can&#8217;t really begin work till then.</p>
<p>In the meantime though I&#8217;ve been getting Gnome SVN compiled, using the git-svn support in <a href="http://live.gnome.org/Jhbuild">jhbuild</a>, which has meant I&#8217;ve committed a few improvements to the git-svn support to speed up the process; namely I&#8217;ve improved the svn:externals support by parsing the unhandled.log that git generates. I&#8217;d still like to improve the support further, adding support for git-svn repos with a full complement of branches being one(although doing this properly will require additional information about how the repository is laid out), but it&#8217;s usable in its current form for now. I&#8217;m also currently using <a href="http://en.opensuse.org/Icecream">icecream</a> to speed up my compiles, currently running on my desktop and laptop, but I&#8217;d like to setup a minimal VMWare image containing just the icecream client and minimal dev environment so that I can run this on the other machines that are at my parents, when I return there after finishing uni. Does anyone know of any existing images that are available or will I have to roll my own? A quick glance at the <a href="http://www.vmware.com/appliances/">VMWare virtual appliances</a> shows no results for this kind of appliance so it looks like I&#8217;ll have to roll my own.</p>
<p>I&#8217;ve also been looking at the general code structure for the background drawing code and generally getting a feel for what needs to be done in this regard. In particular, I need to design a structure for the GConf keys that works with backwards compatibility: the background configuration is currently stored in the /desktop/gnome/background GConf key. The two current solutions I&#8217;m thinking of are adding a subdirectory for each workspace configuration /desktop/gnome/background/Workspace1 or storing it as /desktop/gnome/Workspace1/background. I&#8217;m currently leaning towards the second solution as it means that the scheme can be extended to support per workspace properties for other keys such as /desktop/gnome/interface for setting per workspace themes/fonts. The idea would then be that if a workspace specific key doesn&#8217;t exist in /desktop/gnome/*WorkspaceName* then it would fall back to the key in /desktop/gnome/. This provides the backwards compatibility aspect with older gnome installations. The challenge with this however comes when writing the configuration gui &#8211; when do you update the default background key?</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/JamesSocBlog?a=6NDNx-ADAL8:orYTwQV8_8M:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/JamesSocBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JamesSocBlog?a=6NDNx-ADAL8:orYTwQV8_8M:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/JamesSocBlog?i=6NDNx-ADAL8:orYTwQV8_8M:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/JamesSocBlog/~4/6NDNx-ADAL8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://gsocblog.jsharpe.net/archives/10/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Hello Planet Gnome!</title>
		<link>http://gsocblog.jsharpe.net/archives/8</link>
		<comments>http://gsocblog.jsharpe.net/archives/8#comments</comments>
		<pubDate>Sat, 10 May 2008 23:44:37 +0000</pubDate>
		<dc:creator>James Sharpe</dc:creator>
				<category><![CDATA[Google Summer of Code]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[gnome]]></category>
		<category><![CDATA[gnome-control-center]]></category>
		<category><![CDATA[gnome-desktop]]></category>
		<category><![CDATA[jhbuild]]></category>
		<category><![CDATA[libeel]]></category>
		<category><![CDATA[libgnomeui]]></category>
		<category><![CDATA[libwnck]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[uni]]></category>
		<category><![CDATA[xinerama]]></category>
		<category><![CDATA[xrandr]]></category>

		<guid isPermaLink="false">http://gsocblog.jsharpe.net/?p=8</guid>
		<description><![CDATA[Firstly, hello to all that are reading on Planet Gnome as this will be my first post that has been syndicated there. And by way of introduction, I&#8217;m a 23 year old student in my final year at York University studying Computer Science and Maths. I&#8217;m working on bug 48004 to implement individual workspace wallpapers. [...]]]></description>
			<content:encoded><![CDATA[<p>Firstly, hello to all that are reading on Planet Gnome as this will be my first post that has been syndicated there. And by way of introduction, I&#8217;m a 23 year old student in my final year at <a href="http://www.york.ac.uk">York University</a> studying Computer Science and Maths. I&#8217;m working on bug <a href="http://bugzilla.gnome.org/show_bug.cgi?id=48004">48004</a> to implement individual workspace wallpapers. (For those that are interested you can find my previous posts at <a href="http://gsocblog.jsharpe.net">http://gsocblog.jsharpe.net/</a>.)</p>
<p>I&#8217;ve spent the last couple of weeks finishing up my masters project, and gave my presentation on that last Friday. Its good to get it all out of the way, although my supervisor has suggested submitting my project to the <a href="http://ml.eecs.ucf.edu/ssspr/">S+SSPR conference</a> which means I need to edit my paper by the end of the month. I also have a computer graphics assignment to complete and three exams to revise for before the official start of GSOC on 26th May, so quite a bit to do before then. I suspect I&#8217;ll be juggling my time between uni and GSOC up till the 10th June which is the date of my last exam at uni.</p>
<p>In the mean time I&#8217;ve been looking through the code that I&#8217;m going to be working on; the desktop wallpaper code seems to be spread across numerous modules: gnome-desktop, gnome-control-center, libeel, libwnck and libgnomeui. Initially I&#8217;ll be working on getting the backend part working for which the following criteria need to be fulfilled:</p>
<ul>
<li>Support wallpaper per workspace (and possibly extending this to be a workspace profile/state see <a href="http://bugzilla.gnome.org/show_bug.cgi?id=113640">bug 113640</a>)</li>
<li>Update the GnomeBG api to support multiple workspaces &#8211; hopefully this will help stabilise the api and remove the need to explicitly define use of the api.</li>
<li>Support desktop wallpaper rotation. (The code to do this is largely there since there is already support for animated backgrounds which rotate over a given period of time)</li>
<li>Support wallpapers per desktop &#8211; this will involve adding support for Xrandr and Xinerama (although I&#8217;m tempted to argue that we should just support Xrandr since Xinerama is no longer in development)</li>
</ul>
<p>I&#8217;ve also been hacking a little at jhbuild; I&#8217;ve setup jhbuild to use git-svn in place of svn but it&#8217;s handling of externals is painful! I&#8217;ve put in a hack that checks the current svn revision of the git-svn tree before and after the rebase, and conditionally updates the externals only if the svn revision version has changed. Now this works fine if the svn:external is for a given revision number in the external repository, but if its not then we still need to do an update because the external may have changed whilst the current repository hasn&#8217;t. This kind of breaks the notion of a revision number in svn as it means that a revision in the repository is dependent upon the state of an external repository i.e. it will change over time! Not a good thing for repeatability in the future. I&#8217;m thinking about storing some metadata within the git-svn checkout dir relating to the location of externals(if any) as a way of avoiding walking the whole svn directory structure which is particularly slow! The alternative is to implement the externals as git submodules, as noted in a fixme within the code. There&#8217;s also a number of other features missing from the git-svn code too that I may roll patches for:</p>
<ol>
<li>doesn&#8217;t return to current branch after switching to master for rebase</li>
<li>doesn&#8217;t unstash working copy changes that have been stashed</li>
<li>proper support for using svn branches i.e. assumes you want a git repo with only either trunk or a single branch in it</li>
</ol>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/JamesSocBlog?a=dU7dadQyMDQ:CZVgY9_Yfds:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/JamesSocBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JamesSocBlog?a=dU7dadQyMDQ:CZVgY9_Yfds:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/JamesSocBlog?i=dU7dadQyMDQ:CZVgY9_Yfds:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/JamesSocBlog/~4/dU7dadQyMDQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://gsocblog.jsharpe.net/archives/8/feed</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Bugs and SVN</title>
		<link>http://gsocblog.jsharpe.net/archives/6</link>
		<comments>http://gsocblog.jsharpe.net/archives/6#comments</comments>
		<pubDate>Sun, 04 May 2008 20:48:12 +0000</pubDate>
		<dc:creator>James Sharpe</dc:creator>
				<category><![CDATA[Google Summer of Code]]></category>
		<category><![CDATA[bugs]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[svn]]></category>

		<guid isPermaLink="false">http://gsocblog.jsharpe.net/?p=6</guid>
		<description><![CDATA[I had my first bug assigned to me today, and yes its the obvious one: http://bugzilla.gnome.org/show_bug.cgi?id=48004
I&#8217;ve also had my SVN account approved and am just waiting for the accounts team to do the final check and set it up, although I probably won&#8217;t use it all that much as I&#8217;ll be doing my development in [...]]]></description>
			<content:encoded><![CDATA[<p>I had my first bug assigned to me today, and yes its the obvious one: http://bugzilla.gnome.org/show_bug.cgi?id=48004</p>
<p>I&#8217;ve also had my SVN account approved and am just waiting for the accounts team to do the final check and set it up, although I probably won&#8217;t use it all that much as I&#8217;ll be doing my development in my local git repository as i described <a href="http://gsocblog.jsharpe.net/archives/4">earlier</a>.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/JamesSocBlog?a=7Rzw5uM8B_g:JekqIicY744:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/JamesSocBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JamesSocBlog?a=7Rzw5uM8B_g:JekqIicY744:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/JamesSocBlog?i=7Rzw5uM8B_g:JekqIicY744:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/JamesSocBlog/~4/7Rzw5uM8B_g" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://gsocblog.jsharpe.net/archives/6/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JHbuild</title>
		<link>http://gsocblog.jsharpe.net/archives/5</link>
		<comments>http://gsocblog.jsharpe.net/archives/5#comments</comments>
		<pubDate>Sun, 04 May 2008 20:09:29 +0000</pubDate>
		<dc:creator>James Sharpe</dc:creator>
				<category><![CDATA[Google Summer of Code]]></category>
		<category><![CDATA[gnome]]></category>
		<category><![CDATA[jhbuild]]></category>
		<category><![CDATA[libtool]]></category>
		<category><![CDATA[vmware]]></category>

		<guid isPermaLink="false">http://gsocblog.jsharpe.net/?p=5</guid>
		<description><![CDATA[I tried to get a build of gnome done on my computer using the jhbuild tool. I like the way it uses libnotify to inform you when there is a build error. It&#8217;s meant that I can leave it compiling in the background whilst doing work on my Masters project and only pay attention when [...]]]></description>
			<content:encoded><![CDATA[<p>I tried to get a build of gnome done on my computer using the <a href="http://live.gnome.org/Jhbuild">jhbuild</a> tool. I like the way it uses libnotify to inform you when there is a build error. It&#8217;s meant that I can leave it compiling in the background whilst doing work on my Masters project and only pay attention when there are errors.</p>
<p>I got stuck compiling pixman with the same error as found <a href="http://www.mail-archive.com/gnome-devel-list@gnome.org/msg00850.html">here</a>. Unfortunately the fix provided in this case didn&#8217;t work for me. I tried both using jhbuild build -a and adding the appropriate PKG_CONFIG_PATH lines to my .jhbuildrc file without success.</p>
<p>Turns out the error was due to one of the tests in pixman was trying to link against gtk which had yet to be built by jhbuild and so was trying to pull in the system version of gtk which linked against the system version of glib, which was listed first on the command line and hence took priority, resulting in the error.</p>
<p>Now I&#8217;m not the only one to have this problem: <a href="http://bugzilla.gnome.org/show_bug.cgi?id=344358">http://bugzilla.gnome.org/show_bug.cgi?id=344358</a>. The reason for the problem is when the system already has the dev packages installed for the system&#8217;s installation of Gnome, in my case this is because I am running Gentoo. The solution given on #gnome-love on irc.gnome.org was to remove all *.la files from my system. This isn&#8217;t really an acceptable solution for a distribution that is compiled from source &#8211; I need the libtool library files to update my system!</p>
<p>Making sure a build system compiles on a fresh checkout for a new user is a problem that I came across when maintaining the build system for a fluid dynamics software suite I worked on at BAE Systems. It&#8217;s all too easy to write a build system that relies on source already being installed, and miss the small things that a new user will be stumped by, even if it is only a 1 minute fix to you. I wouldn&#8217;t be surprised if I start hacking at jhbuild in the near future as these things do niggle me, especially if I can think of a way to fix them!</p>
<p>Despite all this I&#8217;ve managed to, through a mixture of running jhbuild with the -a flag, manually running configure, and modifying my .jhbuildrc file to set environment variables and build options, to get most of the latest dev version of gnome compiled now (at least the parts that I need to work on). Next step is to point the jhbuild moduleset to my git repositories (I&#8217;ll post a url once I begin development), although to avoid future pain I may resort to setting up a VMware image with Fedora or Ubuntu on it to use as a sandbox environment for testing.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/JamesSocBlog?a=1lIixoYcNtU:6R1EQNt04Ck:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/JamesSocBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JamesSocBlog?a=1lIixoYcNtU:6R1EQNt04Ck:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/JamesSocBlog?i=1lIixoYcNtU:6R1EQNt04Ck:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/JamesSocBlog/~4/1lIixoYcNtU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://gsocblog.jsharpe.net/archives/5/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Git svn and Gnome</title>
		<link>http://gsocblog.jsharpe.net/archives/4</link>
		<comments>http://gsocblog.jsharpe.net/archives/4#comments</comments>
		<pubDate>Wed, 30 Nov -0001 00:00:00 +0000</pubDate>
		<dc:creator>James Sharpe</dc:creator>
				<category><![CDATA[Google Summer of Code]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[gnome]]></category>
		<category><![CDATA[svn]]></category>

		<guid isPermaLink="false">http://jsharpe.net/wordpress/?p=4</guid>
		<description><![CDATA[Since my work is going to span across many modules and that each of these modules are in it&#8217;s own svn repository, I have decided to use git-svn as a source control tool. I will be publishing my git repository at git.jsharpe.net once I&#8217;ve got ssh access enabled on my server.
Using git to access svn [...]]]></description>
			<content:encoded><![CDATA[<p>Since my work is going to span across many modules and that each of these modules are in it&#8217;s own svn repository, I have decided to use git-svn as a source control tool. I will be publishing my git repository at git.jsharpe.net once I&#8217;ve got ssh access enabled on my server.</p>
<p><span style="font-weight: bold;">Using git to access svn repository<br />
</span>Some of you may be interested in how to use git to access a svn repository. (A more comprehensive guide is available <a href="http://utsl.gen.nz/talks/git-svn/intro.html">here</a>) This is how I used it to clone the gnome repositories:</p>
<p>First run:<br />
<span style="font-style: italic;">git svn clone http://svn.gnome.org/svn/jhbuild -T trunk -t tags -b branches</span><br />
This tells git to clone the jhbuild svn repository with trunk directory named trunk, tags directory tags and branches directory branches. (A pretty standard repository layout however if the repository is laid out in a non-standard fashion there are ways of making git svn play nice here too &#8211; ask if you&#8217;d like to know).<br />
This will churn away for a long time checking out every single revision from revision 1 to obtain the complete history( the -r flag can be used to reduce the number of revisions that are checked out to a smaller number).<br />
Once this is completed we will then have all the branches and tags from the svn repository available as remote branches.</p>
<p><span style="font-weight: bold;">Space Savings using git over svn</span><br />
I&#8217;m still amazed at how well git compresses repositories. After cloning the nautilus repository the .git directory was 2.0G. Running the command:<br />
<span style="font-style: italic;"><br />
git gc &#8211;prune &#8211;aggressive</span><br />
compresses this down to 381M.</p>
<p><span style="font-weight: bold;">Working with a git svn repository</span><br />
Keeping up to date is simple. You simply run the command<br />
<span style="font-style: italic;">git svn fetch<br />
</span>from within your working copy. This will download all updates on all the branches and tags from svn that happened since you last updated. (Incidently if during the initial clone step your connection dies or you need to stop it then to resume the clone you just have to run the above command to resume downloading the history)<span style="font-style: italic;">.</span></p>
<p>Day to day development then should occur on a branch which is then rebased against the master when svn updates are pulled down. Changes can then be pushed back to svn using <em>git svn dcommit</em>.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/JamesSocBlog?a=OWL3T_rAxu0:KM-N9Q9P0K8:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/JamesSocBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JamesSocBlog?a=OWL3T_rAxu0:KM-N9Q9P0K8:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/JamesSocBlog?i=OWL3T_rAxu0:KM-N9Q9P0K8:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/JamesSocBlog/~4/OWL3T_rAxu0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://gsocblog.jsharpe.net/archives/4/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Google Summer of Code</title>
		<link>http://gsocblog.jsharpe.net/archives/3</link>
		<comments>http://gsocblog.jsharpe.net/archives/3#comments</comments>
		<pubDate>Wed, 23 Apr 2008 22:13:00 +0000</pubDate>
		<dc:creator>James Sharpe</dc:creator>
				<category><![CDATA[Google Summer of Code]]></category>
		<category><![CDATA[gnome]]></category>

		<guid isPermaLink="false">http://jsharpe.net/wordpress/?p=3</guid>
		<description><![CDATA[So I&#8217;ve been accepted onto the google summer of code 2008 program to work on the Gnome desktop project. I&#8217;m going to be working on the desktop wallpaper system and adding the functionality of being able to set a different wallpaper for each desktop. This functionality has been desired in Gnome since 2001 (bug  [...]]]></description>
			<content:encoded><![CDATA[<p>So I&#8217;ve been accepted onto the google summer of code 2008 program to work on the <a href="http://www.gnome.org/">Gnome</a> desktop project. I&#8217;m going to be working on the desktop wallpaper system and adding the functionality of being able to set a different wallpaper for each desktop. This functionality has been desired in Gnome since 2001 (bug  <a href="http://bugzilla.gnome.org/show_bug.cgi?id=48004">48004</a>). Its an interesting project as it cuts across a number of modules within the Gnome project and also presents some challenges such as keeping memory usage down when a user has a large number of workspaces.</p>
<p>The project consists of two main parts: the backend, which involves dealing with GConf and all the management of the background pixmap, and the user interface; adding the flexibility of choosing a background for each desktop introduces new usability challenges to the interface; its desirable for new users to be able to quickly pick up the interface for changing the background for all desktops, for existing users to not be confused by the new interface but at the same time be able to fully utilise the full functionality available easily.</p>
<p>Its possible that I finish this work early. In which case I have plans to add new functionality to the background system. Some ideas I have already are:
<ul>
<li>Background rotation every N mins</li>
<li>New colour gradients</li>
<li>Watermarks e.g. a corporate logo can be blended onto the background chosen</li>
</ul>
<p>I&#8217;m open to other ideas too, so if you have any then get in contact with me.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/JamesSocBlog?a=jKqBfpDl3Gw:ZJcVRwLmYkA:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/JamesSocBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JamesSocBlog?a=jKqBfpDl3Gw:ZJcVRwLmYkA:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/JamesSocBlog?i=jKqBfpDl3Gw:ZJcVRwLmYkA:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/JamesSocBlog/~4/jKqBfpDl3Gw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://gsocblog.jsharpe.net/archives/3/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>
