Unifying the commit behavior between git and mercurial