<?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.deldycke.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/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Kev's blog</title>
	
	<link>http://kevin.deldycke.com</link>
	<description>Free Softwares, Computers &amp; Linux</description>
	<lastBuildDate>Wed, 28 Jul 2010 10:57:32 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
<image><link>http://kevin.deldycke.com</link><url>http://www.gravatar.com/avatar/91a488c34a8dc1c392b2b0d972b4584e</url><title>Kevin's avatar</title></image>
		<feedburner:info uri="coolkevmen" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><geo:lat>50.6325</geo:lat><geo:long>3.058333</geo:long><creativeCommons:license>http://creativecommons.org/licenses/by-sa/3.0/</creativeCommons:license><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://kev.coolcavemen.com/feed/" /><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Fkev.coolcavemen.com%2Ffeed%2F" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://kev.coolcavemen.com/feed/" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Fkev.coolcavemen.com%2Ffeed%2F" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Fkev.coolcavemen.com%2Ffeed%2F" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Fkev.coolcavemen.com%2Ffeed%2F" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><feedburner:feedFlare href="http://www.live.com/?add=http%3A%2F%2Fkev.coolcavemen.com%2Ffeed%2F" src="http://tkfiles.storage.msn.com/x1piYkpqHC_35nIp1gLE68-wvzLZO8iXl_JMledmJQXP-XTBOLfmQv4zhj4MhcWEJh_GtoBIiAl1Mjh-ndp9k47If7hTaFno0mxW9_i3p_5qQw">Subscribe with Live.com</feedburner:feedFlare><item>
		<title>Usefull Commands: Exim</title>
		<link>http://feeds.deldycke.com/~r/coolkevmen/~3/6mugirY2lkA/</link>
		<comments>http://kevin.deldycke.com/2010/07/usefull-commands-exim/#comments</comments>
		<pubDate>Wed, 28 Jul 2010 09:54:54 +0000</pubDate>
		<dc:creator>kev</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[CLI]]></category>
		<category><![CDATA[E-mail]]></category>
		<category><![CDATA[Exim]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[Mail transfer agents]]></category>

		<guid isPermaLink="false">http://kevin.deldycke.com/?p=1617</guid>
		<description><![CDATA[List mails in the queue: exim -bp View headers of a mail: exim -Mvh &#60;mail-id&#62; View body of a mail: exim -Mvb &#60;mail-id&#62; Remove a mail from the queue: exim -Mrm &#60;mail-id&#62; Related content:Usefull Commands: a SynthesisGot &#8220;unsized object&#8221; errors with Debian&#8217;s Mailman ? Try this patch !How-to export/backup Lotus Notes mails]]></description>
			<content:encoded><![CDATA[<ul>
<li>List mails in the queue:
<pre class="brush: bash;">
exim -bp
</pre>
</li>
<li>View headers of a mail:
<pre class="brush: bash;">
exim -Mvh &lt;mail-id&gt;
</pre>
</li>
<li>View body of a mail:
<pre class="brush: bash;">
exim -Mvb &lt;mail-id&gt;
</pre>
</li>
<li>Remove a mail from the queue:
<pre class="brush: bash;">
exim -Mrm &lt;mail-id&gt;
</pre>
</li>
</ul>
<div id="crp_related"><h4>Related content:</h4><ul><li><a  href="http://kevin.deldycke.com/2006/12/usefull-commands-a-synthesis/" rel="bookmark" class="crp_title">Usefull Commands: a Synthesis</a></li><li><a  href="http://kevin.deldycke.com/2008/12/got-unsized-object-errors-with-debian-mailman-try-this-patch/" rel="bookmark" class="crp_title">Got &#8220;unsized object&#8221; errors with Debian&#8217;s Mailman ? Try this patch !</a></li><li><a  href="http://kevin.deldycke.com/2010/06/how-to-export-backup-lotus-notes-mails/" rel="bookmark" class="crp_title">How-to export/backup Lotus Notes mails</a></li></ul></div>
<p><a href="http://feedads.g.doubleclick.net/~a/poWb-kHTvFoGA6JQguWkmlqJPUc/0/da"><img src="http://feedads.g.doubleclick.net/~a/poWb-kHTvFoGA6JQguWkmlqJPUc/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/poWb-kHTvFoGA6JQguWkmlqJPUc/1/da"><img src="http://feedads.g.doubleclick.net/~a/poWb-kHTvFoGA6JQguWkmlqJPUc/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/coolkevmen/~4/6mugirY2lkA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://kevin.deldycke.com/2010/07/usefull-commands-exim/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://kevin.deldycke.com/2010/07/usefull-commands-exim/</feedburner:origLink></item>
		<item>
		<title>How-to export/backup Lotus Notes mails</title>
		<link>http://feeds.deldycke.com/~r/coolkevmen/~3/HnRbQd_Xr1c/</link>
		<comments>http://kevin.deldycke.com/2010/06/how-to-export-backup-lotus-notes-mails/#comments</comments>
		<pubDate>Fri, 25 Jun 2010 09:30:11 +0000</pubDate>
		<dc:creator>kev</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[Databases]]></category>
		<category><![CDATA[E-mail]]></category>
		<category><![CDATA[export]]></category>
		<category><![CDATA[IBM Lotus Notes]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://kevin.deldycke.com/?p=1574</guid>
		<description><![CDATA[You are using Lotus Notes as your mail platform. Unfortunately your mailbox has a quota you&#8217;ve already reached and you need space. A solution consist in exporting regularly your mails on your local machine to free up your inbox. Here is a little article documenting the export procedure using the fat desktop client. If screenshots [...]]]></description>
			<content:encoded><![CDATA[<p>You are using Lotus Notes as your mail platform. Unfortunately your mailbox has a quota you&#8217;ve already reached and you need space. A solution consist in exporting regularly your mails on your local machine to free up your inbox. Here is a little article documenting the export procedure using the fat desktop client.</p>
<p>If screenshots were taken with a french version, instructions given here are for the english one. This will give you enough clues to perform the export whatever the localisation is. The Lotus Notes version I used was the 7.0.2 release.</p>
<p>So first, let&#8217;s start Notes and open your mailbox. You should be on a screen similar to this one:<br />
<a  href="http://kevin.deldycke.com/wp-content/uploads/2010/06/lotus-notes-mail-main-screen.png" class="thickbox no_icon" rel="gallery-1574" title=""><img src="http://kevin.deldycke.com/wp-content/uploads/2010/06/lotus-notes-mail-main-screen-300x217.png" alt="" title="lotus-notes-mail-main-screen" width="300" height="217" class="aligncenter size-medium wp-image-1577" /></a></p>
<p>Then, go to the <code>File</code> › <code>Database</code> › <code>New Copy</code> menu:<br />
<a  href="http://kevin.deldycke.com/wp-content/uploads/2010/06/lotus-notes-database-export-menu.png" class="thickbox no_icon" rel="gallery-1574" title=""><img src="http://kevin.deldycke.com/wp-content/uploads/2010/06/lotus-notes-database-export-menu-300x217.png" alt="" title="lotus-notes-database-export-menu" width="300" height="217" class="aligncenter size-medium wp-image-1578" /></a></p>
<p>And you&#8217;ll get an export screen that&#8217;ll let you choose where to create a local copy of your database:<br />
<a  href="http://kevin.deldycke.com/wp-content/uploads/2010/06/export-screen.png" class="thickbox no_icon" rel="gallery-1574" title=""><img src="http://kevin.deldycke.com/wp-content/uploads/2010/06/export-screen-300x199.png" alt="" title="export-screen" width="300" height="199" class="aligncenter size-medium wp-image-1579" /></a><br />
This will generate a <code>.nsf</code> file containing all your current mail.</p>
<p>Now that you have a backup, you are free to delete all your mails in Lotus Notes. By following this procedure regulary, you can create yearly or monthly archives of you mails without reaching the mailbox quota ! For example, this is how my local archive folder looks like:<br />
<a  href="http://kevin.deldycke.com/wp-content/uploads/2010/06/lotus-notes-exported-mail-archives.png" class="thickbox no_icon" rel="gallery-1574" title=""><img src="http://kevin.deldycke.com/wp-content/uploads/2010/06/lotus-notes-exported-mail-archives.png" alt="" title="lotus-notes-exported-mail-archives" width="150" height="138" class="aligncenter size-full wp-image-1580" /></a></p>
<div id="crp_related"><h4>Related content:</h4><ul><li><a  href="http://kevin.deldycke.com/2010/05/lotus-notes-rich-text-mime-conversion-error/" rel="bookmark" class="crp_title">Lotus Notes&#8217; Rich Text to MIME conversion error</a></li><li><a  href="http://kevin.deldycke.com/2010/06/git-commit-history-reconstruction/" rel="bookmark" class="crp_title">Commit history reconstruction with Git</a></li><li><a  href="http://kevin.deldycke.com/2007/11/how-to-import-a-maildir-folder-to-kmail/" rel="bookmark" class="crp_title">How-to import a Maildir++ folder to Kmail</a></li></ul></div>
<p><a href="http://feedads.g.doubleclick.net/~a/dUsj9-DJ73vHgF6yspIXtqheVls/0/da"><img src="http://feedads.g.doubleclick.net/~a/dUsj9-DJ73vHgF6yspIXtqheVls/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/dUsj9-DJ73vHgF6yspIXtqheVls/1/da"><img src="http://feedads.g.doubleclick.net/~a/dUsj9-DJ73vHgF6yspIXtqheVls/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/coolkevmen/~4/HnRbQd_Xr1c" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://kevin.deldycke.com/2010/06/how-to-export-backup-lotus-notes-mails/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://kevin.deldycke.com/2010/06/how-to-export-backup-lotus-notes-mails/</feedburner:origLink></item>
		<item>
		<title>Subversion commits and mail activity stream in iCalendar</title>
		<link>http://feeds.deldycke.com/~r/coolkevmen/~3/wYTUpw4bFmo/</link>
		<comments>http://kevin.deldycke.com/2010/06/subversion-commits-mail-activity-stream-icalendar/#comments</comments>
		<pubDate>Wed, 16 Jun 2010 19:53:46 +0000</pubDate>
		<dc:creator>kev</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[commit]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[iCal]]></category>
		<category><![CDATA[mail]]></category>
		<category><![CDATA[maildir]]></category>
		<category><![CDATA[Ohloh]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[repository]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[SVN]]></category>

		<guid isPermaLink="false">http://kevin.deldycke.com/?p=1546</guid>
		<description><![CDATA[Last week I consolidated all my code in my GitHub repository. I stumble upon an old script I haven&#8217;t publicized yet: svn2ical.py. This is a simple hack which get commit metadata out of a Subversion repository and generate an iCalendar file containing all commits of a given author. I used it back then to visualize [...]]]></description>
			<content:encoded><![CDATA[<p>Last week I <a  href="http://kevin.deldycke.com/2010/06/git-commit-history-reconstruction/">consolidated all my code</a> in <a  href="http://github.com/kdeldycke/kev-code">my GitHub repository</a>. I stumble upon an old script I haven&#8217;t publicized yet: <code><a  href="http://github.com/kdeldycke/kev-code/blob/master/svn2ical.py">svn2ical.py</a></code>.</p>
<p><a  href="http://kevin.deldycke.com/wp-content/uploads/2010/06/icalendar-subversion-commits.png" class="thickbox no_icon" rel="gallery-1546" title=""><img src="http://kevin.deldycke.com/wp-content/uploads/2010/06/icalendar-subversion-commits-150x150.png" alt="" title="icalendar-subversion-commits" width="150" height="150" class="alignleft size-thumbnail wp-image-1551" /></a> This is a simple hack which get commit metadata out of a Subversion repository and generate an iCalendar file containing all commits of a given author. I used it back then to visualize in a calendar my commit activity. Nowadays this script is quite useless as services like <a  href="http://www.ohloh.net/accounts/kevin">Ohloh</a> and <a  href="http://github.com/kdeldycke">GitHub</a> provides great timeline and activity streams. But this script can still be usefull for private repositories.</p>
<p>And in the same spirit of this script, I uncovered <code><a  href="http://github.com/kdeldycke/kev-code/blob/master/maildir2ical.py">maildir2ical.py</a></code>, a script that look in a maildir folder for mails sent by a particular author, then generate an iCal file based on mail dates.</p>
<div id="crp_related"><h4>Related content:</h4><ul><li><a  href="http://kevin.deldycke.com/2010/05/how-to-fix-bad-commit-authorship-git/" rel="bookmark" class="crp_title">How-to fix bad commit authorship in Git</a></li><li><a  href="http://kevin.deldycke.com/2010/06/git-commit-history-reconstruction/" rel="bookmark" class="crp_title">Commit history reconstruction with Git</a></li><li><a  href="http://kevin.deldycke.com/2010/05/initialize-git-repositories/" rel="bookmark" class="crp_title">How I initialize my Git repositories</a></li></ul></div>
<p><a href="http://feedads.g.doubleclick.net/~a/BMqGN0XrDL00-8DjpQ0jQ4uBABA/0/da"><img src="http://feedads.g.doubleclick.net/~a/BMqGN0XrDL00-8DjpQ0jQ4uBABA/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/BMqGN0XrDL00-8DjpQ0jQ4uBABA/1/da"><img src="http://feedads.g.doubleclick.net/~a/BMqGN0XrDL00-8DjpQ0jQ4uBABA/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/coolkevmen/~4/wYTUpw4bFmo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://kevin.deldycke.com/2010/06/subversion-commits-mail-activity-stream-icalendar/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://kevin.deldycke.com/2010/06/subversion-commits-mail-activity-stream-icalendar/</feedburner:origLink></item>
		<item>
		<title>Commit history reconstruction with Git</title>
		<link>http://feeds.deldycke.com/~r/coolkevmen/~3/FU5Q-64V_g8/</link>
		<comments>http://kevin.deldycke.com/2010/06/git-commit-history-reconstruction/#comments</comments>
		<pubDate>Wed, 09 Jun 2010 19:06:37 +0000</pubDate>
		<dc:creator>kev</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[commit]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[history]]></category>
		<category><![CDATA[Init]]></category>
		<category><![CDATA[Software engineering]]></category>

		<guid isPermaLink="false">http://kevin.deldycke.com/?p=1403</guid>
		<description><![CDATA[Here is something I wanted to do for 3 years. I wanted to migrate my code repository from this: to a proper revision control system, like Subversion. And I wanted to reconstruct the commit history with all the proper dates. That&#8217;s something I can&#8217;t do with SVN. Then came Git. I knew that Git was [...]]]></description>
			<content:encoded><![CDATA[<p>Here is something I wanted to do for 3 years. I wanted to migrate my code repository from this:<br />
<a  href="http://kevin.deldycke.com/wp-content/uploads/2010/05/dumb-code-revision-control-system.png" class="thickbox no_icon" rel="gallery-1403" title=""><img src="http://kevin.deldycke.com/wp-content/uploads/2010/05/dumb-code-revision-control-system-237x300.png" alt="" title="dumb-code-revision-control-system" width="237" height="300" class="aligncenter size-medium wp-image-1479" /></a><br />
to a proper <a  href="http://en.wikipedia.org/wiki/Revision_control">revision control system</a>, like Subversion. And I wanted to reconstruct the commit history with all the proper dates. That&#8217;s something I can&#8217;t do with SVN.</p>
<p>Then came Git. I knew that Git was powerful enough to let me manipulate the history (at my own risks). So I studied it during the last weeks until I found an acceptable way to do exactly what I had in mind. Here are my notes regarding this journey.</p>
<p>First, I need to get a local copy of <a  href="http://github.com/kdeldycke/kev-code">my GitHub repository</a>. That&#8217;s the place where I want all my code to reside at the end of the process.</p>
<pre class="brush: bash;">
cd ~
git clone git@github.com:kdeldycke/kev-code.git
</pre>
<p>In gitg, my untouched repository looks like this:<br />
<a  href="http://kevin.deldycke.com/wp-content/uploads/2010/05/git-repository-at-start.png" class="thickbox no_icon" rel="gallery-1403" title=""><img src="http://kevin.deldycke.com/wp-content/uploads/2010/05/git-repository-at-start-300x154.png" alt="" title="git-repository-at-start" width="300" height="154" class="aligncenter size-medium wp-image-1485" /></a><br />
Notice all the pre-existing code.</p>
<p>Let&#8217;s create a <code>history-injection</code> branch from the <code>init</code> tag. The later is the root of my repository, as explained in my previous post on <a  href="http://kevin.deldycke.com/2010/05/initialize-git-repositories/">how I initialize my Git repositories</a>.</p>
<pre class="brush: bash;">
git branch history-injection init
</pre>
<p>Then switch to our brand new branch:</p>
<pre class="brush: bash;">
git checkout history-injection
</pre>
<p>We are now in a safe and contained environment in which we can do all our dirty stuff. Let&#8217;s move the file we want to add in our repository:</p>
<pre class="brush: bash;">
cp ~/scripts/website-backup-2006_04_30.py ~/kev-code/website-backup.py
</pre>
<p>Commit this new file locally, as usual, but with a commit date set in the past:</p>
<pre class="brush: bash;">
cd ~/kev-code
git add --all
git commit --all --date=&quot;2006-04-30 23:17&quot; -m &quot;First version of a script to backup several remote websites via FTP and make bzip2 archives.&quot;
</pre>
<p>I can repeat the last steps to reconstruct the commit history of my <code>website-backup.py</code> script:</p>
<pre class="brush: bash;">
cp ~/scripts/website-backup-2006_10_29.py ~/kev-code/website-backup.py
git commit --all --date=&quot;2006-10-29 23:13&quot; -m &quot;Delete previous backups if nothing has changed.&quot;
cp ~/scripts/website-backup-2006_11_01.py ~/kev-code/website-backup.py
git commit --all --date=&quot;2006-11-01 23:14&quot; -m &quot;Keep monthly bzip2 snapshots of backups and incremental backups of the last 32 days thanks to rdiff-backup.&quot;
(...)
</pre>
<p>At last, the <code>history-injection</code> branch contain all version of <code>website-backup.py</code>:<br />
<a  href="http://kevin.deldycke.com/wp-content/uploads/2010/05/history-injection-branch.png" class="thickbox no_icon" rel="gallery-1403" title=""><img src="http://kevin.deldycke.com/wp-content/uploads/2010/05/history-injection-branch-300x187.png" alt="" title="history-injection-branch" width="300" height="187" class="aligncenter size-medium wp-image-1488" /></a></p>
<p>Now I&#8217;ll use the <code>rebase</code> directive to insert the <code>history-injection</code> branch back in the main line (aka <code>master</code>). This insertion will take place just after the <code>init</code> tag. This translates to the following Git command:</p>
<pre class="brush: bash;">
git rebase --preserve-merges --onto history-injection init master
</pre>
<p>The <code>--preserve-merges</code> option is really important here to not let Git takes too much initiatives. Without this option, all our banches between the <code>init</code> tag and the head of the <code>master</code> branch will be rebased. Believe me, that&#8217;s not what we want.</p>
<p>I no longer need my temporary <code>history-injection</code> branch. Let&#8217;s remove it:</p>
<pre class="brush: bash;">
git branch -D history-injection
</pre>
<p>Now you should have a unique and straight history line from <code>init</code> tag to <code>master</code> head. Like this:<br />
<a  href="http://kevin.deldycke.com/wp-content/uploads/2010/05/rebased-history-injection-branch.png" class="thickbox no_icon" rel="gallery-1403" title=""><img src="http://kevin.deldycke.com/wp-content/uploads/2010/05/rebased-history-injection-branch-300x187.png" alt="" title="rebased-history-injection-branch" width="300" height="187" class="aligncenter size-medium wp-image-1490" /></a></p>
<p>Commits appears to be ordered as they should but you may not be as lucky as me. In fact the recently merge commits are stuck at the &#8220;bottom&#8221; (just after the <code>init</code> tag, as we asked Git to do on rebase). And you may find you in a situation where commits of the whole master branch are not chronologically ordered.</p>
<p>Here is such an example. It happened when I tried to rebase the full history of my <code>system-backup.py</code> script:<br />
<a  href="http://kevin.deldycke.com/wp-content/uploads/2010/05/system-backup-script-rebase.png" class="thickbox no_icon" rel="gallery-1403" title=""><img src="http://kevin.deldycke.com/wp-content/uploads/2010/05/system-backup-script-rebase-300x187.png" alt="" title="system-backup-script-rebase" width="300" height="187" class="aligncenter size-medium wp-image-1494" /></a></p>
<p>I haven&#8217;t found a way to tell Git how to rebase by following commit dates. I know that something can be done with a command like:</p>
<pre class="brush: bash;">
git rebase --interactive init
</pre>
<p>But I haven&#8217;t succeeded yet. So I left these commits unsorted for now. I may write another blog post in the future if I find a way to cleanly sort them. In the mean time, If you have a solution, I&#8217;ll be happy to ear that !</p>
<p>Finally, when we have something that looks good, we can push our changes to our remote GitHub repository:</p>
<pre class="brush: bash;">
git push origin
</pre>
<p>But Git will complain: changing already-pushed commits is bad. As I <a  href="http://kevin.deldycke.com/2010/05/how-to-fix-bad-commit-authorship-git/">explained several weeks ago</a>, it&#8217;s dangerous but I don&#8217;t care. I&#8217;m the only user of this repository. So let&#8217;s bypass Git&#8217;s wise warnings:</p>
<pre class="brush: bash;">
git push origin +master:master
</pre>
<p>Et voilà ! By repeating these steps several times, I moved my code to GitHub, with a consistent and clean commit history.</p>
<div id="crp_related"><h4>Related content:</h4><ul><li><a  href="http://kevin.deldycke.com/2010/05/initialize-git-repositories/" rel="bookmark" class="crp_title">How I initialize my Git repositories</a></li><li><a  href="http://kevin.deldycke.com/2010/05/how-to-fix-bad-commit-authorship-git/" rel="bookmark" class="crp_title">How-to fix bad commit authorship in Git</a></li><li><a  href="http://kevin.deldycke.com/2010/02/usefull-commands-git/" rel="bookmark" class="crp_title">Usefull Commands: Git</a></li></ul></div>
<p><a href="http://feedads.g.doubleclick.net/~a/O8oPJPcXCccNHbfgYum7dAalY8Q/0/da"><img src="http://feedads.g.doubleclick.net/~a/O8oPJPcXCccNHbfgYum7dAalY8Q/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/O8oPJPcXCccNHbfgYum7dAalY8Q/1/da"><img src="http://feedads.g.doubleclick.net/~a/O8oPJPcXCccNHbfgYum7dAalY8Q/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/coolkevmen/~4/FU5Q-64V_g8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://kevin.deldycke.com/2010/06/git-commit-history-reconstruction/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://kevin.deldycke.com/2010/06/git-commit-history-reconstruction/</feedburner:origLink></item>
		<item>
		<title>Le Duc live at Happy Farm Fest 2010</title>
		<link>http://feeds.deldycke.com/~r/coolkevmen/~3/nj66S2HpGU4/</link>
		<comments>http://kevin.deldycke.com/2010/06/le-duc-live-happy-farm-fest-2010/#comments</comments>
		<pubDate>Wed, 02 Jun 2010 00:11:17 +0000</pubDate>
		<dc:creator>kev</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[Canon EOS 7D]]></category>
		<category><![CDATA[concert]]></category>
		<category><![CDATA[gig]]></category>
		<category><![CDATA[Happy Farm Fest]]></category>
		<category><![CDATA[Le Duc]]></category>
		<category><![CDATA[live]]></category>
		<category><![CDATA[sigma]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[you tube]]></category>

		<guid isPermaLink="false">http://kevin.deldycke.com/?p=1515</guid>
		<description><![CDATA[Here is an unedited video of Le Duc, a band I shot last week at Happy Farm Fest 2010 with my Canon 7D and a Sigma 30mm f/1.4 EX DC HSM wide open: This was shot in 1080p at 25 fps (to reduce light flickering) without any stabilization device. I may have use my LCD [...]]]></description>
			<content:encoded><![CDATA[<p>Here is an unedited video of <a  href="http://www.facebook.com/group.php?gid=20312134675">Le Duc</a>, a band I shot last week at <a  href="http://happyfarmfest.com">Happy Farm Fest 2010</a> with my Canon 7D and a Sigma 30mm f/1.4 EX DC HSM wide open:<br />
<object width="560" height="340"><param name="movie" value="http://www.youtube.com/v/mrHZ4Wh9sCY&#038;fs=1&#038;rel=0&#038;hd=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/mrHZ4Wh9sCY&#038;fs=1&#038;rel=0&#038;hd=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"></embed></object></p>
<p>This was shot in 1080p at 25 fps (to reduce light flickering) without any stabilization device. I may have use my <a  href="http://www.glidetrack.com/accessories/lcd-viewfinder.html">LCD ViewFinder</a> but I have no clear memory of this. Shutter speed was 1/50 and ISO set to auto.</p>
<p>I&#8217;m shooting video with my 7D for 7 months now and I think that&#8217;s the first time one of my shot is made public. That&#8217;s quite depressing as I still have tons of raw video to edit for several projects, but can&#8217;t go ahead because of a <a  href="http://kevin.deldycke.com/2009/12/macosx-is-irritating/#comment-7158">bad MacBook Pro</a>&#8230;</p>
<div id="crp_related"><h4>Related content:</h4><ul><li><a  href="http://kevin.deldycke.com/2010/01/cool-cavemen-live-gayant-expo-first-video-released/" rel="bookmark" class="crp_title">Cool Cavemen live at Gayant Expo: first video released !</a></li><li><a  href="http://kevin.deldycke.com/2010/02/cool-cavemen-live-gayant-expo-part-ii/" rel="bookmark" class="crp_title">Cool Cavemen live at Gayant Expo, part II.</a></li><li><a  href="http://kevin.deldycke.com/2010/05/canon-eos-7d-movie-samples/" rel="bookmark" class="crp_title">Canon EOS 7D Movie Samples</a></li></ul></div>
<p><a href="http://feedads.g.doubleclick.net/~a/qoxVGJPeMSdG86oEPNY6IFWZ2do/0/da"><img src="http://feedads.g.doubleclick.net/~a/qoxVGJPeMSdG86oEPNY6IFWZ2do/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/qoxVGJPeMSdG86oEPNY6IFWZ2do/1/da"><img src="http://feedads.g.doubleclick.net/~a/qoxVGJPeMSdG86oEPNY6IFWZ2do/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/coolkevmen/~4/nj66S2HpGU4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://kevin.deldycke.com/2010/06/le-duc-live-happy-farm-fest-2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://kevin.deldycke.com/2010/06/le-duc-live-happy-farm-fest-2010/</feedburner:origLink></item>
		<item>
		<title>How I initialize my Git repositories</title>
		<link>http://feeds.deldycke.com/~r/coolkevmen/~3/3TXzW_IqrJY/</link>
		<comments>http://kevin.deldycke.com/2010/05/initialize-git-repositories/#comments</comments>
		<pubDate>Tue, 25 May 2010 19:18:48 +0000</pubDate>
		<dc:creator>kev</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[repository]]></category>

		<guid isPermaLink="false">http://kevin.deldycke.com/?p=928</guid>
		<description><![CDATA[The first few days I used Git, I messed up my repository. I had to reset and recreate it from scratch several times. With enough trials and errors, I came up with an idea of how I should initialize my repositories. Let me explain in this post why git init is not enough to me. [...]]]></description>
			<content:encoded><![CDATA[<p>The first few days I used Git, I messed up my repository. I had to reset and recreate it from scratch several times. With enough trials and errors, I came up with an idea of how I should initialize my repositories. Let me explain in this post why <code>git init</code> is not enough to me.</p>
<p>To create a Git repository, nothing else is absolutely necessary than these few trivial commands:</p>
<pre class="brush: bash;">
$ mkdir kev-code
$ cd kev-code/
$ git init
</pre>
<p>But after reading <a  href="http://www-cs-students.stanford.edu/~blynn/gitmagic/apa.html#_initial_commit">some documentation</a> and user experiences on the web, it looks like Git has some limitations when dealing with the root of a repository history. As I plan to heavily manipulate the commit history (to do some kind of code archaeology and history reconstruction), I need to have the widest time latitude to play with commits.</p>
<p>In this situation, I came to the conclusion that it&#8217;s a good idea to create an empty commit at the start of your repository life, and date it to the start of epoch. In the future, I&#8217;ll be able to leverage this intial commit as an ordinary history point from which I can start a branch. Then in this branch I&#8217;ll be free to mess up the history, until merging my changes back in the mainline tree.</p>
<p>So, let&#8217;s create an empty commit:</p>
<pre class="brush: bash;">
$ git commit --allow-empty -m 'Initial commit'
</pre>
<p>Then get the commit hash:</p>
<pre class="brush: bash;">
$ git log
commit 395290bcdb8ffccfbff89e42cb976077fbd3c1b7
Author: Kevin Deldycke &lt;kevin@deldycke.com&gt;
Date:   Tue Dec 1 15:37:49 2009 +0100

    Initial commit
</pre>
<p>We now change the commit date of our first commit to epoch start:</p>
<pre class="brush: bash;">
$ git filter-branch --env-filter \
&gt;     'if [ $GIT_COMMIT = 395290bcdb8ffccfbff89e42cb976077fbd3c1b7 ]
&gt;      then
&gt;          export GIT_AUTHOR_DATE=&quot;Thu, 01 Jan 1970 00:00:00 +0000&quot;
&gt;          export GIT_COMMITTER_DATE=&quot;Thu, 01 Jan 1970 00:00:00 +0000&quot;
&gt;      fi'
Rewrite 395290bcdb8ffccfbff89e42cb976077fbd3c1b7 (1/1)
Ref 'refs/heads/master' was rewritten
</pre>
<p>And check that the previous operation did what we expected:</p>
<pre class="brush: bash;">
$ git log
commit 8fe2934d1552c97246836987f0ea08e10ba749ae
Author: Kevin Deldycke &lt;kevin@deldycke.com&gt;
Date:   Thu Jan 1 00:00:00 1970 +0000

    Initial commit
</pre>
<p>Looks good !</p>
<p>For convenience, we&#8217;ll now attach a tag to this initial commit. Let&#8217;s call it <code>init</code>:</p>
<pre class="brush: bash;">
$ git tag &quot;init&quot;
</pre>
<p>This will came handy later when we&#8217;ll need to create a branch from here.</p>
<p>It&#8217;s time to push all changes to our brand new public repository:</p>
<pre class="brush: bash;">
$ git remote add origin git@github.com:kdeldycke/kev-code.git
$ git status
# On branch master
nothing to commit (working directory clean)
$ git push origin master --force

Counting objects: 2, done.
Writing objects: 100% (2/2), 159 bytes, done.
Total 2 (delta 0), reused 0 (delta 0)
To git@github.com:kdeldycke/kev-code.git
 + 86bd2c7...8fe2934 master -&gt; master (forced update)
</pre>
<p>And here is the result on GitHub:<br />
<a  href="http://kevin.deldycke.com/wp-content/uploads/2010/05/git-first-commit.png" class="thickbox no_icon" rel="gallery-928" title=""><img src="http://kevin.deldycke.com/wp-content/uploads/2010/05/git-first-commit-300x58.png" alt="" title="git-first-commit" width="300" height="58" class="aligncenter size-medium wp-image-1450" /></a></p>
<p>Maybe this &#8220;first commit&#8221; trick is unnecessary. So, if you have a better understanding of the issue, or can explain me why this is stupid, please tell me ! <img src='http://kevin.deldycke.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<div id="crp_related"><h4>Related content:</h4><ul><li><a  href="http://kevin.deldycke.com/2010/05/how-to-fix-bad-commit-authorship-git/" rel="bookmark" class="crp_title">How-to fix bad commit authorship in Git</a></li><li><a  href="http://kevin.deldycke.com/2010/06/git-commit-history-reconstruction/" rel="bookmark" class="crp_title">Commit history reconstruction with Git</a></li><li><a  href="http://kevin.deldycke.com/2010/02/usefull-commands-git/" rel="bookmark" class="crp_title">Usefull Commands: Git</a></li></ul></div>
<p><a href="http://feedads.g.doubleclick.net/~a/PJ32ruS15NW0e9mu2IflFcvQV2I/0/da"><img src="http://feedads.g.doubleclick.net/~a/PJ32ruS15NW0e9mu2IflFcvQV2I/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/PJ32ruS15NW0e9mu2IflFcvQV2I/1/da"><img src="http://feedads.g.doubleclick.net/~a/PJ32ruS15NW0e9mu2IflFcvQV2I/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/coolkevmen/~4/3TXzW_IqrJY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://kevin.deldycke.com/2010/05/initialize-git-repositories/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://kevin.deldycke.com/2010/05/initialize-git-repositories/</feedburner:origLink></item>
		<item>
		<title>Canon EOS 7D Movie Samples</title>
		<link>http://feeds.deldycke.com/~r/coolkevmen/~3/_GMvFyzsWEo/</link>
		<comments>http://kevin.deldycke.com/2010/05/canon-eos-7d-movie-samples/#comments</comments>
		<pubDate>Fri, 21 May 2010 21:31:44 +0000</pubDate>
		<dc:creator>kev</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[1080p]]></category>
		<category><![CDATA[480p]]></category>
		<category><![CDATA[720p]]></category>
		<category><![CDATA[Canon EOS 7D]]></category>
		<category><![CDATA[photography]]></category>
		<category><![CDATA[sample]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://kevin.deldycke.com/?p=1496</guid>
		<description><![CDATA[Here is a collection of Eiffel Tower&#8217;s videos I took today with my Canon EOS 7D. These quick and dirty clips were shots this late afternoon. Please don&#8217;t look at the image quality. That&#8217;s not the point. We&#8217;re interested in bitstream, video/audio codecs and media container here. These files are as they came out of [...]]]></description>
			<content:encoded><![CDATA[<p><a  href="http://kevin.deldycke.com/wp-content/uploads/2010/05/eiffel-tower-video-sample-preview.jpg" class="thickbox no_icon" rel="gallery-1496" title=""><img src="http://kevin.deldycke.com/wp-content/uploads/2010/05/eiffel-tower-video-sample-preview-150x150.jpg" alt="" title="eiffel-tower-video-sample-preview" width="150" height="150" class="alignright size-thumbnail wp-image-1503" /></a> Here is a collection of Eiffel Tower&#8217;s videos I took today with my Canon EOS 7D. These quick and dirty clips were shots this late afternoon.</p>
<p>Please don&#8217;t look at the image quality. That&#8217;s not the point. We&#8217;re interested in bitstream, video/audio codecs and media container here.</p>
<p>These files are as they came out of the camera and can serve as references. The idea is to provide raw data access to developpers and hackers to let them add or <a  href="http://www.kdenlive.org/video-editor/canon-eos-7d">enhance 7D&#8217;s support</a> to their software.</p>
<p>Here are seven 10 seconds video clips, corresponding to the 7 video modes offered by the 7D (that&#8217;s a lot of 7&#8242;s):</p>
<table>
<tr>
<td>Resolution</td>
<td>Framerate</td>
<td>Shutter Speed</td>
</tr>
<tr>
<td><a  href="http://kevin.deldycke.com/static/documents/canon-eos-7d-movie-samples/1080p-23.976fps.mov">1920&#215;1080</a> (1080p)</td>
<td><a  href="http://kevin.deldycke.com/static/documents/canon-eos-7d-movie-samples/1080p-23.976fps.mov">23.976 fps</a> (24 fps)</td>
<td>1/50</td>
</tr>
<tr>
<td><a  href="http://kevin.deldycke.com/static/documents/canon-eos-7d-movie-samples/1080p-25fps.mov">1920&#215;1080</a> (1080p)</td>
<td><a  href="http://kevin.deldycke.com/static/documents/canon-eos-7d-movie-samples/1080p-25fps.mov">25 fps</a></td>
<td>1/50</td>
</tr>
<tr>
<td><a  href="http://kevin.deldycke.com/static/documents/canon-eos-7d-movie-samples/1080p-29.97fps.mov">1920&#215;1080</a> (1080p)</td>
<td><a  href="http://kevin.deldycke.com/static/documents/canon-eos-7d-movie-samples/1080p-29.97fps.mov">29.97 fps</a> (30 fps)</td>
<td>1/60</td>
</tr>
<tr>
<td><a  href="http://kevin.deldycke.com/static/documents/canon-eos-7d-movie-samples/720p-50fps.mov">1280&#215;720</a> (720p)</td>
<td><a  href="http://kevin.deldycke.com/static/documents/canon-eos-7d-movie-samples/720p-50fps.mov">50 fps</a></td>
<td>1/100</td>
</tr>
<tr>
<td><a  href="http://kevin.deldycke.com/static/documents/canon-eos-7d-movie-samples/720p-59.94fps.mov">1280&#215;720</a> (720p)</td>
<td><a  href="http://kevin.deldycke.com/static/documents/canon-eos-7d-movie-samples/720p-59.94fps.mov">59.94 fps</a> (60 fps)</td>
<td>1/125</td>
</tr>
<tr>
<td><a  href="http://kevin.deldycke.com/static/documents/canon-eos-7d-movie-samples/480p-50fps.mov">640&#215;480</a> (480p)</td>
<td><a  href="http://kevin.deldycke.com/static/documents/canon-eos-7d-movie-samples/480p-50fps.mov">50 fps</a></td>
<td>1/100</td>
</tr>
<tr>
<td><a  href="http://kevin.deldycke.com/static/documents/canon-eos-7d-movie-samples/480p-59.94fps.mov">640&#215;480</a> (480p)</td>
<td><a  href="http://kevin.deldycke.com/static/documents/canon-eos-7d-movie-samples/480p-59.94fps.mov">59.94 fps</a> (60 fps)</td>
<td>1/125</td>
</tr>
</table>
<p>Again, these files were extracted right out of the camera, without any modification.</p>
<p>Even if these details have no importance, here are some parameters under which these clips were shots (may be usefull for debugging):</p>
<ul>
<li>Lens: Canon EF-S 15-85 mm f/3,5-5,6 IS USM</li>
<li>IS: On</li>
<li>ISO: 100</li>
<li>Exposition compensation: 0</li>
<li>White balance: Daylight</li>
<li>Picture style: Standard</li>
<li>Auto Lighting Optimizer: Disabled</li>
<li>Highlight Tone Priority: Disabled</li>
<li>Peripheral illumintion correction: Off</li>
<li>Audio format: PCM, 48kHz, 16 bits</li>
<li>Camera firmware: 1.2.1</li>
</ul>
<div id="crp_related"><h4>Related content:</h4><ul><li><a  href="http://kevin.deldycke.com/2010/06/le-duc-live-happy-farm-fest-2010/" rel="bookmark" class="crp_title">Le Duc live at Happy Farm Fest 2010</a></li><li><a  href="http://kevin.deldycke.com/2006/11/new-cd-jewel-case-template-ready-to-print/" rel="bookmark" class="crp_title">New CD Jewel Case Template ready to Print !</a></li><li><a  href="http://kevin.deldycke.com/2006/04/av-sync-problems-vlc-better-than-mencoder/" rel="bookmark" class="crp_title">A/V sync problems: VLC better than Mencoder</a></li></ul></div>
<p><a href="http://feedads.g.doubleclick.net/~a/FO41HKlxi7NWcvj3h_V7lM6hmhU/0/da"><img src="http://feedads.g.doubleclick.net/~a/FO41HKlxi7NWcvj3h_V7lM6hmhU/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/FO41HKlxi7NWcvj3h_V7lM6hmhU/1/da"><img src="http://feedads.g.doubleclick.net/~a/FO41HKlxi7NWcvj3h_V7lM6hmhU/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/coolkevmen/~4/_GMvFyzsWEo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://kevin.deldycke.com/2010/05/canon-eos-7d-movie-samples/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://kevin.deldycke.com/static/documents/canon-eos-7d-movie-samples/1080p-23.976fps.mov" length="63289081" type="video/quicktime" />
<enclosure url="http://kevin.deldycke.com/static/documents/canon-eos-7d-movie-samples/1080p-25fps.mov" length="62331653" type="video/quicktime" />
<enclosure url="http://kevin.deldycke.com/static/documents/canon-eos-7d-movie-samples/1080p-29.97fps.mov" length="63658901" type="video/quicktime" />
<enclosure url="http://kevin.deldycke.com/static/documents/canon-eos-7d-movie-samples/720p-50fps.mov" length="62663249" type="video/quicktime" />
<enclosure url="http://kevin.deldycke.com/static/documents/canon-eos-7d-movie-samples/720p-59.94fps.mov" length="60417981" type="video/quicktime" />
<enclosure url="http://kevin.deldycke.com/static/documents/canon-eos-7d-movie-samples/480p-50fps.mov" length="29740356" type="video/quicktime" />
<enclosure url="http://kevin.deldycke.com/static/documents/canon-eos-7d-movie-samples/480p-59.94fps.mov" length="29614600" type="video/quicktime" />
		<feedburner:origLink>http://kevin.deldycke.com/2010/05/canon-eos-7d-movie-samples/</feedburner:origLink></item>
		<item>
		<title>Feeds updated !</title>
		<link>http://feeds.deldycke.com/~r/coolkevmen/~3/VKSGR9xFGdE/</link>
		<comments>http://kevin.deldycke.com/2010/05/feeds-updated/#comments</comments>
		<pubDate>Tue, 18 May 2010 10:45:29 +0000</pubDate>
		<dc:creator>kev</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[Aggregator]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[Atom]]></category>
		<category><![CDATA[feed]]></category>
		<category><![CDATA[FeedBurner]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[RSS]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://kevin.deldycke.com/?p=1459</guid>
		<description><![CDATA[Last night I&#8217;ve changed the way my feeds are handled on this blog. I&#8217;ve taken care of all redirections with a mix of WordPress plugins, Apache&#8217;s 301 redirects and Feedburner&#8217;s &#8220;My Brand&#8221; service. So everything should be transparent from your (and your feed reader) point of you. But since this blog moved from one location [...]]]></description>
			<content:encoded><![CDATA[<p><a  href="http://kevin.deldycke.com/wp-content/uploads/2010/05/Newspaper-Feed.png" class="thickbox no_icon" rel="gallery-1459" title=""><img src="http://kevin.deldycke.com/wp-content/uploads/2010/05/Newspaper-Feed-150x150.png" alt="" title="Newspaper-Feed" width="150" height="150" class="alignright size-thumbnail wp-image-1463" /></a> Last night I&#8217;ve changed the way my feeds are handled on this blog. I&#8217;ve taken care of all redirections with a mix of <a  href="http://www.google.com/support/feedburner/bin/answer.py?answer=78483">WordPress plugins</a>, <a  href="http://kevin.deldycke.com/2007/05/feedburner-and-e107-integration/">Apache&#8217;s 301 redirects</a> and <a  href="http://www.google.com/support/feedburner/bin/answer.py?answer=79590">Feedburner&#8217;s &#8220;My Brand&#8221; service</a>. So everything should be transparent from your (and your feed reader) point of you.</p>
<p>But since this <a  href="http://kevin.deldycke.com/2009/09/moving-wordpress-blog-to-another-domain/">blog moved</a> from one location to another in the last past years, I doubt everyone use the right URLs. This update is a good opportunity to check that you are using the &#8220;official&#8221; feed URLs:</p>
<ul>
<li>For blog posts: <a  href="http://kevin.deldycke.com/feed">http://kevin.deldycke.com/feed</a></li>
<li>For blog comments: <a  href="http://kevin.deldycke.com/comments/feed">http://kevin.deldycke.com/comments/feed</a></li>
</ul>
<p>In the future, I plan to support these URLs only. So please update your feed aggregation settings ! <img src='http://kevin.deldycke.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<div id="crp_related"><h4>Related content:</h4><ul><li><a  href="http://kevin.deldycke.com/2007/05/feedburner-and-e107-integration/" rel="bookmark" class="crp_title">FeedBurner and e107 integration</a></li><li><a  href="http://kevin.deldycke.com/2006/08/e107-to-wordpress-migration-here-is-why/" rel="bookmark" class="crp_title">e107 to WordPress Migration: Here is Why.</a></li><li><a  href="http://kevin.deldycke.com/2008/07/how-to-add-proxy-support-to-feedalizer-ruby-library/" rel="bookmark" class="crp_title">How-to add proxy support to Feedalizer ruby library</a></li></ul></div>
<p><a href="http://feedads.g.doubleclick.net/~a/NCFhsoYtV4Opo_dnl0Yy6tf5-Gg/0/da"><img src="http://feedads.g.doubleclick.net/~a/NCFhsoYtV4Opo_dnl0Yy6tf5-Gg/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/NCFhsoYtV4Opo_dnl0Yy6tf5-Gg/1/da"><img src="http://feedads.g.doubleclick.net/~a/NCFhsoYtV4Opo_dnl0Yy6tf5-Gg/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/coolkevmen/~4/VKSGR9xFGdE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://kevin.deldycke.com/2010/05/feeds-updated/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://kevin.deldycke.com/2010/05/feeds-updated/</feedburner:origLink></item>
		<item>
		<title>Lotus Notes’ Rich Text to MIME conversion error</title>
		<link>http://feeds.deldycke.com/~r/coolkevmen/~3/qKrAulRy3-I/</link>
		<comments>http://kevin.deldycke.com/2010/05/lotus-notes-rich-text-mime-conversion-error/#comments</comments>
		<pubDate>Wed, 12 May 2010 19:32:37 +0000</pubDate>
		<dc:creator>kev</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[E-mail]]></category>
		<category><![CDATA[Gimp]]></category>
		<category><![CDATA[Lotus Notes]]></category>
		<category><![CDATA[MIME]]></category>

		<guid isPermaLink="false">http://kevin.deldycke.com/?p=1327</guid>
		<description><![CDATA[Today I encountered a strange error while using Lotus Notes. I had a &#8220;Cannot convert Notes Rich Text message to MIME message&#8221; error: This was triggered when I tried to move certain mails from one account to another. And to add insult to injury, this nasty and dangerous error will make you loose data. Let&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p>Today I encountered a strange error while using Lotus Notes. I had a &#8220;<em>Cannot convert Notes Rich Text message to MIME message</em>&#8221; error:<br />
<a  href="http://kevin.deldycke.com/wp-content/uploads/2010/04/notes-rich-text-to-mime-conversion-error.png" class="thickbox no_icon" rel="gallery-1327" title=""><img src="http://kevin.deldycke.com/wp-content/uploads/2010/04/notes-rich-text-to-mime-conversion-error-300x122.png" alt="" title="notes-rich-text-to-mime-conversion-error" width="300" height="122" class="aligncenter size-medium wp-image-1328" /></a></p>
<p>This was triggered when I tried to move certain mails from one account to another. And to add insult to injury, this nasty and dangerous error will make you loose data.</p>
<p>Let&#8217;s say you want to cut and paste a batch of 10 mails. Then that error occurs while Notes paste the 3rd message. It means you&#8217;ll loose the last 7 messages of your batch. Why ? The 10 messages will be removed from their original location on cutting, and the last 7 messages will be trapped in the copy buffer. Isn&#8217;t that a reasonable reason to <a  href="http://www.codinghorror.com/blog/2006/02/lotus-notes-survival-of-the-unfittest.html">hate Lotus Notes</a> ?</p>
<p>Anyway. After several tests and experiments, I finally found the common property shared by all those reluctant messages. They all have inline images embedded in the body of the mail, like the one below:<br />
<a  href="http://kevin.deldycke.com/wp-content/uploads/2010/04/inline-images-in-lotus-notes-mail.png" class="thickbox no_icon" rel="gallery-1327" title=""><img src="http://kevin.deldycke.com/wp-content/uploads/2010/04/inline-images-in-lotus-notes-mail-300x191.png" alt="" title="inline-images-in-lotus-notes-mail" width="300" height="191" class="aligncenter size-medium wp-image-1330" /></a></p>
<p>In mail edit mode, you can get properties of these objects and get confirmation that they are inline images:<br />
<a  href="http://kevin.deldycke.com/wp-content/uploads/2010/04/lotus-notes-inline-picture-properties.png" class="thickbox no_icon" rel="gallery-1327" title=""><img src="http://kevin.deldycke.com/wp-content/uploads/2010/04/lotus-notes-inline-picture-properties-300x151.png" alt="" title="lotus-notes-inline-picture-properties" width="300" height="151" class="aligncenter size-medium wp-image-1336" /></a></p>
<p>As you can see above, the edit mode lets you manipulate (cut, copy, paste, &#8230;) these embedded pictures. Let&#8217;s take advantage of this to fix our initial issue.</p>
<p>Here is my procedure to make these mails pass through the conversion error:</p>
<ol>
<li>In Notes&#8217; edit mode, cut all inline pictures, one picture at a time;</li>
<li>For each cutted picture, paste it as a new image in the image editor of your choice (<a  href="http://www.gimp.org">Gimp</a> did the trick for me);</li>
<li>Save each image on your local disk;</li>
<li>Now that all inline images are removed from the original mail, attach (but don&#8217;t paste) to it all the images you saved in the previous step;</li>
<li>Finally, save mail modifications in Notes and you&#8217;ll be able to move the mail without the conversion error.</li>
</ol>
<p>This is really dirty, and isn&#8217;t bearable past a few mails. But that&#8217;s the only solution I found so far. Of course if you have a superior/automated way to address this lame bug, I&#8217;ll be happy to hear that ! <img src='http://kevin.deldycke.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<div id="crp_related"><h4>Related content:</h4><ul><li><a  href="http://kevin.deldycke.com/2010/06/how-to-export-backup-lotus-notes-mails/" rel="bookmark" class="crp_title">How-to export/backup Lotus Notes mails</a></li><li><a  href="http://kevin.deldycke.com/2008/12/got-unsized-object-errors-with-debian-mailman-try-this-patch/" rel="bookmark" class="crp_title">Got &#8220;unsized object&#8221; errors with Debian&#8217;s Mailman ? Try this patch !</a></li><li><a  href="http://kevin.deldycke.com/2010/02/how-to-fork-cvs-project-git/" rel="bookmark" class="crp_title">How-to fork a CVS project with Git</a></li></ul></div>
<p><a href="http://feedads.g.doubleclick.net/~a/wmKTZLcbF1CB0PofF8u3XoycWzA/0/da"><img src="http://feedads.g.doubleclick.net/~a/wmKTZLcbF1CB0PofF8u3XoycWzA/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/wmKTZLcbF1CB0PofF8u3XoycWzA/1/da"><img src="http://feedads.g.doubleclick.net/~a/wmKTZLcbF1CB0PofF8u3XoycWzA/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/coolkevmen/~4/qKrAulRy3-I" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://kevin.deldycke.com/2010/05/lotus-notes-rich-text-mime-conversion-error/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://kevin.deldycke.com/2010/05/lotus-notes-rich-text-mime-conversion-error/</feedburner:origLink></item>
		<item>
		<title>How-to fix bad commit authorship in Git</title>
		<link>http://feeds.deldycke.com/~r/coolkevmen/~3/WwPEXQFb9v4/</link>
		<comments>http://kevin.deldycke.com/2010/05/how-to-fix-bad-commit-authorship-git/#comments</comments>
		<pubDate>Wed, 05 May 2010 19:15:37 +0000</pubDate>
		<dc:creator>kev</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[commit]]></category>
		<category><![CDATA[DVCS]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[history]]></category>

		<guid isPermaLink="false">http://kevin.deldycke.com/?p=1360</guid>
		<description><![CDATA[Several months ago I commited some code in my GitHub repository, but I did it from a temporary system. If I registered my authentication keys correctly to commit stuff, I forgot to create a minimal ~/.gitconfig file with the right stuff in it. The result was not good looking, as my usual name and mail [...]]]></description>
			<content:encoded><![CDATA[<p>Several months ago I <a  href="http://github.com/kdeldycke/kev-code/commit/81a26f03901918ed4a954d964b2659187f1cc988">commited some code</a> in <a  href="http://github.com/kdeldycke/kev-code">my GitHub repository</a>, but I did it from a temporary system. If I registered my authentication keys correctly to commit stuff, I forgot to create a minimal <code>~/.gitconfig</code> file with the right stuff in it.</p>
<p>The result was not good looking, as my usual name and mail address were not attached to the commit:<br />
<a  href="http://kevin.deldycke.com/wp-content/uploads/2010/04/bad-git-commit-history-authorship.png" class="thickbox no_icon" rel="gallery-1360" title=""><img src="http://kevin.deldycke.com/wp-content/uploads/2010/04/bad-git-commit-history-authorship-300x128.png" alt="" title="bad-git-commit-history-authorship" width="300" height="128" class="aligncenter size-medium wp-image-1384" /></a></p>
<p>Let&#8217;s fix this !</p>
<p>First, get a local copy of the remote Git repository:</p>
<pre class="brush: bash;">
git clone git@github.com:kdeldycke/kev-code.git
</pre>
<p>What was missing in my <code>~/.gitconfig</code> file were the following options:</p>
<pre class="brush: plain;">
[user]
name = Kevin Deldycke
email = kevin@deldycke.com
</pre>
<p>These values can be set with Git command line with the following syntax:</p>
<pre class="brush: bash;">
--author 'user.name &lt;user.email&gt;'
</pre>
<p>The commit I want to change is the latest in history, so I&#8217;ll use the <code>--amend</code> directive to make my changes. Putting all things together, our final command becomes:</p>
<pre class="brush: bash;">
git commit --amend --author 'Kevin Deldycke &lt;kevin@deldycke.com&gt;'
</pre>
<p>After this, here is how the local branches looks like in <a  href="http://trac.novowork.com/gitg/">gitg</a>:<br />
<a  href="http://kevin.deldycke.com/wp-content/uploads/2010/04/amended-git-commit-in-gitg.png" class="thickbox no_icon" rel="gallery-1360" title=""><img src="http://kevin.deldycke.com/wp-content/uploads/2010/04/amended-git-commit-in-gitg-300x218.png" alt="" title="amended-git-commit-in-gitg" width="300" height="218" class="aligncenter size-medium wp-image-1374" /></a></p>
<p>Using the <code>git log -n1</code> command, we can compare the old commit:</p>
<pre class="brush: bash;">
commit 81a26f03901918ed4a954d964b2659187f1cc988
Author: kevin &lt;kevin@laptop-kev.(none)&gt;
Date:   Mon Mar 8 22:49:43 2010 +0100

    Update old shop logo with the brand new one
</pre>
<p>with the new one:</p>
<pre class="brush: bash;">
commit adf4620f3d8a89746dd643dcefc3f900f0f69878
Author: Kevin Deldycke &lt;kevin@deldycke.com&gt;
Date:   Mon Mar 8 22:49:43 2010 +0100

    Update old shop logo with the brand new one
</pre>
<p>Notice the fixed authorship. The commit ID was also updated as it&#8217;s just a hash depending on commit metadata.</p>
<p>Now we can push our changes back to the remote repository:</p>
<pre class="brush: bash;">
git push origin
</pre>
<p>But this doesn&#8217;t work and throw the following error:</p>
<pre class="brush: bash;">
To git@github.com:kdeldycke/kev-code.git
 ! [rejected]        master -&gt; master (non-fast forward)
error: failed to push some refs to 'git@github.com:kdeldycke/kev-code.git'
</pre>
<p>This is Git protection mechanism in action. Modifying already-published commits like this is <a  href="http://stackoverflow.com/questions/253055/how-do-i-push-amended-commit-to-the-remote-git-repo">a bad idea</a>. It can break updates of other developers&#8217; repository (if they already have pulled the commit we&#8217;re trying to change).</p>
<p>In our case we will force the remote repository to take our changes:</p>
<pre class="brush: bash;">
git push origin +master:master
</pre>
<p>As I told you before this is bad, but nobody really cares: I&#8217;m the only person working on this repository ! <img src='http://kevin.deldycke.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Finally, you can contemplate the <a  href="http://github.com/kdeldycke/kev-code/commit/adf4620f3d8a89746dd643dcefc3f900f0f69878">result on GitHub</a>, a clean and tidy commit history:<br />
<a  href="http://kevin.deldycke.com/wp-content/uploads/2010/04/fixed-git-commit-history-authorship.png" class="thickbox no_icon" rel="gallery-1360" title=""><img src="http://kevin.deldycke.com/wp-content/uploads/2010/04/fixed-git-commit-history-authorship-300x128.png" alt="" title="fixed-git-commit-history-authorship" width="300" height="128" class="aligncenter size-medium wp-image-1385" /></a></p>
<div id="crp_related"><h4>Related content:</h4><ul><li><a  href="http://kevin.deldycke.com/2010/05/initialize-git-repositories/" rel="bookmark" class="crp_title">How I initialize my Git repositories</a></li><li><a  href="http://kevin.deldycke.com/2010/06/git-commit-history-reconstruction/" rel="bookmark" class="crp_title">Commit history reconstruction with Git</a></li><li><a  href="http://kevin.deldycke.com/2010/02/usefull-commands-git/" rel="bookmark" class="crp_title">Usefull Commands: Git</a></li></ul></div>
<p><a href="http://feedads.g.doubleclick.net/~a/mvrAhWhGAgQkatPhELEABVV3auk/0/da"><img src="http://feedads.g.doubleclick.net/~a/mvrAhWhGAgQkatPhELEABVV3auk/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/mvrAhWhGAgQkatPhELEABVV3auk/1/da"><img src="http://feedads.g.doubleclick.net/~a/mvrAhWhGAgQkatPhELEABVV3auk/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/coolkevmen/~4/WwPEXQFb9v4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://kevin.deldycke.com/2010/05/how-to-fix-bad-commit-authorship-git/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://kevin.deldycke.com/2010/05/how-to-fix-bad-commit-authorship-git/</feedburner:origLink></item>
	</channel>
</rss><!-- Dynamic page generated in 4.616 seconds. --><!-- Cached page generated by WP-Super-Cache on 2010-07-30 09:30:07 -->
