I'm comfortable with git, and recently learned mercurial, and I've concluded: commits are the wrong abstraction. Work-in-progress and finished work are different concepts. Rebases and even branches are for WIP. Signing is for finished work. Timestamps and authors change for WIP.