At work, we are using SVN, CVS, and GIT because there any many projects that were started at various times. Anyway, a common sequence that occurs is as follows:
- Working on task A, making changes to project
- Has new task B, some bug or functionality needs to be done on project, independent of task A but may affect same set of files
- Check in task B
- Check in task A
Unfortunately, what I do at this time is two maintain 2 working copies of each project. So I can always work on task B from a clean copy. As you can imagine, this is wasteful and also, does not scale well (task C, D, E, etc.)
For each of these versioning systems, are there commands that can help me do the following:
- “Save” task A, reverting working copy to current repository
- Work on task B, check in changes
- “Restore” task A changes back to working copy
svn and cvs don’t have any easy built-in ways to do this without creating and managing patch files yourself.
git uses quilt to achieve this (similar to mercurials mq extensions), and it’s quite useful