Ondřej Čertík: Experience with git after 4 months
I switched to git from mercurial about 4 months ago. As Matt Mackall (the main author of mercurial) has pointed out, my arguments were partially just excuses for the switch, because everything could be fixed in mercurial as well (eventually). On the other hand, I really wasn't expecting to switch when I invested time and energy to learn mercurial. Also because I thought that git doesn't have such a nice documentation, has a steep learning curve and the community is hostile, because it is developed by the kernel people who are famous for sometimes being not so nice on the mailinglists (as I now found out, none of these are true). I was getting annoyed by small things one by one, after finally I said to myself enough is enough, let's just switch.
So as to the steep learning curve --- it took me a day or two to being able to do what I want, so it seems to me it's really easy to learn once you know some distributed vcs. I found out the documentation is much better than in mercurial --- in git one just types "git help command" and a full man page fires up with lot's of information and examples. In mercurial, one just gets a couple lines (compared to git) of help in the terminal, without examples. Also the first (actually second) thing I noticed is that "git log" (and other commands like "git diff") doesn't scroll out my terminal, but uses "less" automatically -- that's just great. The first thing I noticed is that git is superfast for almost every operation, especially it's noticeable with "git diff". As to the community, I only had a chance to send a few emails to the git list, so I cannot really say, but so far it's very responsive and friendly.
However, those are just little things that can (and I am sure they will) be fixed in mercurial as well. What is a big thing are branches, especially remote branches. One just fetches a remote repository and then works with it like with any other local branch, e.g. one can switch to it, or just "git log some_remote_branch" to see what is in there. One can easily compare them etc. With mercurial, I was using "hg out" and "hg in" commands to see what changes I will pull or push, but those commands require internet connection, so it really sucks and it's slow. In mercurial, I was using different directories for different branches, but that's just extremely inconvenient and also slow (creating a new branch is just a matter of adding one file, not copying the whole repository --- for example with the sympy hg repository, I often had to wait several seconds to clone a repo, while with the git repository it's just instant) and big (in terms of megabytes).
The bible of Mercurial, the hgbook says:
But I think it's the wrong approach. The only argument for doing this that I accept is that sometimes you are not sure which branch you are in in git --- well, I use this trick (actually, just read the documentation of __git_ps1 in /etc/bash_completion.d/git), so my bash line always says which branch I am in using the red color. I never do any mistakes with this.
Anyways, I could continue like this (e.g. check out "git svn", "git rebase -i" and many other things), but you can read why git is better for example here, no need to repeat here. I am very happy now and I can only recommend to learn git.
So let me also say some things that are worse in git --- one thing that could be improved are URLs of the gitweb (hgweb urls are neat, gitweb urls use "?id=..." stuff). Another thing is that the debian package git is not git! You need to install git-core to get git (but this seems to be getting fixed).
There is also an interesting discussion happening right now in the debian-python mailinglist about switching the DPMT repositories to git. I think almost all opinions (for and against) were already stated, but if you have some opinion that wasn't yet said, please do so.
So as to the steep learning curve --- it took me a day or two to being able to do what I want, so it seems to me it's really easy to learn once you know some distributed vcs. I found out the documentation is much better than in mercurial --- in git one just types "git help command" and a full man page fires up with lot's of information and examples. In mercurial, one just gets a couple lines (compared to git) of help in the terminal, without examples. Also the first (actually second) thing I noticed is that "git log" (and other commands like "git diff") doesn't scroll out my terminal, but uses "less" automatically -- that's just great. The first thing I noticed is that git is superfast for almost every operation, especially it's noticeable with "git diff". As to the community, I only had a chance to send a few emails to the git list, so I cannot really say, but so far it's very responsive and friendly.
However, those are just little things that can (and I am sure they will) be fixed in mercurial as well. What is a big thing are branches, especially remote branches. One just fetches a remote repository and then works with it like with any other local branch, e.g. one can switch to it, or just "git log some_remote_branch" to see what is in there. One can easily compare them etc. With mercurial, I was using "hg out" and "hg in" commands to see what changes I will pull or push, but those commands require internet connection, so it really sucks and it's slow. In mercurial, I was using different directories for different branches, but that's just extremely inconvenient and also slow (creating a new branch is just a matter of adding one file, not copying the whole repository --- for example with the sympy hg repository, I often had to wait several seconds to clone a repo, while with the git repository it's just instant) and big (in terms of megabytes).
The bible of Mercurial, the hgbook says:
In most instances, isolating branches in repositories is the right approach.
But I think it's the wrong approach. The only argument for doing this that I accept is that sometimes you are not sure which branch you are in in git --- well, I use this trick (actually, just read the documentation of __git_ps1 in /etc/bash_completion.d/git), so my bash line always says which branch I am in using the red color. I never do any mistakes with this.
Anyways, I could continue like this (e.g. check out "git svn", "git rebase -i" and many other things), but you can read why git is better for example here, no need to repeat here. I am very happy now and I can only recommend to learn git.
So let me also say some things that are worse in git --- one thing that could be improved are URLs of the gitweb (hgweb urls are neat, gitweb urls use "?id=..." stuff). Another thing is that the debian package git is not git! You need to install git-core to get git (but this seems to be getting fixed).
There is also an interesting discussion happening right now in the debian-python mailinglist about switching the DPMT repositories to git. I think almost all opinions (for and against) were already stated, but if you have some opinion that wasn't yet said, please do so.
Fellow
Previously I've posted a couple of running commentries describing how I've examined and gone about fixing a couple of bugs in Debian packages I use, enjoy, or have stumbled upon by accident.
Each of these commentries has resulted in a change or two to the affected software to make the bug vanish.
Fixing the bug is usually the hard part, but obviously it isn't the only thing that you need to do. While it is fun to have a locally fixed piece of software if you don't share it then the very next release will have the same bug again - and you'll spend your life doing nothing more than fixing the same bug again and again.
Generally the way that I report my fixes is by sending email to the Debian bug tracker - because I usually only try to fix bugs that I see reported already. Specificially I tend to only care about:
The Debian Python Modules Team is
or, "Youth choir of the year"
Between my 16th and 25th birthday, I was a happy member of this
particular choir; and today, five years later, there are still many
members of this choir that I know personally including, of course,
their conductor.
It's not the first time Cantilene joined the race for "Choir of the
year". The first two times, I was still a member. However, it
is the first time they won in the category "youth choirs"; the
first time, Cantilene came up second; the second time, we unfortunately
did not make it to the finals. The fact that they did make it this time
around, gives me mixed feelings; of course I'm happy that they won, but
I'm sad that I couldn't be part of it this time. Well, that's part of
getting older, I guess.
In any case, here's a big contratulations to Cantilene!
For those who care, if you do a search on youtube for "Cantilene",
"Koor van het jaar", or "Luc Anthonis" (the conductor), you'll find a
number of films most of them from the Canvas belgian TV
station.
In related news, with Caljent (the choir that I am a member
of, today) we had two concerts last weekend. They were a success, but
unfortunately no thanks to me; I lost my voice somewhere during the
evening of the 20th, and thus was quite unable to sing most of what we
were going to sing. That did not stop me from being on stage and singing
anyway, but I had to playback about half that time...
Here's for hoping that my voice will be better on christmas, since
we're singing in mass then... I'm mostly there, but not quite entirely
yet.
Following a thread on
Dear lazyweb, how do I pin lenny now and have that pin hold after lenny s release?
Contrary to popular belief, eating cookie dough will not make your sore throat better.
I wanted to report a success story with

The title of this post sucks, so that's up to you help me come with an alternative. It's also a bit sarcastic to remember that Debian is around for ages, Internet was smaller and poor, web wasn't a hit on the streets. Debian GNU/Linux is successful being an universal operating system. The question is: What's next? Lenny is the short term answer, but we can do more...
Samba in unstable is 3.2.5 currently, while upstream published 3.2.6 a few days ago.
This is mostly because 3.2.6 has too many changes that make it unsuitable for lenny, which will have 3.2.5. As we want to keep the "update through unstable" path, we can't upload 3.2.6 to unstable.
Simultaneously, we are using experimental for 3.3.* releases. Upstream recently published 3.3.0-rc2 which I uploaded yesterday to experimental.
So, we don't have any easy way to make post-3.2.5 releases available to our users.
I briefly imagined using
I unsubscribed from -devel and -vote the other day, as the pain/gain ratio was just not worth it anymore (and -project is very much pending). Sadly, I still could not escape from what I wanted to escape from, as some people bring up those discussions and "their style" on planet.