I use git to interface with an SVN repository. I have several git branches for the different projects I work on.
Now, whenever I switch from one branch to another using ‘git checkout ‘, all the compiled executables and object files from the previous branch are still there. What I would like to see is that switching from branch A to B results in a tree with all object files and binaries from the last time I worked on branch B.
Is there a way to handle this without creating multiple git repositories?
Update: I understand that executables and binaries should not end up in the repository. I’m a bit disappointed in the fact that all the branching stuff in git is useless to me, as it turns out I’ll have to clone my proxy git repository for every branch I want to start. Something I already did for SVN and hoped to avoid with git. Of course, I don’t have to do it, but it would result in me doing a new make most of the time after switching between branches (not fun).
What you want is a full context, not just the branch… which is generally out of scope for a version control tool. The best way to do that is to use multiple repositories.
Don’t worry about the inefficiency of that though… Make your second repository a clone of the first. Git will automatically use links to avoid having multiple copies on disk.
Here’s a hack to give you want you want
Since you have separate obj directories, you could modify your Makefiles to make the base location dynamic using something like this:
That will but your branch name into OBJBASE, which you can use to build your actual objdir location from. I’ll leave it to you to modify it to fit your environment and make it friendly to non-git users of your Makefiles.