Personally, I am a big fan of Git's staging feature. I think Git takes the right approach here. I Love having the ability to commit only certain things, and yes, (in cases) only certain changes in a file. This allows for very granular commits if you are trying to keep good history/notes in your commit messages. This also allows you to easily commit changes specific to what you are trying to accomplish with the commit. I prefer small commits with comments specific to the changes rather than "well its working, time to commit everything". I'm not saying you can't do this with other dvcs, but I like Git's default workflow for this.
Hmm, I would have said that short-term branches with `rebase -i` are MQ on steroids. I always found MQ to be an odd beast, introducing a new set of commands that are far from orthogonal. Now that bookmarks are reasonably well-supported, albeit with somewhat surprising semantics and certain limitations (assuming you are used to git branches), I only use MQ as an analogue for `git stash`.
And if you don't like it, the Record extension ( http://mercurial.selenic.com/wiki/RecordExtension ) does most of what Git people would want, although it doesn't yet have the ability to split a modification into modifications of smaller granularity.
Comments
Personally, I am a big fan of Git's staging feature. I think Git takes the right approach here. I Love having the ability to commit only certain things, and yes, (in cases) only certain changes in a file. This allows for very granular commits if you are trying to keep good history/notes in your commit messages. This also allows you to easily commit changes specific to what you are trying to accomplish with the commit. I prefer small commits with comments specific to the changes rather than "well its working, time to commit everything". I'm not saying you can't do this with other dvcs, but I like Git's default workflow for this.
Mecurial's MQ extension is basically git's index on steroids.
With a single MQ patch you basically have git's index. You can continually add things to the patch and then finalize it into a commit when ready.
With multiple patches you have multiple indexes which can be pushed and popped, reordered, folded together, finalized into commits, etc.
To be fair, MQ's user interface needs some work. It's far from perfect.
Hmm, I would have said that short-term branches with `rebase -i` are MQ on steroids. I always found MQ to be an odd beast, introducing a new set of commands that are far from orthogonal. Now that bookmarks are reasonably well-supported, albeit with somewhat surprising semantics and certain limitations (assuming you are used to git branches), I only use MQ as an analogue for `git stash`.
And if you don't like it, the Record extension ( http://mercurial.selenic.com/wiki/RecordExtension ) does most of what Git people would want, although it doesn't yet have the ability to split a modification into modifications of smaller granularity.
try crecord ( http://mercurial.selenic.com/wiki/CrecordExtension ) for granularity