I just spent a fair amount of time scratching my head trying to figure out why my truffle migration wasn't doing anything when trying to deploy to the TestRPC client. It just kept saying "using network testrpc" without any subsequent status messages. I tried running compile again, several times over the debugging session, and there were no errors.
I then did a migration with the "--reset" flag and discovered that a new smart contract file I added wasn't being found during migration ("is not defined". Still working on that since the code and contract are there).
To save time in the future, is there any harm in always including the --reset flag when doing a Truffle compile and migrate, at least when using the TestRPC client?
What are the downsides of the using the "--reset" flag in time or gas when performing a migration on the main net, and in time on the test net (assuming there are any)?
Does the "--reset" flag cause compiles to be slower in a manner similar to "cleaning" a C++ project, which triggers the need to recompile all the source files to object files again? With migrations, does it trigger the need to "republish" all the smart contract code to the deployment network instead of just the changed smart contracts (i.e. - just the differential)?