Mercurial rebase and merges

Epiphany!

The past days I learned great things today about Mercurial.

  1. I found out Joel Spolsky's hginit.com. It teaches you the key concepts behind hg in a way which doesn't mess with complex internals, but focuses on what's important: the user experience.

  2. I found out that the latest version of the hgtk history window supports running an 'Outgoing' command, which directly marks the nodes which will be pushed.

  3. I noticed that sometimes when I rebase, I get a merged head node instead of a linear history. That is, the rebase doesn't work 100%. Not sure why this was happening, but I found a few hackish workarounds. The funny thing is that I also found a solution: I then rebased the branche's root node on top of the merged node.

I now understand that the problem was much simpler: I just run accidentally hg rebase with --source instead of --branch. The first flag rebases a single node and the latter a whole branch. So, obviously, only the last node was "rebased" to look on top of tip. Instead, when you rebase with --branch, the branche's base node is rebased, and the history is, of course, linearized.

Success.

Success (The Beast playing some hoops at the office.)