I like that Mercurial still tries hard to get new concepts into the core. There is something they call "phases" which is a boundary marking what was published and what not. Phases then forbid people to rebase changsets that were already published (unless you obv tell it to force it anyway), which is more more convenient than git's way. In addition they work on something called obsolete markers which will also record how changsets moved on rebase, etc giving it much more flexibility and power than git.