How do you organize your personal workspace for your code projects in your home folder? And how do you keep the workspace efficient for handling multiple projects at the same time?
The most important aspect of my question is above. You can stop reading unless you want to address specific subparts of the topic. Below are various related questions about organization of workspaces. No need to address all of them. Interested in hearing even partial answers to some of the following related questions.
This question is mostly in the context of UNIX and OS X. Windows based users can offer suggestions but I am mostly interested in the home folder and command line conventions usually found in UNIX not windows (unless you use cygwin).
In particular what kind of folder structure do you find useful when maintaining multiple code projects at the same time? And when you are downloading a variety of open source code projects how do keep all the various source trees organized without cluttering up your workspace too much?
In particular I am wondering what tricks or tips might have for making the projects easy to access via command line and easy to browse through while getting out of the way when you need to focus on a specific project.
Are there useful conventions you find handy to keep various source repositories orderly? In particular with git how do you keep the different branches and related repositories organized? Do you often blow away working copies and routinely refresh completely from source control? What do you keep around and why? And how do you deal with namespaces and paths if a particular project has a lot of path dependencies that you have to map to your own home folder structure?
What about bin folders and common libraries? How do you manage this if you need to create a lot of potential development environments for various projects (perhaps different versions of PHP, Ruby, Perl, web servers, compilers, etc).
For the seasoned sys admins out there what works from experience and what doesn't work?
How do you keep it as simple as possible but not too simple?
And what gives you the most flexibility to work on multiple projects at once?
Do you routinely move projects out of your workspace and reimport from source control. How do prevent the buildup of cruft while reducing the need to recreate project environments too often?
How do you clean up or blow away your entire workspace so you can start with a blank slate, without losing access to valuable source code and organizational efficiencies gained from past projects?