Don't group many changes together into a single commit. Commit each logical change as a separate revision.
Keeping changes small and simple in individual commits makes many later things easier:
- small, atomic changes are easier to
- This makes it easier for others using
pluckfor CherryPicking only the changes they are interested in, because each can be referred to separately.
- If you separate bug fix commits from other development, it will help release management (especially if you commit them according to the DaggyFixes pattern).
- Doing frequent commits along a separate development line will also help when it comes time later to merge that development back with other work (as well as helping you go back to a previous state if some experimental changes didn't work out well). If you haven't done progressive propagates to keep the development branch in sync with the mainline during development, you can use the ZipperMerge pattern to recreate these small merges later.
If you find yourself making several parallel changes, consider using parallel workspaces, one for each change.
Using restrictions on the
commit command (ie.
mtn commit file_a file_b) to commit a small subset of the changes in your workspace. Check with
diff to review what changes the restriction matches.