autocommit programmatically repo reproducibility tradeoffs