<?xml version="1.0" encoding="utf-8" ?>

<rss version="2.0" 
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/"
   xmlns:content="http://purl.org/rss/1.0/modules/content/"
   >
<channel>
    
    <title>vdboor - Technology</title>
    <link>http://www.codingdomain.com/blog/</link>
    <description>Life is a journey which slowly unfolds itself in beautiful and fascinating ways</description>
    <dc:language>en</dc:language>
    <generator>Serendipity 1.6.2 - http://www.s9y.org/</generator>
    
    

<item>
    <title>Moving KMess from subversion to Git</title>
    <link>http://www.codingdomain.com/blog/archives/24-Moving-KMess-from-subversion-to-Git.html</link>
            <category>KMess</category>
            <category>Open Source</category>
            <category>PlanetKDE</category>
            <category>Technology</category>
    
    <comments>http://www.codingdomain.com/blog/archives/24-Moving-KMess-from-subversion-to-Git.html#comments</comments>
    <wfw:comment>http://www.codingdomain.com/blog/wfwcomment.php?cid=24</wfw:comment>

    <slash:comments>2</slash:comments>
    <wfw:commentRss>http://www.codingdomain.com/blog/rss.php?version=2.0&amp;type=comments&amp;cid=24</wfw:commentRss>
    

    <author>nospam@example.com (Diederik van der Boor)</author>
    <content:encoded>
    &lt;p&gt;Today I&#039;ve been busy converting the &lt;a href=&quot;http://www.kmess.org/&quot; target=&quot;_blank&quot;&gt;KMess&lt;/a&gt; svn repository to git. [for the uninitiated: both svn and git are tools to track changes in the source code of an application. KMess is a MSN Messenger client for KDE &lt;img src=&quot;http://www.codingdomain.com/blog/templates/default/img/emoticons/wink.png&quot; alt=&quot;;-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt; ]. The reasons for git are twofold:&lt;/p&gt; 
&lt;ul&gt; 
&lt;li&gt;&lt;em&gt;KDE is moving to git.&lt;/em&gt;&lt;br /&gt;Instead of trying to move from sourceforge -&amp;gt; KDE extragear now, we can directly move to git.&lt;br /&gt;&lt;/li&gt; 
&lt;li&gt;&lt;em&gt;We seriously need better merge support now.&lt;/em&gt;&lt;br /&gt;As we&#039;re working on KMess 2.1 a lot of refactoring will happen; to create a library of our protocol code, and provide a plugin API. This requires branches for large changes, while continiously merging the mainline. Git can do this.&lt;br /&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Which brings me back to today. Since our repository is also organized like KDE (/trunk/&lt;em&gt;projectname&lt;/em&gt;/...) using &lt;a tooltip=&quot;linkalert-tip&quot; target=&quot;_blank&quot; href=&quot;http://repo.or.cz/w/svn-all-fast-export.git&quot;&gt;svn-all-fast-export&lt;/a&gt; (made by Thiago) was the natural choice. This tool uses a &amp;quot;rules&amp;quot; file to specify which project a given repository paths should go to. It also offers ways to filter out commits.&lt;/p&gt; 
&lt;p&gt;Turns out that last feature is useful for us too. While the repository may look clean from the outside, it&#039;s history has some curlpits. A few times branches were created from the wrong path, deleted again, and recreated with the correct path. These can be filtered out.&lt;/p&gt; 
&lt;h3&gt;Installing svn-all-fast-export&lt;/h3&gt; 
&lt;p&gt;There are no binaries for the the application, so you&#039;ll have to run:&lt;/p&gt; 
&lt;pre&gt;git clone git://repo.or.cz/svn-all-fast-export.git
cd svn-all-fast-export
qmake fast-export2.pro
make&lt;/pre&gt; 
&lt;p&gt;The devel packages for Qt, subversion and apr need to be installed. For openSUSE 11.1 I had to correct the file &lt;code&gt;src/Makefile&lt;/code&gt; afterwards because the path to apr include path wasn&#039;t &lt;code&gt;/usr/include/apr-1.0&lt;/code&gt; but&lt;code&gt;/usr/include/apr-1&lt;/code&gt; instead.&lt;/p&gt; 
&lt;h3&gt;Using it&lt;br /&gt;&lt;/h3&gt; 
&lt;p&gt;First, you&#039;ll have to create a rules file. There are plenty of examples in the &amp;quot;examples&amp;quot; folder for this.&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt; &lt;/p&gt; 
&lt;p&gt;The documentation of svn-all-fast-export is absent at the
moment - except for a few sample rule files. Fortunately the source code was quite readable, and it&#039;s Qt 4 application. Looking at the source,
I&#039;ve learned:&lt;/p&gt; 
&lt;ul&gt; 
&lt;li&gt;The option &lt;em&gt;--identity-map&lt;/em&gt;=&amp;lt;file..&amp;gt; can be used to convert the svn accountnames to git&#039;s &amp;quot;full name &amp;lt;email&amp;gt;&amp;quot; format.&lt;/li&gt; 
&lt;li&gt;The
options --resume-from and --max-rev can be used to continue at a given
part (e.g. after getting an error, you can write a rule for it, and
continue with that revision).&lt;/li&gt; 
&lt;li&gt;The output directory for every sub-project (repository with git) needs to exist already, and it should be initialized with &lt;em&gt;git init&lt;/em&gt;. Not doing this gives an &amp;quot;broken pipe&amp;quot; abort, and you&#039;ll find yourself looking through the source code to find out why. &lt;img src=&quot;http://www.codingdomain.com/blog/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;br /&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;The result of my day includes of a large rules file, and shell scripts to automate everything. I&#039;ve stored it in our subversion repository in a separate &lt;a href=&quot;https://kmess.svn.sourceforge.net/svnroot/kmess//trunk/svn-to-git/&quot; target=&quot;_blank&quot;&gt;trunk/svn-to-git&lt;/a&gt; project, so feel free to look around. I hope these scripts can help you too. One thing.. there is again no documentation.... Read the source &lt;img src=&quot;http://www.codingdomain.com/blog/templates/default/img/emoticons/laugh.png&quot; alt=&quot;:-D&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt; 
&lt;h3&gt;Issues left open&lt;br /&gt;&lt;/h3&gt; 
&lt;p&gt;There are a few issues I haven&#039;t been able to solve yet.&lt;br /&gt;&lt;/p&gt; 
&lt;ul&gt; 
&lt;li&gt;A few sub projects were moved across the repository, which is split in separate git repositories (svn paths: &lt;code&gt;/trunk/libisf&lt;/code&gt; -&amp;gt; &lt;code&gt;/trunk/kmess/contrib/libisf&lt;/code&gt;). Is there a way to preserve the history for this?&lt;/li&gt; 
&lt;li&gt;The network-library branch was branched off &lt;code&gt;/trunk/&lt;/code&gt; instead of &lt;code&gt;/trunk/kmess/&lt;/code&gt;, and moved afterwards to a different location. I&#039;ve tried to mark both folders with &lt;code&gt;/kmess/&lt;/code&gt; appended as being part of the branch. Now I&#039;m stuck with a network-library branch which lacks the base revision. Only the changed files can be found in the branch.&lt;/li&gt; 
&lt;/ul&gt;For these final issues I&#039;d like to know: is there a way this can be solved?&lt;br /&gt; 
    </content:encoded>

    <pubDate>Sun, 02 Aug 2009 23:23:00 +0200</pubDate>
    <guid isPermaLink="false">http://www.codingdomain.com/blog/archives/24-guid.html</guid>
    
</item>
<item>
    <title>openSUSE running on a MacBook</title>
    <link>http://www.codingdomain.com/blog/archives/22-openSUSE-running-on-a-MacBook.html</link>
            <category>Less-technical</category>
            <category>Life</category>
            <category>Open Source</category>
            <category>PlanetKDE</category>
            <category>Technology</category>
    
    <comments>http://www.codingdomain.com/blog/archives/22-openSUSE-running-on-a-MacBook.html#comments</comments>
    <wfw:comment>http://www.codingdomain.com/blog/wfwcomment.php?cid=22</wfw:comment>

    <slash:comments>4</slash:comments>
    <wfw:commentRss>http://www.codingdomain.com/blog/rss.php?version=2.0&amp;type=comments&amp;cid=22</wfw:commentRss>
    

    <author>nospam@example.com (Diederik van der Boor)</author>
    <content:encoded>
    &lt;p&gt;Lately I got a request to blog more about the progress of KMess, and I&#039;ve been scratching an itch on it. Since we&#039;re about to release a &amp;quot;KMess 2.0 beta 2&amp;quot; release I&#039;ll delay that for later today/tomorrow.&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;
The train from work to home also started to get a bit boring so I&#039;ve decided to install openSUSE on my MacBook. I really wanted to do this because KDE 4.2 is looking so sweet. Running OS X didn&#039;t feel right anymore at all. &lt;img src=&quot;http://www.codingdomain.com/blog/templates/default/img/emoticons/laugh.png&quot; alt=&quot;:-D&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;
The setup was a bit difficult due to EFI-partitioning being messed up, but the actual install was easy. In case you&#039;re looking for a HOWTO, the openSUSE &lt;a target=&quot;_blank&quot; href=&quot;http://en.opensuse.org/OpenSUSE_on_a_Mac&quot;&gt;wiki&lt;/a&gt; pages give you everything you need. Most hardware seams to be working, including: bluetooth, wifi, audio, compositing, video out, special keys, sensors, iSight webcam (requires firmware). There are some quirks remaining though: at the login I briefly see some video memory garbage and the synaptics touchpad sometimes gets locked after suspend to ram.&lt;/p&gt; 
&lt;p&gt;However, now I can have some fun in the train, show pictures to friends easier, potentially expose Linux/KDE4 to more people, read cached e-mail, etc... Perhaps I could code somewhat, but most of my energy is still spent on my daily job and the renovation of my apartment in the evenings/weekends. I&#039;ll blog a bit more about that later. &lt;img src=&quot;http://www.codingdomain.com/blog/templates/default/img/emoticons/wink.png&quot; alt=&quot;;-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;br /&gt;&lt;/p&gt; 
    </content:encoded>

    <pubDate>Sun, 19 Apr 2009 17:42:00 +0200</pubDate>
    <guid isPermaLink="false">http://www.codingdomain.com/blog/archives/22-guid.html</guid>
    
</item>
<item>
    <title>Introducing PhpPlanet: PHP feed aggregation software</title>
    <link>http://www.codingdomain.com/blog/archives/4-Introducing-PhpPlanet-PHP-feed-aggregation-software.html</link>
            <category>KMess</category>
            <category>Open Source</category>
            <category>Technology</category>
    
    <comments>http://www.codingdomain.com/blog/archives/4-Introducing-PhpPlanet-PHP-feed-aggregation-software.html#comments</comments>
    <wfw:comment>http://www.codingdomain.com/blog/wfwcomment.php?cid=4</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.codingdomain.com/blog/rss.php?version=2.0&amp;type=comments&amp;cid=4</wfw:commentRss>
    

    <author>nospam@example.com (Diederik van der Boor)</author>
    <content:encoded>
    &lt;p&gt;One of the things I really wanted to implement was a &amp;quot;Planet KMess&amp;quot; section at the KMess website. I&#039;ve been looking for existing solutions, but couldn&#039;t find what I was looking for. I don&#039;t need expanding sections, or forum/e-mail like &amp;quot;mark as read&amp;quot; capabilities. Just a simple web page with all stories, posted in order.&lt;/p&gt; 
&lt;p&gt;As for why I&#039;m not using &lt;a target=&quot;_blank&quot; href=&quot;http://www.planetplanet.org/&quot;&gt;Planet&lt;/a&gt;: the Planet KDE site is flooded with old feeds now and then. I don&#039;t want to see that happening for a &amp;quot;Planet KMess&amp;quot; website. Planet is written in Python and uses a file-based cache. This is a complete black box for me as Python illiterate, and adds Python as new dependency to the web site.&lt;/p&gt; 
&lt;p&gt;The result is a new Planet-like feed reader/aggregator named PhpPlanet. It is v0.1 software and can be &lt;a href=&quot;/software/phpplanet/phpplanet-0.1.tar.gz&quot;&gt;downloaded here&lt;/a&gt;. It stores feeds in a MySQL database, and uses Snoopy/MagpieRSS to parse the feeds. Flooding is avoided by observing the timestamp of RSS entries. When multiple entries have the same timestamp it&#039;s an indication the feed is regenerated, and those entries will be rejected automatically. &lt;img src=&quot;http://www.codingdomain.com/blog/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt; 
    </content:encoded>

    <pubDate>Mon, 27 Nov 2006 00:35:00 +0100</pubDate>
    <guid isPermaLink="false">http://www.codingdomain.com/blog/archives/4-guid.html</guid>
    
</item>

</channel>
</rss>