- I create a local branch to working.
- I setup my External Tools in Eclipse to run my test suite.
- The output of my test suite gets committed to my local branch.
- I squash the local branch messages when I merge in to master.
- I add some insightful commit message for my master commit. Like, I haz changes.
I use hg (Mercurial) for version control. Since switching to hg I have adopted the following process. I also do this for my Git projects at work.
(Ctrl-R, hg revert - shell previous command search)
$ hg revert -a --no-backup
# ...my work being destroyed because I was lazy and not paying attention
It is at this point my day goes from great to awful. I face palm as I watch the uncommitted changes I've been making over the last 3 hours get reverted. As I mentioned, this project was older, in fact, it was started before the migration to hg and I never updated the External Tools runnable for this project in Eclipse to do the new hg add / commits. So every time I thought I was committing when I was running the tests, I was in fact not. Fortunate for me, I did have some buffers open and was able to recover the end result in about 45 minutes of hacking, but I did lose all of my change history which was very very disappointing (not to mention scary).
So if I had any advice after this it would be ensure your older projects are up-to-date with how you do things now and they follow your current development process before you start refactoring. I guess the oneliner could be; When refactoring a project start with the tool set first.