<?xml version="1.0" encoding="iso-8859-1"?>
<?xml-stylesheet type="text/xsl" href="/static/rss.xsl"?>
<!-- name="generator" content="blosxom/2.1.2+dev" -->
<rss version="2.0"
     xmlns:dc="http://purl.org/dc/elements/1.1/"
     xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
     xmlns:cc="http://web.resource.org/cc/"
     xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
     xmlns:admin="http://webns.net/mvcb/"
     xmlns:wfw="http://wellformedweb.org/CommentAPI/" >
  <channel>
    <!-- RSS required -->
    <title>Blogging is futile   </title>
    <!-- <link>http://noone.org/blog</link> -->
    <description>Yet another Blosxom weblog from someone who promised himself to never start blogging - since blogging is futile.</description>

    <!-- RSS optional -->
    <pubDate>Mon, 21 May 2012 13:53:38 +0200</pubDate>
    <lastBuildDate>Mon, 21 May 2012 13:53:38 +0200</lastBuildDate>
    <copyright>&amp;copy; 2005-2008 by Axel Beckert. Content licensed under the Creative Commons NC SA 2.0 DE License. Some rights reserved.</copyright>
    <language>en</language>
    <managingEditor>abe+blog@deuxchevaux.org (Axel Beckert)</managingEditor>
    <webMaster>abe+blog@deuxchevaux.org (Axel Beckert)</webMaster>
    <generator>blosxom/2.1.2+dev</generator>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <ttl>42</ttl>
    <image>
        <url>http://noone.org/static/XTaran1.3t.png</url>
        <title>Hackergotchi: Axel "XTaran" Beckert</title>
        <link>http://noone.org/blog</link>
        <width>102</width>
        <height>104</height>
    </image>

    <!-- Dublin Core -->
<!--
    <dc:publisher>Axel Beckert (abe+blog@deuxchevaux.org)</dc:publisher>
    <dc:rights>&copy; 2005-2008 by Axel Beckert. Content licensed under the Creative Commons NC SA 2.0 DE License. Some rights reserved.</dc:rights>
    <dc:language>de</dc:language>
    <dc:language>en</dc:language>
    <dc:title>Blogging is futile   </dc:title>
    <dc:subject>Rants and brain dumps about Debian, the Web, old Hardware, old Citroëns and the daily life of an ETHZ system administrator</dc:subject>
    <dc:description>Yet another Blosxom weblog from someone who promised himself to never start blogging - since blogging is futile.</dc:description>
-->

    <!-- Others -->
    <admin:generatorAgent rdf:resource="http://blosxom.sourceforge.net/" />
    <admin:errorReportsTo rdf:resource="mailto:abe+blog@deuxchevaux.org" />
    <cc:license rdf:resource="http://creativecommons.org/licenses/by-nc-sa/2.0/de/">http://creativecommons.org/licenses/by-nc-sa/2.0/de/</cc:license>

  <item>
    <title>git $something -p</title>
    <slash:department>git-rules--p</slash:department>
    <slash:section>English &amp;raquo; Computer &amp;raquo; VCS</slash:section>
    <link>http://noone.org/blog/English/Computer/VCS/git-dash-p.html</link>
    <guid isPermaLink="true">http://noone.org/blog/English/Computer/VCS/git-dash-p.html</guid>
    <pubDate>Wed, 10 Aug 2011 16:09:36 +0200</pubDate>
    <author>abe+blog@deuxchevaux.org (Axel Beckert)</author>
    <description>
&lt;!-- noautolink --&gt;

&lt;code&gt;git add -p&lt;/code&gt; is one of my favourite &lt;a class=&quot;ext&quot;
href=&quot;http://git-scm.com/&quot;&gt;git&lt;/a&gt; features. It lets you selectively
add the local changes hunk by hunk to the staging area. This is
especially nice if you want to commit one change in a file, but not a
second one, you also already did.

&lt;/p&gt;&lt;p&gt;

&lt;a href=&quot;http://identi.ca/notice/80592275&quot;&gt;Recently I noticed&lt;/a&gt; that
you can also selectively revert changes already in the staging area
using &lt;code&gt;git reset -p HEAD&lt;/code&gt;. The user interface is exactly
the same as for &lt;code&gt;git add -p&lt;/code&gt;.

&lt;/p&gt;&lt;p&gt;

Today I discovered another selective undo in git by just trying it out
of curiosity if that works, too: Undoing local changes selectively
using &lt;code&gt;git checkout -p&lt;/code&gt;. Maybe less useful than those
mentioned above, but nevertheless most times quicker than firing up
your favourite editor and undoing the changes manually.

&lt;/p&gt;&lt;p&gt;

Another nice git feature which I discovered by accidentially using it
(this time even unwittingly) is &lt;code&gt;git checkout -&lt;/code&gt; which
behaves like &lt;code&gt;cd -&lt;/code&gt;, just for branches instead of
directories, i.e. it switches back to the previously checked out
branch. Very useful for quickly changing between two branches again
and again.</description>
    <comments>http://noone.org/blog/English/Computer/VCS/git-dash-p.futile#comments</comments>
    <slash:comments>2</slash:comments>
    <dc:language>en</dc:language>
    <category domain="http://noone.org/blog/tags/CLI">CLI</category>
<category domain="http://noone.org/blog/tags/git">git</category>
<category domain="http://noone.org/blog/tags/HTH">HTH</category>
<category domain="http://noone.org/blog/tags/identi.ca">identi.ca</category>
<category domain="http://noone.org/blog/tags/UUUCO">UUUCO</category>

  </item>
  <item>
    <title>How to move a git submodule</title>
    <slash:department>git-rules-and-still-can-be-improved</slash:department>
    <slash:section>English &amp;raquo; Computer &amp;raquo; VCS</slash:section>
    <link>http://noone.org/blog/English/Computer/VCS/How%2520to%2520move%2520a%2520git%2520submodule.html</link>
    <guid isPermaLink="true">http://noone.org/blog/English/Computer/VCS/How%2520to%2520move%2520a%2520git%2520submodule.html</guid>
    <pubDate>Fri, 10 Jun 2011 20:31:06 +0200</pubDate>
    <author>abe+blog@deuxchevaux.org (Axel Beckert)</author>
    <description>
If you try to move a git submodule with &lt;code&gt;git mv&lt;/code&gt;, you&amp;#8217;ll
get the following error message:

&lt;/p&gt;&lt;pre&gt;
$ git mv old/submodule new/submodule
fatal: source directory is empty, source=old/submodule, destination=new/submodule
&lt;/pre&gt;&lt;p&gt;

There&amp;#8217;s &lt;a class=&quot;ext&quot;
href=&quot;http://lists-archives.org/git/715709-implement-git-mv-for-submodules.html&quot;
&gt;a patch against git to supoort submodule moving&lt;/a&gt;, but it doesn&amp;#8217;t
seem to be applied yet, at least not in the version which is currently
in Debian Sid.

&lt;/p&gt;&lt;p&gt;

What worked for me to solve this issue was the following (as posted on
&lt;a class=&quot;uni&quot;
href=&quot;http://stackoverflow.com/questions/4604486/how-to-move-an-existing-git-submodule-inside-a-git-superproject/6310246#6310246&quot;
&gt;StackOverflow&lt;/a&gt;):

&lt;/p&gt;&lt;ol&gt;

&lt;li&gt;Edit .gitmodules and change the path of the submodule
appropriately, and put it in the index with &lt;code&gt;git add
.gitmodules&lt;/code&gt;.&lt;/li&gt;

&lt;li&gt;If needed, create the parent directory of the new location of the
submodule: &lt;code&gt;mkdir new&lt;/code&gt;.&lt;/li&gt;

&lt;li&gt;Move all content from the old to the new directory: &lt;code&gt;mv -vi
old/submodule new/submodule&lt;/code&gt;.&lt;/li&gt;

&lt;li&gt;Remove the old directory with &lt;code&gt;git rm --cached
old/submodule&lt;/code&gt;.&lt;/li&gt;

&lt;/ol&gt;&lt;p&gt;

Looked like this for me afterwards:

&lt;/p&gt;&lt;pre&gt;
 # On branch master
 # Changes to be committed:
 #   (use &amp;quot;git reset HEAD &amp;lt;file&amp;gt;...&amp;quot; to unstage)
 #
 #       &lt;span style=&quot;color:green;&quot;&gt;modified:   .gitmodules&lt;/span&gt;
 #       &lt;span style=&quot;color:green;&quot;&gt;renamed:    var/lib/dokuwiki/tpl -&amp;gt; var/lib/dokuwiki/lib/tpl&lt;/span&gt;
 #
&lt;/pre&gt;&lt;p&gt;

Finally commit the changes. HTH.</description>
    <comments>http://noone.org/blog/English/Computer/VCS/How%2520to%2520move%2520a%2520git%2520submodule.futile#comments</comments>
    <slash:comments>2</slash:comments>
    <dc:language>en</dc:language>
    <category domain="http://noone.org/blog/tags/Debian">Debian</category>
<category domain="http://noone.org/blog/tags/git">git</category>
<category domain="http://noone.org/blog/tags/HTH">HTH</category>
<category domain="http://noone.org/blog/tags/move">move</category>
<category domain="http://noone.org/blog/tags/Sid">Sid</category>
<category domain="http://noone.org/blog/tags/submodule">submodule</category>

  </item>
  <item>
    <title>Thoughts on Gitorious and GitHub plus a useful git hook</title>
    <slash:department>real-men-just-upload-their-important-stuff-on-git-and-let-the-rest-of-the-world-clone-it</slash:department>
    <slash:section>English &amp;raquo; Computer &amp;raquo; VCS</slash:section>
    <link>http://noone.org/blog/English/Computer/VCS/Thoughts%2520on%2520Gitorious%2520and%2520GitHub%2520plus%2520a%2520useful%2520git%2520hook.html</link>
    <guid isPermaLink="true">http://noone.org/blog/English/Computer/VCS/Thoughts%2520on%2520Gitorious%2520and%2520GitHub%2520plus%2520a%2520useful%2520git%2520hook.html</guid>
    <pubDate>Fri, 15 Oct 2010 11:36:12 +0200</pubDate>
    <author>abe+blog@deuxchevaux.org (Axel Beckert)</author>
    <description>
When I &lt;a
href=&quot;http://noone.org/blog/English/Computer/Debian/xen-tools%20back%20in%20Debian%20Unstable.futile&quot;
&gt;took over the developement&lt;/a&gt; of xen-tools, I looked around for an
appropriate git hosting. I especially had a look at GitHub and
Gitorious.

&lt;/p&gt;&lt;p&gt;

If you just regard the features, GitHub is definitely more targetted on
single developers and Gitorious more towards projects:

&lt;/p&gt;&lt;p&gt;

At GitHub, every repository has its &lt;acronym title=&quot;Uniform Resource Locator&quot;&gt;URL&lt;/acronym&gt; under the &lt;acronym title=&quot;Uniform Resource Locator&quot;&gt;URL&lt;/acronym&gt; of a user page
which makes it nearly impossible to have user independent, &amp;#8220;official&amp;#8221;
repositories for projects which have more than one official developer.

&lt;/p&gt;&lt;p&gt;

At Gitorious, every hosted repository needs to belong to a project,
even if it&amp;#8217;s only a published configuration. But a project can have
more than one git repository. You only seem to be able to have
personal repositories if you clone some existing Gitorious repository.

&lt;/p&gt;&lt;p&gt;

So from a feature point of view, the &lt;a class=&quot;uni&quot;
href=&quot;http://gitorious.org/xen-tools/&quot; &gt;xen-tools git repositories&lt;/a&gt;
fit way better to Gitorious&amp;#8217; hosting while the git repositories with
&lt;a href=&quot;http://github.com/xtaran/zshrc&quot;&gt;zshrc&lt;/a&gt;, &lt;a
href=&quot;http://github.com/xtaran/conkerorrc&quot;&gt;conkerorrc&lt;/a&gt; and &lt;a
href=&quot;http://github.com/xtaran/ratpoison-desktop&quot;&gt;desktop
configuration files&lt;/a&gt; defintely have a more fitting addresses on
GitHub, in my case &lt;a class=&quot;uni&quot; href=&quot;http://github.com/xtaran/&quot;
&gt;http://github.com/xtaran/$repository&lt;/a&gt;. On Gitorious, they are now
together under a &amp;#8220;project&amp;#8221; called &amp;#8220;Axel&amp;#8217;s configuration files&amp;#8221; at &lt;a
href=&quot;http://gitorious.org/abe&quot; class=&quot;uni&quot;
&gt;http://gitorious.org/abe&lt;/a&gt; which contains git repositories of my on
grml&amp;#8217;s .zshrc based &lt;a href=&quot;http://gitorious.org/abe/zshrc&quot;
&gt;.zshrc&lt;/a&gt;, my &lt;a href=&quot;http://gitorious.org/abe/conkerorrc&quot;
&gt;configuration for Conkeror&lt;/a&gt; and &lt;a
href=&quot;http://gitorious.org/abe/ratpoison-desktop&quot; &gt;all the files
necessary for my ratpoison/xmobar based netbook/laptop desktop&lt;/a&gt;.

&lt;/p&gt;&lt;p&gt;

I though feel a little bad for giving the project the very short
&amp;#8220;slug&amp;#8221; name &amp;#8220;abe&amp;#8221; instead of &amp;#8220;abe-config&amp;#8221; (as I did initially) since
&amp;#8220;abe&amp;#8221; is &lt;acronym title=&quot;in my humble opinion&quot;&gt;IMHO&lt;/acronym&gt; not a proper &amp;#8220;project name&amp;#8221; for my configuration files
and possibly &lt;a href=&quot;http://abe.sourceforge.net/&quot; class=&quot;ext&quot;&gt;other
projects&lt;/a&gt; would have a more reasonable claim for that project name
on Gitorious. But that way it suites more its purpose: Gather some of
my git repositories which don&amp;#8217;t belong to a proper project.

&lt;/p&gt;&lt;p&gt;

But there&amp;#8217;s another important point when comparing Gitorious and
GitHub: &lt;a href=&quot;http://mako.cc/writing/hill-free_tools.html&quot;
class=&quot;ext&quot; &gt;Free Software needs free tools&lt;/a&gt; as &lt;a class=&quot;ext&quot;
href=&quot;http://mako.cc/&quot; &gt;Benjamin Mako Hill&lt;/a&gt; posted recently on
Planet Debian. Despite my (probably well known) distrust against
Google and therefore also Google Code, and despite knowing the history
of SourceForge becoming non-free, I was not that much aware that
GitHub&amp;#8217;s software is &lt;a class=&quot;ext&quot; href=&quot;http://github.com/github&quot;
&gt;only partially open source&lt;/a&gt; and therefore also not free software
while &lt;a href=&quot;http://gitorious.org/gitorious&quot; class=&quot;ext&quot; &gt;Gitorious
is both&lt;/a&gt; as it&amp;#8217;s licensed under the &lt;a class=&quot;ext&quot;
href=&quot;http://www.gnu.org/licenses/agpl.txt&quot; &gt;&lt;acronym title=&quot;GNU&apos;s not Unix&quot;&gt;GNU&lt;/acronym&gt; Affero General Public
License&lt;/a&gt; (like StatusNet/identi.ca for example) which is basically
GPLv3, but its ideas applied to hosted web applications scenario
(where the &lt;acronym title=&quot;GNU General Public License&quot;&gt;GPL&lt;/acronym&gt; itself doesn&amp;#8217;t grasp), too.

&lt;/p&gt;&lt;p&gt;

Initially I just had the xen-tools git repositories on Gitorious and
all my small one-repository &amp;#8220;projects&amp;#8221; as copies of the repositories
on &lt;a href=&quot;http://git.noone.org/&quot;&gt;my own git server&lt;/a&gt; on GitHub to
get some more publicity for them and allow &amp;#8220;social cloning&amp;#8221;. After
reading &lt;a href=&quot;http://mako.cc/writing/hill-free_tools.html&quot;
class=&quot;ext&quot; &gt;Mako&amp;#8217;s article&lt;/a&gt;, I decided to at least have repository
clones on Gitorious of all repositories I mirror at GitHub, too.

&lt;/p&gt;&lt;p&gt;

That way I force nobody to use the non-free tools on GitHub for
&amp;#8220;social cloning&amp;#8221; one of my git repositories. And of course I have
copies of my code somewhere on the net as backup. Or to say it with
Linus Torvalds&amp;#8217; (slightly updated) words: &lt;q&gt;Only wimps use tape
backup: real men just upload their important stuff on git, and let the
rest of the world clone it.&lt;/q&gt; ;-)

&lt;/p&gt;&lt;p&gt;

But isn&amp;#8217;t that tedious to always push your code to three repositories?
No, it isn&amp;#8217;t. I just push my code to &lt;a href=&quot;http://git.noone.org/&quot;
&gt;git.noone.org&lt;/a&gt; where I have configured the according remotes and
the following &lt;code&gt;post-receive&lt;/code&gt; hook:

&lt;/p&gt;&lt;pre class=&quot;code&quot;&gt;#!/bin/sh
                                                                     
read oldrev newrev refname
git push gitorious ${refname:t}
git push github ${refname:t}
&lt;/pre&gt;&lt;p&gt;

The only other thing necessary is to use ssh-agent and &lt;acronym title=&quot;Secure Shell&quot;&gt;SSH&lt;/acronym&gt; agent
forwarding to at least the host you&amp;#8217;re pushing to.</description>
    <comments>http://noone.org/blog/English/Computer/VCS/Thoughts%2520on%2520Gitorious%2520and%2520GitHub%2520plus%2520a%2520useful%2520git%2520hook.futile#comments</comments>
    <slash:comments>2</slash:comments>
    <dc:language>en</dc:language>
    <category domain="http://noone.org/blog/tags/.zshrc">.zshrc</category>
<category domain="http://noone.org/blog/tags/abe">abe</category>
<category domain="http://noone.org/blog/tags/Agent%20Forwarding">Agent Forwarding</category>
<category domain="http://noone.org/blog/tags/AGPL">AGPL</category>
<category domain="http://noone.org/blog/tags/Conkeror">Conkeror</category>
<category domain="http://noone.org/blog/tags/Free%20Software">Free Software</category>
<category domain="http://noone.org/blog/tags/git">git</category>
<category domain="http://noone.org/blog/tags/GitHub">GitHub</category>
<category domain="http://noone.org/blog/tags/Gitorious">Gitorious</category>
<category domain="http://noone.org/blog/tags/gitweb">gitweb</category>
<category domain="http://noone.org/blog/tags/Google">Google</category>
<category domain="http://noone.org/blog/tags/Google%20Code">Google Code</category>
<category domain="http://noone.org/blog/tags/GPL">GPL</category>
<category domain="http://noone.org/blog/tags/grml">grml</category>
<category domain="http://noone.org/blog/tags/Hook">Hook</category>
<category domain="http://noone.org/blog/tags/Hosting">Hosting</category>
<category domain="http://noone.org/blog/tags/identi.ca">identi.ca</category>
<category domain="http://noone.org/blog/tags/Linus%20Torvalds">Linus Torvalds</category>
<category domain="http://noone.org/blog/tags/mako">mako</category>
<category domain="http://noone.org/blog/tags/non%2Dfree">non-free</category>
<category domain="http://noone.org/blog/tags/Open%20Source">Open Source</category>
<category domain="http://noone.org/blog/tags/Planet%20Debian">Planet Debian</category>
<category domain="http://noone.org/blog/tags/Ratpoison">Ratpoison</category>
<category domain="http://noone.org/blog/tags/Real%20Man">Real Man</category>
<category domain="http://noone.org/blog/tags/Social%20Coding">Social Coding</category>
<category domain="http://noone.org/blog/tags/Social%20Networking">Social Networking</category>
<category domain="http://noone.org/blog/tags/SourceForge">SourceForge</category>
<category domain="http://noone.org/blog/tags/SSH">SSH</category>
<category domain="http://noone.org/blog/tags/ssh%2Dagent">ssh-agent</category>
<category domain="http://noone.org/blog/tags/StatusNet">StatusNet</category>
<category domain="http://noone.org/blog/tags/xen%2Dtools">xen-tools</category>
<category domain="http://noone.org/blog/tags/zsh">zsh</category>

  </item>
    <link>http://noone.org/blog/English/Computer/VCS</link>
  </channel>
</rss>

