Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Best Practices for version control with multiple projects

I have several projects with a very large over-lapping code-base. We've just recently started using SVN so I'm trying to figure out how I should be using it.

The problem is that as I'm finishing a task on one project, I'm starting a task on another, with some overlap. Often there's a lot of interrupt driven development as well. So, my code is never really in a completely stable state that I feel comfortable checking in.

The result is that we're not really using the VC system, which is a VERY bad thing, we all know... so, suggestions?

like image 209
Brian Postow Avatar asked May 13 '09 19:05

Brian Postow


2 Answers

Check out a personal branch of the code and merge in changes. At least you will have some version control for your own changes, in case you need to roll back. Once you are comfortable with the state that your branch is in, merge that branch back into the trunk.

You can also check out a branch for each task, instead of one for each individual. You can also merge changes to your branch from the trunk if someone changes the trunk, and you want your branch to reflect the changes.

This is a common way to use SVN, although there are other workflows. I have worked on projects where I was afraid to commit(I would break the build possibly) because we did not effectively use branching.

Branching is really powerful in helping your workflow, use it until you're comfortable with the idea of merging.

Edit: 'Checking out a branch' refers to creating branch in your branches folder, and then checking out that branch. The standard svn repository structure consists of the folders trunk, tags, and branches at the root.

like image 146
Kekoa Avatar answered Nov 05 '22 13:11

Kekoa


So, my code is never really in a completely stable state that I feel comfortable checking in.

Why is that ?
If your branch is appropriate for your work (with a good naming convention for instance), everyone will know its HEAD is not always stable.
In this kind of "working" branch, just put some tag along the way to indicate some "stable code points" (which can then be queried by any tester to be deployed).
Any other version on that working branch is just made to record changes, even though the current state is not stable.

Then later you merge all on a branch supposed to represent a stable state.

like image 1
VonC Avatar answered Nov 05 '22 12:11

VonC