The most primitive (but still very common) method is all
hand-hacking. You snapshot the project periodically by manually
copying everything in it to a backup. You include history comments
in source files. You make verbal or email arrangements with other
developers to keep their hands off certain files while you hack
The hidden costs of this hand-hacking method are high,
especially when (as frequently happens) it breaks down. The
procedures take time and concentration; they're prone to error, and
tend to get slipped under pressure or when the project is in
trouble — that is, exactly when they are most needed.
As with most hand-hacking, this method does not scale well. It
restricts the granularity of change tracking, and tends to lose
metadata details such as the order of changes, who did them, and why.
Reverting just a part of a large change can be tedious and time
consuming, and often developers are forced to back up farther than
they'd like after trying something that doesn't work.