diff options
Diffstat (limited to '_posts/mirror-mercurial-repository-to-git.rst')
-rw-r--r-- | _posts/mirror-mercurial-repository-to-git.rst | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/_posts/mirror-mercurial-repository-to-git.rst b/_posts/mirror-mercurial-repository-to-git.rst new file mode 100644 index 0000000..30fd80a --- /dev/null +++ b/_posts/mirror-mercurial-repository-to-git.rst @@ -0,0 +1,85 @@ +title: Mirror Mercurial repository to git? +categories: + - computer + - lazyweb +date: 2011-02-12T17:01:00 +tags: +--- + +I am a big fan of `Gajim, XMPP client`_ and for years I have followed +its latest development versions with `my packages`_. Unfortunately, +gajim’s development is tracked in a Mercurial repository. Please, +understand correctly, I have nothing against Mercurial (and I am +apparently `not alone`_), the first version of `bugzilla triage +scripts`_ were hosted in the Mercurial repository. However, this +experience taught me two things. First of all, my head is probably +irreparably damaged by git, so I couldn’t get my head around randomly +occurring multiple heads constantly erupting in my repository. I was +constantly battling with it and generating `nonsensical commits`_ just +to get rid of them. I never felt like pushing mercurial to the +background just to work for me, in the same manner git already worked +for me. However, the final nail to the coffin of my efforts to +domesticate Mercurial was when I found out that the Jetpack repository +itself will be most likely hosted predominantly `on github`_. So, I have +mirrored for years gajim repository `on gitorious`_, and I was not that +much surprised when I read today’s `blogpost about mirroring +mozilla-central`_ in a git. However, I was reminded about Hg-Git_ +plugin. Chris reminded me again about the problem that I need to run +``git checkout -f`` from time to time to clean the repository. I was +also tickled by the idea of stable commit IDs. The idea that two git +repositories converted from the same hg one would be compatible was +interesting. However, I haven’t found hg-git that awesome: + +1. Speed ... I like Python, but using dulwich_ seems questionable at + the best. Git users are quite proud about the speed of git, but speed + of both ``hg gexport`` (the conversion itself) and ``hg push`` to git + repository is just depressive. Couldn’t somebody make version of + hg-git using native ``C`` git commands? +2. Branches ... another thing git users tend to love IMHO are branches. + So the fact that hg-git hides all hg heads from me per default and + forces me to get back into fiddling with hg bookmarks and heads and + all that, doesn’t make me smile. hg-fast-export by default just + making all heads into branches makes me much much more happy. +3. This not complaint just reminder about suggested change of defaults + (no I don’t complain, I promised never to fight over defaults ever). + Run, don’t just go to your ~/.hgrc and add there:: + + [git] + intree = True + + The original default just, in my opinion, doesn’t make sense. So, the + only objection I have against hg-fast-export is the necessity to do + git checkout -f from time to time (and my uncertainty, what would + happen if I do hg-fast-export outside of master branch). This script + (called git-hgimport) makes me completely happy and secures + hg-fast-export future as the converter of my gajim git repo:: + + !/bin/sh + + set -e + git checkout master hg pull --update hg-fast-export --quiet git checkout -f + +And of course, if this script is in ``$PATH``, then git suddenly knows +about ``git hgimport`` command. Does anybody out there knows about some +better comparisons between hg-fast-export and hg-git? + +.. _`Gajim, XMPP client`: + http://gajim.org/ +.. _`my packages`: + http://mcepl.fedorapeople.org/rpms/ +.. _`not alone`: + http://www.youtube.com/watch?v=4XpnKHJAok8 +.. _`bugzilla triage scripts`: + https://fedorahosted.org/bugzilla-triage-scripts/ +.. _`nonsensical commits`: + https://fedorahosted.org/bugzilla-triage-scripts/changeset/861297063d99fd1121bbacb8823e0b5ec7e12ca1 +.. _`on github`: + https://github.com/mozilla/addon-sdk +.. _`on gitorious`: + http://github.com/mcepl/gajim +.. _`blogpost about mirroring mozilla-central`: + http://www.bluishcoder.co.nz/2011/02/10/git-conversion-of-mozilla-central.html +.. _Hg-Git: + http://hg-git.github.com/ +.. _dulwich: + http://www.samba.org/~jelmer/dulwich/ |