add commit cache (feature #622)